Perl 7 annoncé

Lors de la conférence virtuelle d'aujourd'hui des développeurs de langage Perl annoncé un projet Perl 7 qui poursuivra en douceur le développement de la branche Perl 5 sans apporter de changements radicaux. Perl 7 sera une version similaire Perl 5.32.0, à l'exception d'autres paramètres par défaut plus cohérents avec les pratiques de développement modernes. Sinon, Perl 7 restera le même que Perl 5 et restera compatible avec les applications développées précédemment.

Un changement important dans le numéro de version agira comme une sorte de séparateur pour la transition vers un nouveau modèle permettant d'augmenter les fonctionnalités du langage Perl sans violation notable de la compatibilité ascendante.
La sortie de Perl 7 devrait contribuer à attirer de nouveaux développeurs vers Perl et à rationaliser le processus d'ajout de nouvelles fonctionnalités significatives au langage tout en maintenant la compatibilité avec la base de code des projets existants. Le numéro 7 a été choisi parce que Perl 6 a été utilisé pour développer le langage actuellement utilisé. développe sous le nom distinct de Raku. La première version de Perl 7 est attendue l'année prochaine. La branche Perl 5.32 sera la dernière de la série Perl 5 et devrait être prise en charge pendant 5 à 10 ans.

Le changement le plus notable dans Perl 7 est l'inclusion de "strict“, ce qui implique une vérification stricte des déclarations de variables, l’utilisation de pointeurs symboliques et d’affectations de sous-programmes. Utiliser "use strict" est une bonne forme et est utilisé par la plupart des développeurs. De même, par défaut, ils prévoient d'activer le traitement des avertissements («utiliser des avertissements").

Perl 7 espère également stabiliser et activer par défaut certaines fonctionnalités expérimentales déjà existantes, telles que signatures de fonctions (« utiliser la fonctionnalité 'signatures' »), qui permettent, lors de la définition d'une fonction, de déterminer les arguments entrants et d'automatiser la vérification de leur numéro (vous pouvez écrire « sub foo ($left, $right) { » au lieu de « sub foo { mon ($gauche, $droite) ) = @_;"). Ils prévoient d'inclure par défaut la prise en charge de l'opérateur « isa » pour vérifier si un objet est une instance d'une classe spécifiée ou une classe dérivée de celle-ci (« if( $obj isa Package::Name) », ainsi que le déréférencement postfix. opérations (postderef) « $ sref->$* » au lieu de « ${ $sref } », « $aref->@* » au lieu de « @{ $aref } » et « $href->%{ ... }" au lieu de "%$href{ ... } "

Les candidats à la désactivation par défaut dans Perl 7 sont :

  • Notation d'appel d'objet indirect ("aucune fonctionnalité qw (indirect)") est une manière traditionnelle d'appeler des objets, en utilisant un espace au lieu de "->" ("method $object @param" au lieu de "$object->$method(@param)"). Par exemple, au lieu de « mon $cgi = new CGI », vous utiliserez toujours « my $cgi = CGI->new ».
  • Descripteurs de fichiers nus sans déclarations de variables ("pas de mots nus ::filehandle") - utiliser des constructions telles que « open FH, $file » entraînera une erreur, vous devez utiliser « open my $fh, $file ». Le changement n'affectera pas les descripteurs de fichiers standards STDIN, STDOUT, STDERR, ARGV, ARGVOUT et DATA.
  • Tableaux et hachages multidimensionnels factices de style Perl 4 ("pas de multidimensionnel").
    Par exemple, spécifier « $hash{1, 2} » entraînera une erreur ; vous devez utiliser un tableau intermédiaire, par exemple « $hash{join($;, 1, 2)} ».

  • Déclarer des prototypes dans le style Perl 4 (vous devez utiliser "use :prototype()").

Dans des projets plus lointains, ils prévoient d'activer la prise en charge d'Unicode par défaut, ce qui évitera aux développeurs de spécifier « utiliser utf8 » dans le code. Pour les modules et scripts qui rencontrent des problèmes avec les nouveaux paramètres par défaut, il est possible de revenir au comportement de Perl 5 en ajoutant la ligne "use compat::perl5" au code. Les paramètres individuels seront également enregistrés et pourront être modifiés individuellement.

Source: opennet.ru

Ajouter un commentaire