Perl 5.44


3

Egy év fejlesztés után megjelent a Perl programozási nyelv új stabil ágának kiadása — 5.44. A felkészülés új kiadására körülbelül 270 ezer sor kód változott (dokumentáció nélkül és automatikusan generált kód — 110 ezer), a változások 860 fájlt érintettek, a fejlesztésben 71 fejlesztő vett részt.

Az 5.44 ág az előre meghatározott, tizenhárom éve bevezetett, évi új stabil ágkiadást és háromhavonta kiadott javítórelízeket tervező fejlesztési ütemterv szerint jelent meg. Körülbelül egy hónapon belül várható az első javító kiadás, a Perl 5.44.1, amely a Perl 5.44.0 bevezetése során felfedezett legfontosabb hibák javításait tartalmazza. A Perl 5.44 megjelenésével egyidejűleg megszűnik az 5.40 ág támogatása, amelyhez frissítések a jövőben csak kritikus biztonsági problémák felfedezése esetén kerülhetnek kiadásra. Megkezdődött az 5.45 kísérleti ág fejlesztési folyamata, amelynek alapján 2027 első felében stabil kiadásként fog megszületni a Perl 5.46, amennyiben nem születik határozat átállni a 7.x számozásról.

Kulcsok változások:

  • Hozzáadva kísérleti lehetőség a megnevezett paraméterek használatára a szignatúrákban funkciók, amelyek meghatározzák a funkcióhoz átadandó változókat nem a funkció törzsében, hanem a deklarálásakor. Az új lehetőség lehetővé teszi, hogy a paramétereket ne szigorú sorrendben adjuk át, hanem tetszőleges sorrendben, kulcs/érték pár és a hashtáblákban lévő elemekhez hasonló szintaxis segítségével:
    • régi szintaxis: sub f { my ($x, $y) = @_; …} f(1, 2);
    • szignatúrák: sub f ($x, $y) { … } f(1, 2);
    • szignatúrák megnevezett paraméterekkel: sub f (:$x, :$y) { … } f(y => 2, x => 1);
  • Hozzáadva egy kísérleti funkció, amely lehetővé teszi az aliasok (mutatókra való mutatók) használatát többváltozós foreach ciklusokban. A megvalósított funkció lehetővé teszi, hogy az alias egy foreach ciklusban legyen létrehozva, miközben több érték egyszerre történő kinyerését végezzük egy ciklus iterációjában. Például, létrehozhatunk egy alias-t egy hash elem számára egy tömb segítségével, miközben egyszerre iterálunk a hash kulcsain és értékein: use v5.44; use feature qw( refaliasing declared_refs ); my %hash = ( one => [1], two => [2, 2], ); foreach my ( $key, @items ) ( %hash ) { say "A $key tömb tartalmazza: @items"; } # Az 5.44-es verzió előtt a dereferálást kellett volna végrehajtani: foreach my ( $key, $var ) ( %hash ) { say "A $key tömb tartalmazza: @$var"; } # Kísérleti refaliasing és declared_refs funkciók nélkül: foreach my $key (keys %hash) { say "A $key tömb tartalmazza: @{$hash{$key}}"; }
  • A reguláris kifejezésekben megvalósították a kísérleti 'enhanced_xx' mód, amely lehetővé teszi a /xx módosító használatát a négyzetes zárójelekben lévő karakterosztályokkal ([a-zA-Z]) azok több sorra való bontására vagy kommentek behelyettesítésére. Például az if ($text =~ m/[a-zA-Z]/) feltételt így lehet megfogalmazni: if ($text =~ m/[ a-z # kisbetűk A-Z # nagybetűk ]/xx) {
  • A pszeudo-véletlen számgenerátorban az entropy megszerzéséhez a getentropy() rendszerhívást használják az azt támogató rendszereken (Linux, BSD, macOS). Más rendszereken az entropy megszerzése a /dev/urandom eszközből olvasva vagy az idő, a folyamat azonosítója és a mutató értéke alapján történik.
  • Hozzáadva a specifikáció támogatása Unicode 17.0.
  • Szigorúan betartják a Unicode szabályokat a nevek, azonosítók és a reguláris kifejezések csoportjainak használatára, ahol most már körülbelül 160 Unicode karakter használata tilos, amelyek korábban a w osztályba tartoztak. Például a w osztályba tartozó összes betű, szám és aláhúzás karakter mellett kizárásra kerültek a kör alakú latin betűk, amelyek valódi betűkre emlékeztetnek, de azok nem. A viselkedés megváltozása csak az utf8 módot használó programokat érinti.
  • A puffer-túlcsordulásokkal kapcsolatos sebezhetőségek megszüntetése a Perl_study_chunk (CVE-2026-8376, amely a 32 bites build-ekben jelentkezik) és a S_measure_struct (CVE-2026-57432), valamint a Regex motorban a 16 bites számláló túlcsordulása (CVE-2026-13221), ami hibás reguláris kifejezés működéséhez vezethet.
  • A goto statement cannot transfer control to a position inside loops and block structures. This feature was declared deprecated in 2010.
  • Teljesítményoptimalizálásokat hajtottunk végre, amelyek felgyorsították az egész számok összeadási, kivonási és szorzási műveleteit, a függvények aláírásának feldolgozását és a kulcs-érték formátumú listákból származó hashek feltöltését, ismert, fordítási időben megadott karakterlánc kulcsokkal.

Forrás: linux.org.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster