Le projet Pharo est fier d’annoncer la sortie de Pharo 2.0 — un environnement de programmation et un langage inspirés de Smalltalk. Pharo est un projet libre distribué sous licence MIT.
Pour rappel, Pharo consiste en un langage objet extrêmement bien conçu et un environnement de développement intégré innovant. Pharo est un environnement dynamique dans lequel il est par exemple possible de modifier un programme en cours d'exécution depuis le débuggeur.
Pharo 2.0 introduit de nombreuses nouveautés, détaillées dans la suite de la dépêche, dont un tout nouveau navigateur de code (manipulable au clavier), des bibliothèques complètement réécrites (sérialisation ultra-rapide de n'importe quel objet, système de fichiers, protocoles HTTP et SSL), un nouveau framework pour la création d'outils graphiques, un générateur de langage machine manipulable par les développeurs, une bibliothèque graphique avec binding Cairo…
Sommaire
- Pharo 2.0
- En route vers Pharo 3.0
- Un consortium et une association Pharo
- Intégration continue
- SmalltalkHub, nouvelle plateforme pour collaborer
- Les livres
- Amber, un Smalltalk pour le web
- Dr. Geo, un environnement de géométrie interactive
- Conférences
Pharo 2.0
En bref,
- Nautilus, un nouveau navigateur de code (voir ci-dessous)
- Spec, un nouveau framework d'interfaces graphiques (voir ci-dessous)
- Zinc et Zodiac, une grosse amélioration de l'implémentation de HTTP avec gestion de SSL, OAuth, OpenID…
- FileSystem, une nouvelle bibliothèque de gestion de fichier
- Andreas Profiler, un nouveau profiler
- suppression de vieux code, nettoyage et mise à jour pour utiliser les bibliothèques et frameworks introduits
- un nouveau modèle d'AST (représentation interne du programme lors de la compilation)
- ASMJit et NativeBoost FFI (voir ci-dessous)
- Fuel, un serialiseur ulta-rapide (voir ci-dessous)
- du code pour intégrer avec Google Code et Jenkins
Des nouveaux outils de développement par défaut
Le nouveau navigateur de code par défaut de Pharo s'appelle Nautilus. Nautilus apporte beaucoup d'améliorations comme une vue alternative de groupe (sélection par le développeurs des paquetages qu'il veut voir), une architecture de plugin, une integration avec Monticello (le DVCS) et le contrôle de qualité de code.
L'auto-complétion a aussi bénéficié de nombreux changements : son utilisation est plus intuitive et les résultats proposés sont meilleurs.
Un appui sur shift+enter
à n'importe quel moment va maintenant afficher un champ de recherche qui amènera à n'importe quelle méthode ou classe dont le nom est entré (auto-complétion disponible).
Accéléré par NativeBoost et Fuel
Pharo veut être rapide. NativeBoost et Fuel sont là pour ça.
NativeBoost est un framework permettant de générer et exécuter du code machine depuis du code Smalltalk. NativeBoost fournit aussi le nécessaire pour appeler du code C depuis Smalltalk avec un effort minimum.
Par exemple, le code suivant fournit une méthode appelée nbGetEnv:
pour la classe NBBasicExamples
qui permet de récupérer une variable d'environnement à partir de son nom.
NBBasicExamples>>nbGetEnv: str
"
This is a basic example for making an external call.
This method calls a Standard C library getenv() function
"
<primitive: #primitiveNativeCall
module: #NativeBoostPlugin
error: errorCode >
^ self
nbCall: #( String getenv (String str) )
module: NativeBoost CLibrary
Pour appeler cette nouvelle méthode :
NBBasicExamples nbGetEnv: 'HOME' ---> '/home/cassou'
Le code suivant utilise une API Smalltalk pour générer l'instruction machine MOV EAX, 123456789
(EAX
est le registre qui contient la valeur de retour suivant la convention d'appel x86).
NBBasicExamples>>returnInteger
<primitive: 'primitiveNativeCall'
module: 'NativeBoostPlugin'>
^ self nbCallout
function: #( int ( void) )
emit: [:gen :proxy :asm |
asm mov: 123456789 to: asm EAX]
L'implémentation de cette méthode est directement remplacée par le code machine généré. Elle retourne donc 123456789
.
NativeBoost va devenir la pierre angulaire pour l'implémentation de nombreux bindings vers le monde extérieur. La bibliothèque graphique Athens est une des premières à utiliser NativeBoost: Athens
Fuel, est un sérialiseur d'objets Smalltalk (convertisseur d'objets en mémoire vers un format échangeable) optimisé pour une déserialisation ultra-rapide dans l'espoir qu'un objet est déserialisé beaucoup plus souvent qu'il n'est sérialisé. Fuel permet de sérialisé n'importe quel type d'objet, comme par exemple les clôtures, les contextes d'exécution et les debuggueurs (ceci est particulièrement utile dans un rapport d'erreur, le programmeur peut donc retrouver dans son environnement tous les éléments qui étaient chez le client au moment du problème).
Interfaces utilisateurs – Spec et Keymappings
Pharo 2.0 inclut 2 nouvelles bibliothèques pour les interfaces utilisateurs : Spec et Keymappings
Spec est un framework de programation permettant de construire des interfaces graphiques avec un langage déclaratif. Spec apporte des idées nouvelles sur la réutilisation et la composition de composants graphiques. Quelques outils ont déjà été réécrit pour utiliser Spec, d'autres sont à venir.
Keymappings est une bibliothèque permettant de contrôler plus facilement les interactions avec le clavier. Keymappings est déjà utilisé à de nombreux endroits dans Pharo et va continuer à remplacer les déclarations en dur dans le code. Keymappings facilite la personnalisation des raccourcis.
Changements systèmes
Le système d’envoi d’événements (par exemple, « nouvelle classe créée » et « modification de méthode ») a été réécrit. Un nouveau gestionnaire de paquetage (RPackage) a été mis en place pour remplacer l'im-maintenable actuel. L'ancienne bibliothèque de gestion de fichiers a été supprimée et entièrement remplacée par une bien meilleure bibliothèque (déjà introduite dans Pharo 1.4).
La machine virtuelle qui était auparavant commune avec d'autres langages (dont Squeak et Newspeak) est maintenant spécifique à Pharo : la base de code reste la même, mais quelques patchs, plugins et l'icône diffèrent.
Bien sûr, il y a beaucoup d'autres améliorations et nouveautés comme la gestion du SSL, des outils pour la ligne de commande, des notifications non bloquante pour l'utilisateur… Une liste détaillée est disponible.
En route vers Pharo 3.0
Les développements autour de Pharo 3.0 ont déjà commencé. On s'attend à des changements radicaux, dont, entres autres :
- Opal, un nouveau compilateur, moderne et paramétrable
- Un nouvel outil de gestion de bugs (basé sur FogBugz)
- Un nouveau debuggueur va être intégré (nouveau moteur et nouvelle interface)
- Slots, une redéfinition de la notion de variable d'instance de premier ordre
- de nouvelles bibliothèques de code (XStreams pour la gestion de flux, Ghost pour faire des proxys vers n'importe quel objet, Athens pour faire de la programmation graphique proprement)
Un consortium et une association Pharo
Comment supporter le développement de Pharo ? Comment garantir que l'infrastructure va continuer d'évoluer ? Doit-on uniquement compter sur la volonté et le temps libre des développeurs bénévoles ? C'est pour répondre à ces questions que le Pharo Consortium (pour les sociétés et groupes) et la Pharo Association (pour les individus) ont été créés.
Intégration continue
Inria fournit à la communauté Pharo des outils d'intégration continue assurant que les tests soient automatiquement exécutés en permanence, pour chaque commit (pour le projet Pharo et son écosystème).
SmalltalkHub, nouvelle plateforme pour collaborer
SmalltalkHub vient d'être lancé ! SmalltalkHub est une plate forme d'hébergement de projets Smalltalk. La communauté est ravie car SmalltalkHub va remplacer les très vieillissants SqueakSource et SqueakSource3.
Les livres
Un volume 2 pour le livre Pharo By Example est en préparation. Vous pouvez d'ores et déjà lire et commenter ce que nous avons écrit. Le volume 1 est quant à lui toujours disponible, en version papier ou PDF (gratuite). Nous avons besoin de volontaires pour mettre à jour le volume 1 et relire le volume 2. N'hésitez pas à nous rejoindre.
Le collaborActive book, est un livre collaboratif recensant les trucs et astuces des utilisateurs de Pharo.
Amber, un Smalltalk pour le web
Amber est une implémentation du langage Smalltalk pour le web qui se compile vers du Javascript efficace. Il a été conçu pour accélérer le développement d'applications web côté client. Amber permet aux développeurs d'écrire de grosses applications web en Smalltalk. Amber fournit un environnement de développement intégré avec un navigateur de classes, un espace de travail (pour évaluer n'importe quelle expression n'importe quand), un inspecteur d'objets, un débuggeur… Tout ça restant accessible depuis le navigateur web.
Vous pouvez l'essayer dès maintenant en cliquant sur le bouton 'Class Browser' et sans installer quoi que ce soit.
Dr. Geo, un environnement de géométrie interactive
Dr. Geo est un environnement de programmation et de géométrie euclidienne interactive pour une utilisation de l’école primaire au lycée. C'est un projet qu'Hilaire Fernandes a commencé à implémenter en C++ (il y a 16 ans) puis a réécrit entièrement en Smalltalk avec l'environnement Squeak puis Pharo à partir de 2005.
Conférences
Pharo 2.0 a récemment été présenté au FOSDEM (slides).
La prochaine conférence de l'European Smalltalk User Group (ESUG) aura lieu à Annecy du 9 au 13 Septembre 2013. Si vous êtes étudiant, ESUG se propose de vous payer la conférence, les repas du midi et l'hébergement en échange d'une aide à l'organisation (programme student volunteers).
La prochaine PharoConf sera organisée du 2 au 4 avril à Berne, Suisse.
Aller plus loin
- Les nouvelles de Pharo (154 clics)
- Captures d'écran (443 clics)
- Détails des nouveautés de Pharo 2.0 (41 clics)
- La vision qui sous-tend Pharo (98 clics)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.