Sortie officielle de Perl 6 en version 1.0 de production

Le , par Lolo78, Rédacteur/Modérateur
Bonjour,

Les équipes de développement de Perl 6 et Rakudo ont annoncé le 25 décembre 2015 la disponibilité de la version « Noël » (décembre 2015 - 2015.12) de Rakudo Perl 6 #94. Cette version couvre la version v6.c « Christmas » de la spécification du langage.

Pour rappel, Rakudo Star est une distribution de Perl 6 conçue pour une utilisation par les utilisateurs précoces du langage. Elle comprend :

  • Rakudo Perl 6, un compilateur pour le langage de programmation Perl 6 ciblant la machine virtuelle MoarVM ;
  • la machine virtuelle MoarVM, qui sert d'interface entre le compilateur et le système d'exploitation ou la machine sous-jacente ;
  • de la documentation ;
  • une suite de modules que les utilisateurs peuvent trouver utiles.


Cette version apporte également des changements notables. Il faut surtout noter que le compilateur Rakudo Perl 6 livré avec cette release de Rakudo Star est annoncé officiellement comme une version de production.

Tout en étant ravies de mettre à la disposition du public cette première distribution officielle de Perl 6, les équipes de Rakudo soulignent cependant que cela ne sonne pas la fin du développement de Rakudo, bien au contraire. De nouvelles versions continueront à sortir mensuellement pour améliorer les performances et l'expérience utilisateur.

En fait, ce n'est pas tant cette sortie de Rakudo qui constitue la principale nouvelle de ce Noël 2015, mais la finalisation de cette version (6.c version[^3]) de la spécification du langage, connue sous le nom « roast » (Repository Of All Spec Tests - dépôt de l'ensemble des jeux de tests). Cette version maintenant figée des spécifications contient plus de 120 000 tests, qui ont tous été passés avec succès au moins une fois dans certaines circonstances ou sur une architecture donnée.

Cela ne signifie pas que Rakudo lui-même soit figé, il y a encore beaucoup de travail pour améliorer la vitesse, la portabilité et la stabilité. Mais le fait que la spécification de détail du langage soit maintenant figée et stable signifie que l'on peut maintenant réellement développer des projets en Perl 6 sans risquer de voir cette spécification évoluer lors de nouvelles distributions.

La gestation aura été longue, puisque les premières discussions publiques sur Perl 6 ont eu lieu il y a 15 ans, mais le bébé est vraiment prometteur. Parmi les nouveautés particulièrement dignes d'intérêt, on peut citer :

  • les regex et surtout les grammaires de Perl 6, en particulier la possibilité d'ajouter dynamiquement des nouveaux éléments syntaxiques à la grammaire Perl 6 existante, rendant le langage intrinsèquement malléable et évolutif ;
  • un nouveau système de programmation orientée objet particulièrement flexible, puissant et expressif ;
  • les fonctions multiples et la capacité de créer dynamiquement de nouveaux opérateurs ou de surcharger des opérateurs existants ;
  • un modèle de programmation fonctionnelle très enrichi avec en particulier le support aux listes paresseuses ;
  • un modèle de programmation parallèle et concurrente de haut niveau, fiable, facile à utiliser et extrêmement prometteur.


Le site http://www.developpez.com/ propose des tutoriels et une documentation en français exceptionnellement riche et abondante sur Perl 6. Aucun autre site en français n'offre des documents s'approchant même de loin de la richesse de cette documentation et, pour certains aspects, celle-ci est même plus approfondie que ce que l'on peut trouver en anglais.

Rakudo Star est téléchargeable à cette adresse.

Source : Annonce officielle : c'est Noël

Voir aussi le tweet de Larry Wall.

Et vous ?

Qu'en pensez-vous ?

Voir aussi

Rubrique Perl : Actualités, Forums, FAQ, Tutoriels, etc.


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de djibril djibril - Responsable Perl et Outils https://www.developpez.com
le 26/12/2015 à 22:11
Le père noël a donc été généreux cette année en nous livrant une version de production 1.0 attendu depuis plus de 10 ans.
Vous pouvez maintenant vous faire plaisir à découvrir ce nouveau langage en vous aidant de tous les tutoriels sur Perl 6 disponibles sur developpez.com, tutoriels actuellement uniques dans le milieu francophone voire anglophone car ce jour, il n'existe pas autant de documentations détaillées sur Perl 6.

Bonne lecture : cours Perl 6 - migrer avec douceur de Perl 5 à Perl 6.
Avatar de hotcryx hotcryx - Membre expérimenté https://www.developpez.com
le 27/12/2015 à 13:35
Salut Djibril,

Machine virtuelle!

Perl5 ne tournait pas dans une machine virtuelle, pourquoi ce choix?
Serait-ce principalement pour des raisons de sécurité? (isoler le code)

Le code compilé est du byte code? (décompilable !!)

La compilation se fait à chaque exécution ou manuellement par le programmeur? (comme en C, .NET, Java)

Y a t'il une vraie librairie graphique "préconisée" avec? (et pas du Tk tout moche)

Sera t'il porté sur l'architecture ARM? (oui je pense à Android qui est trop fermé)

Est-il plus rapide que perl5? (maléable et évolutif, ça ne fait aucun doute)

Dernière question (: as-tu déjà commencé un petit projet?

Merci ++
Avatar de hotcryx hotcryx - Membre expérimenté https://www.developpez.com
le 27/12/2015 à 21:05
Apprenez Perl6 en Y minutes
https://learnxinyminutes.com/docs/perl6/

Rem: il y a d'autres langages, pas mal ce site.
Avatar de Lolo78 Lolo78 - Rédacteur/Modérateur https://www.developpez.com
le 28/12/2015 à 8:31
Bah, machine virtuelle ou interpréteur Perl, la différence n'est pas si importante de nos jours. Actuellement, la version1.0 tourne sur MoarVM, mais il existe également juste derrière une version tournant sur sur la JVM. Le principal avantage est la portabilité sur toutes les plateformes ayant la JVM.

ARM, je ne sais pas à coup sûr, mais j'imagine que la JVM tourne sur Android et, du coup, le portage devrait se limiter à créer une distribution tenant la route sous Androïd. Sinon, sur ces architectures plus généralement, je fais déjà tourner Perl 6 sur Raspberry Pi sous Debian, pas de problème particulier (mais je n'ai testé pour l'instant que des programmes très simples).

Pour l'instant, Perl 6 est aujourd'hui globalement moins rapide que Perl 5, mais les choses se sont considérablement améliorées depuis environ un an, et Perl 6 commence à l'emporter sur certains bench pour certaines opérations. L'implémentation des tableaux a été refondue très récemment et ouvre la voie à de nombreuses améliorations de performances. De plus, des tableaux natifs ont été introduits en octobre ou novembre, éliminant une bonne partie du surcoût associé aux tableaux dynamiques et ouvrant la voie au calcul scientifique intensif (type PDL).
Avatar de hotcryx hotcryx - Membre expérimenté https://www.developpez.com
le 28/12/2015 à 9:00
Voici RPerl (question rapidité, pour certaines opérations, modules dédiés):
http://rperl.org/faq.html
Avatar de djibril djibril - Responsable Perl et Outils https://www.developpez.com
le 28/12/2015 à 13:30
Bonjour,

Merci de ne pas mélanger les sujets. Ce post est dédié à l'annonce de Perl 6 et pas à autre chose.
Avatar de cognominal cognominal - Membre à l'essai https://www.developpez.com
le 28/12/2015 à 18:57
Perl 5 avait un runtime donc c'était déjà une machine virtuelle, certes primitive.
Un des intérêts d'une VM est la possibilité d'optimiser dynamiquement le code, le fameux Just In Time introduit au grand public par Java. C'est particulièrement utile pour du code dynamiquement typé et utilisé intensivement par les VM javascript. Aujourd'hui, MoarVM supporte l'optimisation dynamique du bytecode et quelqu'un travaille à la génération dynamique de code x64. Le caractère particulièrement dynamique de Perl 6 dont la couche méta objet nécessitait l'écriture d'un VM propre à Perl 6 et non l'utilisation de VM existants certes très bons mais non adaptés à Perl 6.

Ces fonctionalités permettront à terme d'être plus rapide que Perl 5. Dans des cas très rares, c'est déjà le cas mais il faudra du temps pour que ça soit vrai dans le cas général.
La nouveauté de la release de décembre est le code précompilé, ce qui permet d'utiliser un module sans le recompiler.
Donc on pourra compiler un module avec le gestionnaire de module panda ou directement installer un module via l'installeur du distribution linux.

Lolo78 a oublié un élément qui fait déjà la différence, un support exceptionnel bon d'Unicode dont la forme de normalisation NFG propre à Perl 6, qui fait que tous les caractères composés, et pas simplement les précomposés, sont encodés en 32 bits, ce qui permet des opérations en O(1).

Il n'y a pas de librairie graphique préconisée. Mais je pense que dans les mois qui viennent, avec la facilité de s'interfacer avec des bibliothèque C ou C++, on
pourra utiliser Gnome et Qt.
Je crois que certaines personnes sont intéressés à faire quelque chose avec electron.
http://electron.atom.io/

Perl 6 in X minutes été écrit par un français : vendethiel.
Naoum Hankache, un libanais francophone est l'auteur de PerlIntro et le traduit en Français et Laurent améliore son tutoriel sur developpez.com.
Donc il y a un noyau de compétence dans la communauté francophome.

En résumé, Perl 6 est un langage généraliste très complet et très extensible. Les performances ne sont pas encore au rendez vous mais les infrastructures sont là (on revient à l'intérêt d'un machine virtuelle).
La question des 15 ans de développement de Perl 6 est immatérielle. Est ce que le langage est utile aujourd'hui? A-t'il les capacités d'évoluer? Oui et oui.

Pour finir. Il y a eu beaucoup de changements ce dernier mois, il faudra quelques semaines pour que tous les modules de l'écosystème soient mis à jour.
La bonne nouvelle, c'est qu'on entre délibéremment dans un phase de stabilité où les modules ne casseront pas de release en release.
Le langage évoluera mais il y aura toujours un mode rétrocompatible qui supportera l'interface releasé ce Noël.
Ce souci de rétrocompatilité a toujours été un domaine d'excellence de Perl et c'est même ça qui l'handicapait face à la concurrence.
Au pire du pire, si Perl 6 ne prend pas, il y aura comme pour Perl 5 des tas d'idées que les autres langages piqueront sans trop se soucier de créditer la
communauté Perl.
Certaines sont spécifiques à Perl 6 comme NFG ou les grammaires. D'autres sont héritées d'autres langages comme la meta programmation objet.

Il y a tellement de choses dans Perl 6 que nous rejouons la fable des aveugles et de l'éléphant.
https://fr.wikipedia.org/wiki/Anekantavada
Beaucoup s'extasient sur une fonctionalité particulère de Perl 6 sans saisir l'ensemble.
Mais c'est pas grave, ça aussi c'est une fonctionalité de Perl qu'on appelle le baby Perl, la possibilité de s'exprimer même avec une maîtrise très partielle du langage.
Avatar de hotcryx hotcryx - Membre expérimenté https://www.developpez.com
le 28/12/2015 à 19:43
Merci pour les infos

En tout cas, ça vaut la peine de s'y attarder un peu.

L'orienté objet rien que pour ça, ils se sont déjà bien cassés la tête (instructions class, method, le typage fort), sans pour autant être obligatoire et ça c'est révolutionnaire
Soit un langage est orienté objet, soit il ne l'est pas et ici ils proposent les 2 et n'imposent rien.
Il faudrait s'attarder un peu plus sur les fonctionnalités OO et voir si on sait accéder aux variables privées en dehors de la classe, le type d'héritage (multiples ou simple, les interfaces), les attributs, les accessors et leurs accès... Le fait de pouvoir utiliser des librairies perl5 avec le 6 et des librairies 6 avec le 5, pouvoir créer nos propres instructions... bel effort des DEV! (chapeau)
Je pense que perl6 va se bonifier avec le temps.
Allez GO il faut s'y mettre les gars
Avatar de cognominal cognominal - Membre à l'essai https://www.developpez.com
le 28/12/2015 à 20:17
Oui, toutes les fonctionnalités objects que tu cites sont là, et bien d'autres comme les roles paramétriques (on dirait template en C++ ou Generics en Java)
mais c'est beaucoup plus dynamique. Il y a aussi le polymorphisme représentationnel : il est possible de rajouter des bibliothèques écrites en C
qui implémentent de nouveaux types.

Voir :
https://github.com/perl6/specs/blob/...tric-types.pod

Le côté dynamique est assuré par les roles et la couche méta objet, ce qui permet de changer
dynamiquement le comportement d'objets ou de classes mais il y a des gardes fous et ça a
le coût d'invalider des caches.

Cette possibilité de mixer des roles est déjà utilisée par des modules inclus dans rakudo star pour
implémenter un style actor ou pour débugger des grammaires. Belles démonstrations de l'extensibilité
du langage sans même changer la grammaire.

https://github.com/jnthn/oo-actors
https://github.com/jnthn/grammar-debugger

A propos de l'accès d'attributs privés, une classe peut déclarer une ou plusieurs classes de confiance avec le trait trusts.
C'est l'occasion de montrer une force de Perl 6. Perl 6 est écrit en Perl 6 !

Ci dessous la méthode qui ajoute le trait, et la métaméthode appelée dans le role Trusting qui est mixée dans la métaclasse ClassHOW

https://github.com/rakudo/rakudo/blo...traits.pm#L458
https://github.com/rakudo/rakudo/blo...rusting.nqp#L7
https://github.com/rakudo/rakudo/blo...assHOW.nqp#L17

On apprend beaucoup en lisant les sources de rakudo !
Avatar de Lolo78 Lolo78 - Rédacteur/Modérateur https://www.developpez.com
le 29/12/2015 à 11:33
Bonjour à tous,

Merci beaucoup, Cognominal, pour toutes ces informations et mises au point très utiles. ++

J'espère que tu continueras régulièrement à nous éclairer de tes lumières.

Pour information, hotcryx, je travaille actuellement à la rédaction d'un tutoriel sur la programmation objet en Perl 6, quelque chose de bien plus complet que mon chapitre sur le sujet dans l'annexe 2 du tuto de Perl 5 à Perl 6. Mais il y a déjà dans ce chapitre des réponses à certaines au moins des questions que tu poses. Mais je ne progresse que lentement sur ce nouveau tuto, car j'ai d'autres projets en cours simultanément.
Offres d'emploi IT
Data scientist senior H/F
Safran - Ile de France - Magny-les-Hameaux (Saclay)
Développeur java / jee H/F
Capgemini - Ile de France - Suresnes (92150)
Architecte électronique de puissance expérimenté H/F
Safran - Ile de France - Villaroche - Réau

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil