Perl 7 poursuivra de manière transparente le développement de Perl 5 sans rompre la compatibilité ascendante

Le conseil d'administration du projet Perl a présenté des plans pour le développement ultérieur de la branche Perl 5 et la création d'une branche Perl 7. Au cours des discussions, le conseil d'administration a convenu qu'il n'était pas acceptable de rompre la compatibilité avec le code déjà écrit pour Perl 5, à moins de rompre la compatibilité avec le code déjà écrit pour Perl XNUMX. la compatibilité est nécessaire pour corriger les vulnérabilités. Le Conseil a également conclu que le langage devrait évoluer et que les nouvelles fonctionnalités devraient être promues de manière plus intensive, tout en facilitant l'accès aux innovations émergentes et en encourageant leur adoption.

Contrairement à l'intention initiale d'autoriser l'inclusion par défaut dans la branche Perl 7 des modifications qui rompent la compatibilité ascendante, le nouveau plan est de faire progressivement la transition de la branche Perl 5 vers Perl 7 sans rompre la compatibilité ascendante avec le code existant. La version Perl 7.0 ne sera conceptuellement pas différente de la prochaine branche Perl 5.xx.

Le développement des nouvelles versions de Perl 5 se poursuivra comme avant - les nouvelles fonctionnalités ajoutées à la branche qui sont incompatibles avec l'ancien code ne seront, comme auparavant, incluses que si le pragma « utiliser la version » ou « utiliser la fonctionnalité » est explicitement spécifié dans le code. Par exemple, Perl 5.010 a introduit un nouveau mot-clé "say", mais comme le code existant pouvait utiliser des fonctions nommées "say", la prise en charge du nouveau mot-clé n'a été activée qu'en spécifiant explicitement le pragma "utiliser la fonctionnalité 'say'".

La nouvelle syntaxe ajoutée au langage, qui, lors de son traitement dans les versions précédentes, entraînait une erreur, devient immédiatement disponible sans qu'il soit nécessaire de spécifier des pragmas spéciaux. Par exemple, Perl 5.36 introduira une syntaxe simplifiée pour traiter plusieurs valeurs de liste à la fois (« foreach my ($key, $value) (%hash) { ») qui sera immédiatement disponible, même dans le code sans l'option « use v5.36” pragma.

Dans sa forme actuelle, Perl 5.36 utilise le pragma « utiliser v5.36 » pour activer 13 fonctionnalités de rupture d'interopérabilité (« say », « state », « current_sub », « fc », « lexical_subs », « signatures », « isa »). ', ' bareword_filehandles', 'bitwise', 'evalbytes', 'postderef_qq', 'unicode_eval' et 'unicode_strings'), activez les modes « use strict » et « use warns » par défaut et désactivez la prise en charge de l'ancienne notation indirecte pour appeler des objets (lorsqu'au lieu de « - > » utilise un espace) et des tableaux et hachages multidimensionnels de style Perl 4 (« $hash{1, 2} »).

Lorsque suffisamment de modifications seront accumulées, au lieu de la prochaine version de Perl 5.x, une version de Perl 7.0 sera générée, qui deviendra une sorte d'instantané d'état, mais restera entièrement rétrocompatible avec Perl 5. Pour activer les modifications et les paramètres qui rompent la compatibilité, vous devrez ajouter explicitement le pragma « utiliser v7 » au code. . Ceux. le code avec le pragma "use v7" peut être traité comme du "Perl moderne", dans lequel des modifications de langage rompant la compatibilité sont disponibles, et sans - "Perl conservateur", qui restera entièrement rétrocompatible avec les versions précédentes.

Source: opennet.ru

Ajouter un commentaire