Perl 7 će neprimetno nastaviti razvoj Perl 5 bez narušavanja kompatibilnosti unatrag

Upravno vijeće projekta Perl iznijelo je planove za dalji razvoj grane Perl 5 i stvaranje grane Perl 7. Tokom diskusija, Upravno vijeće se složilo da nije prihvatljivo prekidanje kompatibilnosti sa kodom koji je već napisan za Perl 5, osim ako se kompatibilnost je neophodna da bi se popravile ranjivosti. Vijeće je također zaključilo da bi jezik trebao evoluirati i intenzivnije promovirati nove karakteristike, uz istovremeno olakšavanje pristupa novim inovacijama i podsticanje usvajanja.

Za razliku od prvobitnih namjera da se dozvoli promjenama koje narušavaju kompatibilnost unatrag da budu uključene po defaultu u granu Perl 7, novi plan je da se grana Perl 5 postepeno prebaci u Perl 7 bez narušavanja kompatibilnosti unatrag sa postojećim kodom. Izdanje Perl 7.0 se konceptualno neće razlikovati od sljedeće grane Perl 5.xx.

Razvoj novih izdanja Perla 5 nastavit će se kao i do sada - nove funkcije dodane u granu koje nisu kompatibilne sa starim kodom će, kao i prije, biti uključene samo ako je izričito specificirana pragma "koristi verziju" ili "koristi funkciju značajke" u kodu. Na primjer, Perl 5.010 uveo je novu ključnu riječ "say", ali budući da je postojeći kod mogao koristiti funkcije pod nazivom "say", podrška za novu ključnu riječ je omogućena samo eksplicitnim specificiranjem pragma "use feature 'say'".

Nova sintaksa dodana jeziku, koja kada je obrađena u prethodnim izdanjima dovela do greške, postaje odmah dostupna bez potrebe za specificiranjem posebnih pragma. Na primjer, Perl 5.36 će uvesti pojednostavljenu sintaksu za obradu više vrijednosti liste odjednom (“foreach my ($key, $value) (%hash) {”) koja će biti odmah dostupna, čak iu kodu bez “use v5.36” pragma.

U svom trenutnom obliku, Perl 5.36 koristi pragmu "koristi v5.36" da omogući 13 funkcija koje razbijaju interoperabilnost ('say', 'state', 'current_sub', 'fc', 'lexical_subs', 'signatures', 'isa ', ' bareword_filehandles', 'bitwise', 'evalbytes', 'postderef_qq', 'unicode_eval' i 'unicode_strings'), omogućite "koristi stroga" i "koristite upozorenja" prema zadanim postavkama i onemogućite podršku za naslijeđenu indirektnu notaciju za pozivanje objekata (kada umjesto “- >” koristi razmak) i višedimenzionalne nizove i hešove u stilu Perl 4 ("$hash{1, 2}").

Kada se akumulira dovoljno promjena, umjesto sljedećeg izdanja Perl 5.x, generirat će se verzija Perl 7.0, koja će postati neka vrsta snimka stanja, ali će ostati u potpunosti kompatibilna s Perl 5. Da biste omogućili promjene i postavke da prekinete kompatibilnost, morat ćete eksplicitno dodati "use v7" pragmu u kod. . One. kod sa "use v7" pragma može se tretirati kao "moderni Perl", u kojem su dostupne promjene jezika koje narušavaju kompatibilnost, a bez - "konzervativni Perl", koji će ostati u potpunosti kompatibilan sa prethodnim izdanjima.

izvor: opennet.ru

Dodajte komentar