Després d'un any de desenvolupament publicat llançament d'una nova branca estable del llenguatge de programació Perl - 5.44. At preparació La nova versió va canviar aproximadament 270 línies de codi (excloent la documentació i el codi generat automàticament: 110), els canvis van afectar 860 fitxers i 71 desenvolupadors van participar en el desenvolupament.
La branca 5.44 s'ha publicat d'acord amb el calendari de desenvolupament fix establert fa tretze anys, que preveu el llançament de noves branques estables un cop l'any i versions menors cada tres mesos. La primera versió menor, Perl 5.44.1, està prevista que es publiqui d'aquí a aproximadament un mes, i corregirà els errors més significatius descoberts durant la implementació de Perl 5.44.0. Amb el llançament de Perl 5.44, el suport per a la branca 5.40 ha finalitzat; és possible que les actualitzacions només es publiquin en el futur si es descobreixen problemes de seguretat crítics. Ha començat el procés de desenvolupament de la branca experimental 5.45, que serà la base per al llançament estable de Perl 5.46 durant la primera meitat del 2027, tret que es prengui una decisió anar-hi a la numeració 7.x.
Clau canvis:
- Afegit possibilitat experimental d'utilitzar paràmetres amb nom en signatures Funcions que defineixen la llista de variables que es passen a la funció no al cos de la funció, sinó durant la seva declaració. Aquesta nova característica permet que els paràmetres no es passin en un ordre estricte, sinó en qualsevol ordre, utilitzant parells clau/valor i una sintaxi similar a l'assignació d'elements en hashes:
- sintaxi antiga: sub f { my ($x, $y) = @_; …} f(1, 2);
- signatures: sub f ($x, $y) { … } f(1, 2);
- signatures amb paràmetres anomenats: sub f (:$x, :$y) { … } f(y => 2, x => 1);
- S'ha afegit suport experimental per a l'ús d'àlies (punters a punters) en bucles foreach amb múltiples variables. Aquesta funció permet crear un àlies en un bucle foreach quan es recuperen múltiples valors en una sola iteració de bucle. Per exemple, podeu crear un àlies per a un element hash amb una matriu quan s'iteren sobre les claus i els valors del hash: use v5.44; use feature qw(refaliasing declared_refs); my %hash = (one => [1], two => [2, 2],); foreach my ($key, @items) (%hash) { say "La matriu $key conté: @items"; } # Abans de la versió 5.44, calia desreferenciar: foreach my ($key, $var) (%hash) { say "La matriu $key conté: @$var"; } # Sense la refaliàsing experimental ni les característiques declared_refs: foreach my $key (keys %hash) { say "La matriu $key conté: @{$hash{$key}}"; }
- En expressions regulars implementat El mode experimental 'enhanced_xx' permet utilitzar el modificador /xx amb classes de caràcters entre claudàtors ([a-zA-Z]) per dividir-les en diverses línies o per inserir comentaris. Per exemple, la condició if ($text =~ m/[a-zA-Z]/){ es podria escriure com: if ($text =~ m/[ a-z # lletres minúscules A-Z # lletres majúscules ]/xx) {
- El generador de nombres pseudoaleatoris utilitza la crida al sistema getentropy() per obtenir entropia en sistemes que l'admeten (Linux, BSD, macOS). En altres sistemes, l'entropia s'obté llegint del dispositiu /dev/urandom o utilitzant un hash del temps, l'ID del procés i el valor del punter.
- S'ha afegit suport d'especificacions Unicode 17.0.
- S'ha garantit el compliment estricte de les normes Unicode per als noms d'identificadors i els grups d'expressions regulars, amb aproximadament 160 caràcters Unicode que abans estaven coberts per la classe w ara prohibits. Per exemple, la classe w, que cobreix totes les lletres, dígits i el caràcter de subratllat, ara exclou les lletres llatines encerclades, que s'assemblen a les lletres reals però no ho són. Aquest canvi de comportament només afecta els programes que utilitzen el mode use utf8.
- Vulnerabilitats corregides causades per desbordaments de memòria intermèdia a les funcions Perl_study_chunk (CVE-2026-8376, apareix en assembladors de 32 bits) i S_measure_struct (CVE-2026-57432), així com el desbordament del comptador de 16 bits al motor Regex (CVE-2026-13221), cosa que pot fer que l'expressió regular falli.
- Està prohibit saltar a posicions dins de bucles i construccions de bloc utilitzant l'operador goto. Aquesta funció va quedar obsoleta el 2010.
- Es van fer optimitzacions de rendiment per accelerar la suma, la resta i la multiplicació d'enters, el processament de signatures de funcions i l'ompliment de hashes de llistes de clau/valor amb claus de cadena conegudes en temps de compilació.
Font: linux.org.ru
