Perl 5.44


3

După un an de dezvoltare publicat lansarea unei noi ramuri stabile a limbajului de programare Perl - 5.44. la pregătirea Noua versiune a modificat aproximativ 270 de linii de cod (excluzând documentația și codul generat automat - 110), modificările au afectat 860 de fișiere, iar 71 de dezvoltatori au participat la dezvoltare.

Ramura 5.44 a fost lansată în conformitate cu programul fix de dezvoltare stabilit acum treisprezece ani, care prevede lansarea de noi ramuri stabile o dată pe an și versiuni minore la fiecare trei luni. Prima versiune minoră, Perl 5.44.1, este programată pentru lansare în aproximativ o lună, remediind cele mai semnificative erori descoperite în timpul implementării Perl 5.44.0. Odată cu lansarea Perl 5.44, suportul pentru ramura 5.40 s-a încheiat; actualizări pentru aceasta ar putea fi lansate în viitor numai dacă se descoperă probleme critice de securitate. A început procesul de dezvoltare a ramurii experimentale 5.45, care va sta la baza lansării stabile a Perl 5.46 în prima jumătate a anului 2027, cu excepția cazului în care se ia o decizie du-te la numerotarea 7.x.

Cheie modificări:

  • Adăugat posibilitatea experimentală de utilizare a parametrilor numiți în semnături Funcții care definesc lista de variabile transmise funcției nu în corpul funcției, ci în timpul declarării acesteia. Această nouă caracteristică permite transmiterea parametrilor nu într-o ordine strictă, ci în orice ordine, folosind perechi cheie/valoare și o sintaxă similară cu atribuirea elementelor în hash-uri:
    • sintaxă veche: sub f { my ($x, $y) = @_; …} f(1, 2);
    • semnături: sub f ($x, $y) { … } f(1, 2);
    • semnături cu parametri denumiți: sub f (:$x, :$y) { … } f(y => 2, x => 1);
  • A fost adăugat suport experimental pentru utilizarea aliasurilor (pointeri către pointeri) în buclele foreach cu variabile multiple. Această funcție vă permite să creați un alias într-o buclă foreach atunci când se preiau mai multe valori într-o singură iterație a buclei. De exemplu, puteți crea un alias pentru un element hash cu un array atunci când se iterează atât peste cheile, cât și peste valorile hash-ului: use v5.44; use feature qw(refaliasing declared_refs); my %hash = (one => [1], two => [2, 2],); foreach my ($key, @items) (%hash) { say "Articolele $key conțin: @items"; } # Înainte de versiunea 5.44, era necesară dereferențierea: foreach my ($key, $var) (%hash) { say "Articolele $key conțin: @$var"; } # Fără refliasing experimental și funcții declared_refs: foreach my $key (keys %hash) { say "Tabloul $key conține: @{$hash{$key}}"; }
  • În expresiile regulate implementate Modul experimental „enhanced_xx” permite utilizarea modificatorului /xx cu clase de caractere între paranteze pătrate ([a-zA-Z]) pentru a le împărți pe mai multe linii sau pentru a insera comentarii. De exemplu, condiția if ($text =~ m/[a-zA-Z]/){ ar putea fi scrisă astfel: if ($text =~ m/[ a-z # litere mici A-Z # litere mari ]/xx) {
  • Generatorul de numere pseudo-aleatoare folosește apelul de sistem getentropy() pentru a obține entropia pe sistemele care îl suportă (Linux, BSD, macOSPe alte sisteme, entropia se obține citind de pe dispozitivul /dev/urandom sau utilizând un hash al timpului, ID-ului procesului și valorii pointerului.
  • S-a adăugat suport pentru specificații Unicode 17.0.
  • Respectarea strictă a regulilor Unicode a fost asigurată pentru numele identificatorilor și grupurile de expresii regulate, aproximativ 160 de caractere Unicode acoperite anterior de clasa w fiind acum interzise. De exemplu, clasa w, care acoperă toate literele, cifrele și caracterul de subliniere, exclude acum literele latine încercuite, care seamănă cu litere reale, dar nu sunt. Această modificare de comportament afectează doar programele care utilizează modul use utf8.
  • Vulnerabilități corectate cauzate de depășirea bufferului în funcțiile Perl_study_chunk (CVE-2026-8376, apare în ansambluri pe 32 de biți) și S_measure_struct (CVE-2026-57432), precum și depășirea contorului de 16 biți din motorul Regex (CVE-2026-13221), ceea ce poate cauza eșecul expresiei regulate.
  • Saltul la poziții în cadrul buclelor și construcțiilor de bloc folosind operatorul goto este interzis. Această funcționalitate a fost depreciată în 2010.
  • Au fost făcute optimizări de performanță pentru a accelera adunarea, scăderea și înmulțirea numerelor întregi, procesarea semnăturilor funcțiilor și popularea hash-urilor din listele cheie/valoare cu chei de tip șir de caractere cunoscute la momentul compilării.

Sursa: linux.org.ru

Cumpărați găzduire de încredere pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără găzduire web fiabilă cu protecție DDoS, servere VPS VDS | ProHoster