Sortie de Pharo 1.1

Posté par  . Modéré par baud123.
14
28
juil.
2010
Technologie
Trois mois après la version 1.0, Pharo 1.1 est annoncé. Comme il est d'usage en Smalltalk, Pharo est à la fois un compilateur, une machine virtuelle et un environnement de développement. Pharo est diffusé sous licence MIT.

Smalltalk reste la référence en matière de programmation dynamique, réflexive et orientée objet, d'outils de débogage et de refactorisation, source d'inspiration des systèmes Java, Objective-C et Ruby entre autres.

La suite de cette dépêche détaille les modifications apportées par Pharo 1.1 par rapport à la version 1.0, ainsi que des informations complémentaires pour toute personne désirant se lancer dans l'aventure ! 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


Nouveautés
Settings framework
Settings est un nouveau framework modulaire de gestion des préférences dans Pharo. Il permet d'éviter d'avoir une classe de préférence 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 . Le framework lui-même se charge de faire appel aux méthodes annotées pour construire l'interface utilisateur de modifications des préférences.

Nouveau World Menu
À 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 utilise maintenant un tampon en lecture, amenant un gain de performance important sur nombre d'opérations. "Object compileAll" prend par exemple deux fois moins de temps (provient de Squeak).

Introduction d'une nouvelle hiérarchie extensible d'analyseurs syntaxiques 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 rejetées.

Nettoyage et simplifications
Nettoyage du paquet Traits : 17 classes et 240 méthodes supprimées. Le code a été empaqueté 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.

Performances améliorées pour la lecture des images PNG (50 à 200 fois selon les cas).

Exceptions
Ajout de l'exception OutOfMemory signalée lorsqu'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.

Pharo by Example
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 Pharo. Il est disponible sous licence "Creative Commons by-sa" en version pdf et une version imprimée peut également être commandée.

À l'attention des étudiants et développeurs qui veulent se lancer dans Smalltalk et Pharo, le livre introduit la syntaxe des messages, le modèle objet de Smalltalk, les environnements de développement et de test (SUnit), les classes de bases, collections, flux, système graphique Morphic. Les développements d'une application graphique Morphic et d'une application web Seaside servent d'exemples.

Une traduction française est en cours de finition. Une seconde édition enrichie est en cours d'écriture (certains chapitres sont déjà disponibles sur le site pour évaluation).

Quelques projets utilisant Pharo

Aller plus loin

  • # Problèmes de sécurité ?

    Posté par  . Évalué à 3.

    Les problèmes de sécurité découverts récemment dans la VM Squeak (voir http://www.mail-archive.com/pharo-project@lists.gforge.inria(...) ) ont-ils été corrigés dans Pharo 1.1 ?
  • # paquets

    Posté par  . Évalué à 1.

    Je viens de faire un paquet pour ma distribution :
    http://aur.archlinux.org/packages.php?ID=39292

    Par contre comme l'image étant dans un dossier système (/usr/share), il n'était pas possible d'y écrire pour sauvegarder l'image, j'ai donc changé le groupe du dossier vers users, mais est-ce qu'il y aurait une meilleure règle pour empaqueter ce type de logiciel ?

    Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it

    • [^] # Re: paquets

      Posté par  . Évalué à 2.

      Cool !

      Une solution peut-être est au lancement du script bin/pharo
      - vérifier si ~/.pharo/ existe avec l'image dedans
      - si non, copier l'image dans ~/.pharo

      et lancer l'image qui est dans ~/.pharo

      Peux-tu envoyer un mail sur la mailing list pharo ? http://lists.gforge.inria.fr/mailman/listinfo/pharo-project
    • [^] # Re: paquets

      Posté par  . Évalué à 2.

      Regarde comment est empaqueté la version Debian de Squeak. Il me semble me souvenir qu'il y a un script squeak.sh qui copie une l'image et le fichier .changes dans le répertoire courant à partir de la version originale.

Suivre le flux des commentaires

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