Consiliul de conducere al proiectului Perl a rezumat planurile pentru dezvoltarea ulterioară a ramurii Perl 5 și crearea ramurii Perl 7. În timpul discuțiilor, consiliul a fost de acord că nu este permis să se încalce compatibilitatea cu codul deja scris pentru Perl 5, exceptând cazurile în care încălcarea compatibilității este necesară pentru eliminarea vulnerabilităților. Consiliul a concluzionat, de asemenea, că limbajul trebuie să evolueze și să se promoveze mai intens noi funcționalități, simplificând accesul la inovațiile emergente și încurajând implementarea acestora.
Spre deosebire de intențiile inițiale, care permiteau includerea implicită în ramura Perl 7 a modificărilor ce încalcă compatibilitatea inversă, noul plan preconizează transformarea treptată a ramurii Perl 5 în Perl 7 fără a încălca compatibilitatea inversă cu codul existent. Lansarea Perl 7.0 nu va fi conceptual diferită de următoarea ramură Perl 5.xx.
Dezvoltarea noilor versiuni Perl 5 va continua în forma sa anterioară — noile funcționalități adăugate în ramură, incompatibile cu codul vechi, vor fi incluse și de acum înainte doar la specificarea explicită în cod a pragmei „use version” sau „use feature feature_name”. De exemplu, în versiunea Perl 5.010 a fost introdus un nou cuvânt cheie „say”, dar întrucât în codul existent ar fi putut fi folosite funcții cu numele „say”, suportul pentru noul cuvânt cheie a fost activat doar la specificarea explicită a pragmei „use feature 'say'”.
Noul sintax pe care limbajul îl introduce, care în versiunile anterioare provoca erori, devine disponibil imediat fără a necesita specificarea pragmelor speciale. De exemplu, în Perl 5.36 va apărea un sintax simplificat pentru prelucrarea simultană a mai multor valori dintr-o listă („foreach my ($key, $value) (%hash) {„), care va fi disponibil imediat, chiar și în codul fără pragma „use v5.36”.
În forma sa actuală, în Perl 5.36, utilizarea pragmei „use v5.36” activează 13 funcționalități care încalcă compatibilitatea (‘say’, ‘state’, ‘current_sub’, ‘fc’, ‘lexical_subs’, ‘signatures’, ‘isa’, ‘bareword_filehandles’, ‘bitwise’, ‘evalbytes’, ‘postderef_qq’, ‘unicode_eval’ și ‘unicode_strings’), activează implicit modurile „use strict” și „use warnings” și dezactivează suportul pentru notarea indirectă a apelurilor obiectelor (când în loc de „->” se folosește un spațiu) și pentru array-uri și hash-uri multidimensionale în stil Perl 4 („$hash{1, 2}”).
Când se vor acumula suficient de multe modificări, în loc de încă o versiune Perl 5.x, va fi creată versiunea Perl 7.0, care va reprezenta o secțiune din starea actuală, dar va rămâne complet compatibilă cu Perl 5. Pentru a include modificări și setări care încalcă compatibilitatea, va fi necesară adăugarea explicită în cod a pragmei „use v7”. Adică, codul cu pragma „use v7” poate fi interpretat ca „Perl modern”, în care sunt disponibile modificările care încalcă compatibilitatea, iar fără - „Perl conservator”, care va rămâne complet compatibil cu versiunile anterioare.
Sursa: opennet.ro
