Sortie de Pharo 1.1

Posté par (page perso) . 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

Suivre le flux des commentaires

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