Pharo est un langage de programmation purement orienté objet et un environnement puissant, axé sur la simplicité et le retour immédiat.
Une grande communauté internationale de développeurs a travaillé dur pour préparer une nouvelle version de la plate-forme Pharo avec des innovations telles que la mise en œuvre d’un nouveau cadre d’interface utilisateur qui accepte différents backends ( Morphic, plus Gtk3), l’utilisation de celui-ci pour ré-implémenter de manière révolutionnaire certains des outils de l’environnement (terrain de jeu, inspecteur, débogueur, observateur), intégrant le nouveau concept de « débogage centré sur l’objet » et un grand nombre de changements au niveau de la machine virtuelle, à partir d’un véritable événement AIO- VM pilotée pour prendre en charge ARM64, y compris le nouvel Apple M1 !
Points forts
- Refonte complète du framework Spec UI (nouvelle logique, application, style, backend GTK3)
- Outils:
- nouveau terrain de jeu,
- nouvel inspecteur centré sur les objets,
- nouveau débogueur centré sur les objets.
- meilleurs et nouveaux refactorings
- les commentaires de classe sont maintenant écrits au format Microdown (compatible Markdown)
- les classes peuvent désormais être déclarées à l’aide de la nouvelle API « fluide » (Aperçu)
- Nouveau framework de complétion qui s’adapte mieux aux contextes d’édition et est personnalisable
- Fast Universal non bloquant FFI, qui utilise désormais libFFI comme backend.
- Machine virtuelle
- VM inactive
- Prise en charge d’ARM 64 bits
- Prise en charge d’Apple M1
- Construit pour Ubuntu 18.04, 19.04, 20.04, 21.04, 21.10; Debian 9, 10, Tests ; Fedora 32, 32, 34; openSUSE 15.1, 15.2, Tumbleweed ; Manjaro; Cambre
- Lors de l’exécution de l’environnement d’interface utilisateur, il utilise désormais SDL 2.0 comme backend par défaut. Il prend en charge la gestion étendue des événements, y compris la prise en charge du trackpad.
- Accélération générale grâce aux optimisations du compilateur et à la simplification de l’interface utilisateur
- Et bien d’autres tests.
Pharo 9 généralise les commentaires exécutables.
Vous lisez la méthode, et vous obtenez systématiquement des exemples pour vous montrer comment utiliser le message.
Et vous pouvez exécuter le commentaire (ils sont également accessibles en tant que tests via l’interface graphique DrTest) !
Refactorisations nouvelles et améliorées
- Pharo 9 a fait un gros effort sur les refactorings.
- Pharo 9 est livré avec de nouvelles refactorisations (telles que Extract to Setup XXX more?).
- De nombreux refactorings ont été améliorés. La méthode d’extraction peut désormais extraire une méthode de méthodes dans une hiérarchie complète en un seul clic.
- Les refactorings sont désormais accessibles en place, c’est-à-dire les variables d’instance, les variables de classe…
Nouvelles refactorisations
- Extraire la méthode setUp
- Supprimer les expéditeurs de la refactorisation de méthode
- Copier le package en tant que refactoring
- Renommer le package (renommer le manifeste)
- Fusionner l’instance var x dans y
- Déplacer vers la méthode côté classe
- Créer des accesseurs avec une initialisation paresseuse
Refactorisations améliorées
- Méthode de dépréciation (version simple)
- Déprécier la classe
- Refactorisation de la méthode d’extraction (comparer les symboles et les chaînes entre les deux, afficher les occurrences remplacées)
- Remplacer les expéditeurs par un autre
- Renommer vars (traits)
- Convertir la variable temporaire en variable d’instance (vérifier dans les méthodes et méthodes des sous-classes si le même nom de la variable temporaire est utilisé)
- Refactorisation de la méthode push up (améliorer les messages)
- Ajouter l’accès aux refactorisations pushUp et pushDown à partir du code source
- Permuter les paramètres lors de l’ajout d’un argument
- Variable d’instance abstraite (applique désormais les méthodes abstraites lorsqu’il y a une référence à plus d’une variable dans une méthode)
Activité de documentation incroyable
Un grand nombre de nouveaux livres arrive avec Pharo 9. Documentant de nombreux aspects de la programmation dans Pharo :
- Test à Pharo
- Contrôle de version dans Pharo
- Appeler des fonctions étrangères avec Pharo
- Pharo avec style
- Zinc
- Programmation concurrente dans Pharo
- Commandant 2.0
- Pharo par exemple 9 bientôt disponible.
Nouveau constructeur d’interface
Après 7 ans de Spec a été repensé et considérablement amélioré. Spec 2.0 est la base de tous les outils de Pharo.
Il est plus rapide et vient avec :
- Différentes mises en page et abandonnez la conception lente de l’interprète
- Concept d’application introduit (groupes de support de fenêtres)
- Nouveau générateur de dialogue
- Aide au style
- Les mises en page dynamiques sont désormais simples et la norme
- Transmissions
- Prise en charge des dessins de Roassal et du Caire
- Essais
- Plusieurs back-ends : GTK et Morphic
De nouveaux outils
Pharo 9 est livré avec trois outils repensés : l’inspecteur, le terrain de jeu et un nouveau débogueur.
- Pharo arrive avec un tout nouvel inspecteur qui peut être étendu sur la base de Spec 2.0. Après le GTInspector, tout objet peut avoir des volets dédiés. Désormais, définir des volets avancés est aussi simple que de définir un nouveau présentateur de spécifications.
- Le nouveau terrain de jeu prend en charge le partage variable entre plusieurs terrains de jeux.
- Le nouveau débogueur prend en charge
- Fonctionnalités uniques de débogage centré sur l’objet : vous ne pouvez vous arrêter que sur un seul objet spécifique
- Une architecture de plugin pour les scripts
- Un débogueur d’urgence repensé
- Architecture pour brancher différents débogueurs
- Pharo 9 inclut un nouveau framework de complétion de code ouvrant les portes à l’apprentissage statique. De plus, l’analyseur syntaxique Pharo a été amélioré pour prendre en charge une meilleure gestion des erreurs.
- Pharo 9 prend en charge les images extra larges (celles qui peuvent contenir 30 millions de lignes de code). Une recherche spéciale et des complétions sont fournies.
- Un cadre de commandement extensible a été conçu et est maintenant utilisé.