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
- 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://community.ofset.org/index.php/DrGeo ;
- L'application iPhone Call A Bike pour la réservation de vélos http://2denker.de/callabike/.
Aller plus loin
- Annonce de la version 1.0 (8 clics)
- Site officiel (4 clics)
- Copies d'écran (4 clics)
- Tutoriels vidéos (3 clics)
- Livre "Pharo by Example" (6 clics)
- SqueakSource (dépôt de code source) (2 clics)
# Problèmes de sécurité ?
Posté par jcr83 . Évalué à 3.
[^] # Re: Problèmes de sécurité ?
Posté par laurent laffont (site web personnel) . Évalué à 4.
D'autre part, le problème de sécurité que tu mentionnes est lié à des plugins qui utilisent leur propre version de certaines bibliothèques plutôt que celles fournies par l'OS (historiquement pour des raisons de portabilité). Le fil du sujet http://forum.world.st/Squeak-removed-from-Gentoo-Linux-td223(...)
Le ticket est toujours ouvert http://bugs.squeak.org/view.php?id=7539 et c'est effectivement un problème.
# paquets
Posté par B16F4RV4RD1N . Évalué à 1.
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 laurent laffont (site web personnel) . Évalué à 2.
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 Serge Stinckwich (site web personnel) . Évalué à 2.
[^] # Re: paquets
Posté par B16F4RV4RD1N . Évalué à 2.
http://qa.debian.org/debcheck.php?dist=stable&package=sq(...)
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
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.