A fost anunțat Perl 7

La conferința virtuală dedicată dezvoltatorilor limbajului Perl, care se desfășoară astăzi a fost anunțat proiectul Perl 7, care va continua evoluția versiunii Perl 5 fără a aduce modificări radicale. Perl 7 va fi similar versiunii Perl 5.32.0, exceptând unele setări implicite, mai potrivite pentru practicile moderne de dezvoltare. În rest, Perl 7 va rămâne același Perl 5 și va păstra compatibilitatea cu aplicațiile dezvoltate anterior.

Schimbarea semnificativă a numărului versiunii va funcționa ca un separator pentru tranziția către un nou model de dezvoltare a funcționalităților limbajului Perl fără a încălca semnificativ compatibilitatea inversă.
Se estimează că dezvoltarea Perl 7 va ajuta la atragerea de noi dezvoltatori către utilizarea Perl și va facilita procesul de adăugare a unor funcționalități semnificative în limbaj, păstrând în același timp compatibilitatea cu baza de cod a proiectelor existente. Numărul 7 a fost ales deoarece Perl 6 a fost folosit în dezvoltarea limbajului, care acum se dezvoltă poartă un nume separat, Raku. Prima lansare a Perl 7 este așteptată anul viitor. Ramura Perl 5.32 va fi ultima din seria Perl 5 și se preconizează că va fi susținută timp de 5-10 ani.

Cea mai notabilă schimbare în Perl 7 va fi includerea în mod implicit a modului „strict„, care presupune verificarea strictă a declarației variabilelor, utilizarea pointerilor simbolici și asignarea subprogramelor. Utilizarea „use strict” este un bun obicei și este aplicată de majoritatea dezvoltatorilor. Analog, se preconizează că va fi inclusă în mod implicit și gestionarea avertismentelor („use warnings«).

Se așteaptă ca în Perl 7 să fie stabilizate și incluse în mod implicit unele funcționalități experimentale deja existente, cum ar fi semnăturile funcțiilor („use feature ‘signatures'”), care permit la definirea unei funcții să se specifice argumentele de intrare și să se automatizeze verificarea numărului acestora (se va putea scrie „sub foo ($left, $right) {” în loc de „sub foo { my($left, $right) = @_;”). De asemenea, se preconizează că va fi inclusă în mod implicit și suportul operatorului „isa” pentru a verifica dacă un obiect este o instanță a unei clase specificate sau a unei clase derivate din aceasta („if( $obj isa Package::Name )”, precum și operațiile de dereferire post-fixată (postderef) „$sref->$*” în loc de „${ $sref }”, „$aref->@*” în loc de „@{ $aref }” și „$href->%{ … }” în loc de „%$href{ … }”.

Candidatul pentru dezactivarea implicită în Perl 7 este:

  • Notarea indirectă de apelare a obiectelor („fără caracteristică qw(indirect)„) — o metodă învechită de apelare a obiectelor, în care în loc de „->” se folosește un spațiu („metoda $object @param” în loc de „$object->$method(@param)” ). De exemplu, în loc de „my $cgi = new CGI” va trebui întotdeauna să folosiți „my $cgi = CGI->new”.
  • Descriptorii de fișiere goi fără declarația variabilelor („fără cuvânt-cheie::filehandle„) — utilizarea unor construcții de tipul „open FH, $file” va duce la o eroare, trebuie să folosiți „open my $fh, $file”. Modificarea nu afectează descriptorii de fișiere standard STDIN, STDOUT, STDERR, ARGV, ARGVOUT și DATA.
  • Masele și hash-urile fictive multidimensionale în stil Perl 4 („fără multidimensional«).
    De exemplu, specificarea „$hash{1, 2}” va duce la o eroare, trebuie să folosiți un array intermediar, cum ar fi „$hash{join($;, 1, 2)}”.
  • Declararea prototipurilor în stil Perl 4 (trebuie folosit „use :prototype()”).

În planurile mai îndepărtate, se preconizează că se va include suport pentru Unicode, ceea ce va scuti dezvoltatorii de a specifica „use utf8” în cod. Pentru module și scripturi în care vor apărea probleme cu noile setări implicite, există posibilitatea de a reveni la comportamentul Perl 5 prin adăugarea în cod a liniei „use compat::perl5”. Setările individuale vor fi păstrate și vor putea fi modificate separat.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster