Perl 7 bude plynule pokračovať vo vývoji Perlu 5 bez narušenia spätnej kompatibility

Rada guvernérov projektu Perl načrtla plány na ďalší rozvoj vetvy Perl 5 a vytvorenie pobočky Perl 7. Počas diskusií sa Rada guvernérov zhodla, že nie je prijateľné prelomiť kompatibilitu s kódom, ktorý už bol napísaný pre Perl 5, pokiaľ sa to neporuší. kompatibilita je potrebná na opravu slabých miest. Rada tiež dospela k záveru, že jazyk by sa mal vyvíjať a nové funkcie by sa mali propagovať intenzívnejšie, pričom by sa mal zjednodušiť prístup k novým inováciám a podporovať ich prijatie.

Na rozdiel od pôvodných zámerov umožniť, aby zmeny, ktoré narušujú spätnú kompatibilitu, boli štandardne zahrnuté do vetvy Perl 7, nový plán je postupne previesť vetvu Perl 5 na Perl 7 bez narušenia spätnej kompatibility s existujúcim kódom. Vydanie Perlu 7.0 sa nebude koncepčne líšiť od ďalšej vetvy Perl 5.xx.

Vývoj nových verzií Perlu 5 bude pokračovať ako doteraz – nové funkcie pridané do vetvy, ktoré nie sú kompatibilné so starým kódom, budú, ako predtým, zahrnuté iba vtedy, ak bude výslovne špecifikovaná pragma „použitie verzie“ alebo „použitie funkcie funkcie“. v kóde. Napríklad Perl 5.010 zaviedol nové kľúčové slovo „say“, ale keďže existujúci kód mohol používať funkcie s názvom „say“, podpora pre nové kľúčové slovo bola povolená iba výslovným špecifikovaním pragmy „use feature 'say'“.

Nová syntax pridaná do jazyka, ktorá pri spracovaní v predchádzajúcich vydaniach viedla k chybe, je okamžite dostupná bez potreby špecifikovania špeciálnych pragmat. Napríklad Perl 5.36 zavedie zjednodušenú syntax na spracovanie viacerých hodnôt zoznamu naraz („foreach my ($key, $value) (%hash) {“), ktorá bude okamžite dostupná, dokonca aj v kóde bez „use verzia 5.36” pragma.

Vo svojej súčasnej podobe používa Perl 5.36 pragmu "use v5.36" na umožnenie 13 funkcií narúšajúcich interoperabilitu ('say', 'state', 'current_sub', 'fc', 'lexical_subs', 'signatures', 'isa ', ' bareword_filehandles', 'bitwise', 'evalbytes', 'postderef_qq', 'unicode_eval' a 'unicode_strings'), štandardne povoliť režimy „použiť prísne“ a „používať upozornenia“ a vypnúť podporu pre starú nepriamu notáciu pre volanie objektov (keď namiesto „- >“ používa medzeru) a viacrozmerné polia a hash v štýle Perl 4 („$hash{1, 2}“).

Keď sa nahromadí dostatok zmien, namiesto ďalšieho vydania Perlu 5.x sa vygeneruje verzia Perlu 7.0, ktorá sa stane akýmsi stavovým snímkom, ale zostane plne spätne kompatibilná s Perlom 5. Povoliť zmeny a nastavenia že prerušíte kompatibilitu, budete musieť do kódu explicitne pridať pragmu „use v7“. Tie. kód s pragmou "use v7" možno považovať za "moderný Perl", v ktorom sú dostupné jazykové zmeny narúšajúce kompatibilitu, a bez - "konzervatívny Perl", ktorý zostane plne spätne kompatibilný s predchádzajúcimi vydaniami.

Zdroj: opennet.ru

Pridať komentár