Perl 7 postupne pokračuje vo vývoji Perl 5 bez narušenia spätnej kompatibility

Správna rada projektu Perl zhrnula plány na ďalší rozvoj vetvy Perl 5 a vytvorenie vetvy Perl 7. Počas diskusií sa správna rada zhodla, že je neprijateľné porušovať kompatibilitu s už napísaným kódom pre Perl 5, okrem prípadu, keď je porušenie kompatibility nevyhnutné na odstránenie zraniteľností. Rada tiež dospela k záveru, že jazyk by sa mal vyvíjať a že by sa mali intenzívnejšie propagovať nové možnosti, pričom sa prístup k novinkám uľahčí a stimuluje ich implementácia.

Na rozdiel od pôvodných zámyslov, ktoré predpokladali zahrnutie zmien porušujúcich spätnú kompatibilitu vo vetve Perl 7 ako predvolených, nový plán predpokladá postupné premenenie vetvy Perl 5 na Perl 7 bez porušovania spätné kompatibility s už existujúcim kódom. Vydanie Perl 7.0 sa konceptuálne nebude líšiť od nasledujúcej vetvy Perl 5.xx.

Vývoj nových vydaní Perl 5 bude pokračovať v doterajšej podobe – nové možnosti pridávané do vetvy, ktoré sú nekompatibilné so starým kódom, budú ako doteraz zahrnuté len na základe explicitného uvedenia v kóde pragmy „use version“ alebo „use feature možnosť“. Napríklad vo verzii Perl 5.010 bolo predstavené nové kľúčové slovo „say“, ale pretože v existujúcom kóde sa mohli používať funkcie s názvom „say“, podpora nového kľúčového slova bola aktivovaná len na základe explicitného uvedenia pragmy „use feature ‘say’”.

Nový syntax pridávaný do jazyka, ktorý v predchádzajúcich vydaniach spôsoboval chybu, bude dostupný okamžite bez nutnosti uvádzať špeciálne pragmy. Napríklad v Perl 5.36 sa objaví zjednodušený syntax na jednorázové spracovanie viacerých hodnôt zo zoznamu („foreach my ($key, $value) (%hash) {“), ktorý bude dostupný okamžite, aj v kóde bez pragmy „use v5.36“.

V aktuálnom znení v Perl 5.36 sa pri použití pragmy „use v5.36“ aktivuje 13 možností porušujúcich kompatibilitu (‘say’, ‘state’, ‘current_sub’, ‘fc’, ‘lexical_subs’, ‘signatures’, ‘isa’, ‘bareword_filehandles’, ‘bitwise’, ‘evalbytes’, ‘postderef_qq’, ‘unicode_eval’ a ‘unicode_strings’), zapnú sa predvolené režimy „use strict“ a „use warnings“ a vypne sa podpora zastaranej nepriamej notácie volania objektov (keď sa namiesto „->“ používa medzera) a viacrozmerových polí a hashov vo štýle Perl 4 („$hash{1, 2}“).

Keď sa nazbiera dostatok zmien, namiesto ďalšieho vydania Perl 5.x bude vytvorená verzia Perl 7.0, ktorá bude akýmsi prehľadom aktuálneho stavu, ale zároveň zostane úplne spätne kompatibilná s Perl 5. Na zahrnutie zmien a nastavení, ktoré narušujú kompatibilitu, bude potrebné explicitne pridať do kódu pragmu 'use v7'. Teda kód s pragmou 'use v7' je možné chápať ako 'moderný Perl', v ktorom sú dostupné jazyka narušujúce zmeny, zatiaľ čo bez nej je to 'konzervatívny Perl', ktorý zostane úplne spätne kompatibilný s predchádzajúcimi vydaniami.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster