Journal Sortie de Pharo 1.1

Posté par (page perso) .
Tags : aucun
6
27
juil.
2010
Journal en vue d'une dépêche, commentaires appréciés.

Quatre mois après la version 1.0, voici Pharo 1.1. Comme c'est l'habitude dans la communauté Smalltalk, Pharo est à la fois un compilateur, une machine virtuelle et un environnement de développement. Pharo est sous licence MIT.

Le livre Pharo by Example, sorti en fin d'année dernière, décrit le langage Smalltalk et les outils de l'environnement de développement. Il est disponible sous licence Creative Commons by-sa en version pdf et une version imprimée peut-être commandée.

La suite de cette dépêche détaille les avancées de Pharo 1.1 par rapport à Pharo 1.0

Annonce de la version 1.0 : http://linuxfr.org/2010/04/16/26738.html
Site web du projet : http://pharo-project.org/
Copies d'écran : http://pharo-project.org/about/screenshots
Vidéos : http://pharocasts.blogspot.com/
Livre Pharo by Example : http://pharobyexample.org/

* Settings framework

Settings est un nouveau framework modulaire de gestion des préférences. Il permet de s'abstenire d'avoir une classe Preference globale à laquelle toutes les classes qui veulent déclarer des préférences doivent faire référence. Avec Settings, les méthodes qui déclarent des préférences sont annotées avec le pragma <systemsettings>. Le framework lui-même se chargera de faire appel aux méthodes annotées pour construire l'interface utilisateur.

* Nouveau World Menu

A l'instar des préférences, les entrées de menus sont déclarées en utilisant des pragmas. Chaque package peut ainsi ếtendre facilement le menu.

* Classes noyau

La hiérarchie des collections a été remaniée. Set et Dictionary sont maintenant des sous-classes de HashedCollection, avec un meilleur identityHash distribué.

StandardFilestream utilse maintenant un tampon en lecture, amenant un gain de performance important sur nombre d'opérations. "Object compileAll" prends par exemple deux fois moins de temps (provient de Squeak).

Introduction d'une nouvelle hiérarchie extensible de parseurs de nombres depuis des chaînes de caractères et flux.

* Variables Smalltalk globales et requêtes système

Remaniement de SystemDictionary et SmalltalkImage. Smalltalk est maintenant une instance de SmalltalkImage, une façade pour les requêtes et actions globales du système.

* Corrections et améliorations du compilateur

Les sélecteurs peuvent maintenant contenir un caractère -.

Certaines expressions mal formulées sont maintenant rejectées.

* Nettoyage et simplifications

Nettoyage du package Traits: 17 classes et 240 méthodes supprimées. Le code a été repackagé et mis à disposition sur SqueakSource.

Un nouveau protocole de nettoyage a fait son apparition (cleanUp). Un paramètre indique si on désire un nettoyage aggressif qui implique des actions destructives ou seulement un nettoyage des caches et de la mémoire.

* Amélioration de la modularité, image de production de taille moindre

Plusieurs changements dans l'objectif d'obtenir une image minimale amorçable. Les packages stockant les icônes et les polices ont été remaniés. L'image résultante après évaluation de "ScriptLoader new cleanUpForProduction" fait 6.2 Mo.

* Optimisation des performances

Amélioration des hash, conversions d'encodages, collections, rendus des polices et éléments graphiques.

La lecture des images PNG a vu ses performances multipliées de 50 à 200 fois selon les cas.

* Exceptions

Ajout de l'exception OutOfMemory signalée lorsque une allocation mémoire échoue.

Amélioration de la méthode des closures #ensure: (provient de Squeak).

* SUnit

TestCase#assert: ne prends maintenant que des booléens.

* CompilerMethodFormat

L'implémentation des méta-informations des méthodes compilées a été clarifiée.

* Support natif des menus sous Mac OSX

Le world menu est disponible dans la barre des menus natifs.

* Pourquoi utiliser Pharo ?

Pharo est une implémentation moderne, libre et complète du langage Smalltalk et de son environnement. Il vise à offrir une plateforme stable, robuste, épurée et open source pour le développement de logiciels professionnels, la recherche dans le domaine des langages objets et environnement dynamique.

Pharo est extrêmement portable (même sa machine virtuelle est entièrement écrite en Smalltalk) ce qui facilite son débogage, son analyse et les modifications à venir. Pharo est le véhicule de tout un ensemble de projets innovants, des applications multimédias et éducatives aux environnements de développement pour le web.

Une communauté active contribue au développement de packages pour Pharo via la plateforme Squeaksource (http://squeaksource.com/).

Quelques projets utilisant Pharo:

Les framework web Seaside (http://seaside.st), Illiad (http://www.iliadproject.org/)

Les CMS Cmsbox (http://www.cmsbox.com/en/cms), Pier (http://www.piercms.com/), Odyssey (http://www.objectfusion.fr/pages/Odyssey-CMS)

La suite d'analyse logicielle Moose (http://www.moosetechnology.org/)

Le logiciel de géométrie interactive DrGeo? (http://www2.ofset.org/drgeo)

L'application iPhone Call A Bike pour la réservation de vélos (http://2denker.de/callabike/)
  • # Faro

    Posté par (page perso) . Évalué à 2.

    A la tienne !

    Moi aussi, je me suis sorti une petite faro de derrière les fagots... Mais là on est loin de la version 1.1...

    git commit suicide

  • # mieux structurer

    Posté par (page perso) . Évalué à 4.

    Pas mal ta dépêche, je me permets une deux trois - ah mais zut! crabardaf! à la fin! - plein de suggestions:
    la première partie est un peu courte, hors c'est elle qui donne envie de lire toute la dépêche (et qui est visible dans les flux RSS) ; tu pourrais y résumer les principales nouveautés (en 3 lignes) et ajouter un mot sur la diversité des projet utilisant Pharo, voire ajouter tout le paragraphe "Pourquoi utiliser Pharo" qui est le plus alléchant.

    Il y a un an et un jour sortait une dépêche sur VisualGST, un autre environnement http://linuxfr.org/2009/07/26/25762.html - dans les commentaires on y mentionnait Pharo entre autres, tu pourrais compléter ta dépêche avec des projets semblables.

    Ah puis tant que j'y suis, ça manque un peu dans la dépêche:
    A qui est-ce destiné: programmeur expérimentés, débutants, etc.?
    Qui est derrière Pharo?
    C'est une variante de Smalltalk?
    Comment ça se compare à Smalltalk, VisualGST, etc.?

    "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

    • [^] # Re: mieux structurer

      Posté par (page perso) . Évalué à 1.

      merci énormément pour tes remarques, je fais suivre.
      • [^] # Re: mieux structurer

        Posté par (page perso) . Évalué à 2.

        une autre petite:
        peut-être que tu devrais donner qq détails sur "Pharo by example":
        par exemple que c'est un _livre_ (pas juste un site web), libre, et indiquer un peu ce qu'il contient.

        "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

        • [^] # Re: mieux structurer

          Posté par (page perso) . Évalué à 3.

          OK merci. Pour info la dépêche est en cours de rédaction sur le wiki du projet: http://code.google.com/p/pharo/wiki/Pharo11FrenchAnnoucement
          • [^] # Re: mieux structurer

            Posté par (page perso) . Évalué à 2.

            C'est beaucoup mieux!
            Je note:
            Comme il est d'usage en Smalltalk, plutôt en fin de phrase, non? après ta courte description de Pharo.

            Tu as mis le même niveau de titres pour chacune des nouvautés, "Pharo by example" et "Quelques projets...". Ce serait plus lisible avec un titre de niveau inférieur pour les nouvautés.

            Quelques fautes:
            Les sélecteurs peuvent maintenant contenir un caractère -.
            un caractère "-".
            Certaines expressions mal formulées sont maintenant rejectées.
            rejetées
            Nettoyage du package Traits ... repackagé
            paquet, empaqueter
            D'ailleurs en général s/package/paquet/
            La lecture des images PNG a vu ses performances multipliées de 50 à 200 fois selon les cas.
            C'est un peu lourd et ambigu! :-) je te suggère:
            Performances améliorées pour la lecture des images PNG (50 à 200 fois selon les cas)
            lorsque une
            lorsqu'une

            "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

  • # OpenBSD

    Posté par . Évalué à 1.

    C'est très portable, effectivement, mais la vm squeak ne compile pas sous OpenBSD.
    Plus exactement en desactivant et en modifiant certaines choses, on arrive à compiler, mais pas a lancer une image. Il y a manifestement un problème avec le code lié à l'affichage. Quelqu'un par hasard aurait essayé et réussi?

    Pour ajouter un coté trollesque, le jdk compile et fonctionne parfaitement :P
    • [^] # Re: OpenBSD

      Posté par (page perso) . Évalué à 2.

      Peux-tu envoyer un mail décrivant les soucis que tu rencontres sur la mailing-list dédiée ? http://lists.squeakfoundation.org/mailman/listinfo/vm-dev

      Etant donné que la VM est dispo sous FreeBSD et NetBSD, je suppose que le problème peut être vite résolu.

      A noter qu'une nouvelle VM (Cog) bien plus performante (JIT) est en cours de développement.

      Le JD quoi ?
      • [^] # Re: OpenBSD

        Posté par . Évalué à 1.

        Oui, je ferai ça quand j'aurai un moment à la maison.

        Dans les ports OpenBSD, il y a aussi une vm plus ancienne qui fonctionne pour squeak, mais qui n'est pas assez récente pour Pharo (l'image ne load pas).

        Tout ça laisse effectivement penser qu'une correction doit être possible.

        Je ne connais pas Cog, c'est utilisable, ou pas encore?

        Le JDK, c'est utile dans mon cas pour travailler ;) désolé!

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.