Pagkatapos ng isang taon ng pag-unlad nalathala paglabas ng isang bagong matatag na sangay ng Perl programming language - 5.44. Sa naghahanda Binago ng bagong release ang humigit-kumulang 270 linya ng code (hindi kasama ang dokumentasyon at awtomatikong nabuong code - 110), naapektuhan ng mga pagbabago ang 860 na file, at 71 na developer ang lumahok sa pag-develop.
Ang sangay na 5.44 ay inilabas alinsunod sa nakapirming iskedyul ng pag-unlad na itinatag labintatlong taon na ang nakalilipas, na humihiling ng paglabas ng mga bagong stable na sangay minsan sa isang taon at mga minor na paglabas bawat tatlong buwan. Ang unang minor na paglabas, ang Perl 5.44.1, ay nakatakdang ilabas sa loob ng halos isang buwan, na nag-aayos ng mga pinakamahalagang bug na natuklasan sa panahon ng implementasyon ng Perl 5.44.0. Sa paglabas ng Perl 5.44, natapos na ang suporta para sa sangay na 5.40; ang mga update para dito ay maaaring ilabas lamang sa hinaharap kung may matuklasan na mga kritikal na isyu sa seguridad. Nagsimula na ang proseso ng pagbuo ng eksperimental na sangay na 5.45, na siyang magiging batayan para sa matatag na paglabas ng Perl 5.46 sa unang kalahati ng 2027, maliban kung may desisyon na ginawa dumaan sa pagnunumero ng 7.x.
Susi pagbabago:
- Idinagdag posibilidad ng eksperimento sa paggamit ng mga pinangalanang parameter sa mga lagda Mga function na tumutukoy sa listahan ng mga variable na ipinasa sa function hindi sa katawan ng function, kundi habang nagdedeklara nito. Ang bagong feature na ito ay nagbibigay-daan sa mga parameter na maipasa hindi sa isang mahigpit na pagkakasunud-sunod, kundi sa anumang pagkakasunud-sunod, gamit ang mga pares ng key/value at isang syntax na katulad ng pagtatalaga ng mga elemento sa mga hash:
- lumang sintaks: sub f { aking ($x, $y) = @_; …} f(1, 2);
- mga lagda: sub f ($x, $y) { … } f(1, 2);
- mga lagda na may pinangalanang mga parameter: sub f (:$x, :$y) { … } f(y => 2, x => 1);
- Nagdagdag ng pang-eksperimentong suporta para sa paggamit ng mga alias (mga pointer sa mga pointer) sa mga foreach loop na may maraming variable. Ang feature na ito ay nagbibigay-daan sa iyong lumikha ng isang alias sa isang foreach loop kapag kumukuha ng maraming value sa isang loop na iteration. Halimbawa, maaari kang lumikha ng isang alias para sa isang hash element na may array kapag nag-iterate sa parehong key at value ng hash: use v5.44; use feature qw( refaliasing declared_refs ); my %hash = ( one => [1], two => [2, 2], ); foreach my ( $key, @items ) ( %hash ) { say "The $key array contains: @items"; } # Bago ang bersyon 5.44, kinakailangan ang dereferencing: foreach my ( $key, $var ) ( %hash ) { say "The $key array contains: @$var"; } # Nang walang eksperimental na muling pag-aayos at mga tampok na declared_refs: foreach my $key (keys %hash) { sabihin "Ang array ng $key ay naglalaman ng: @{$hash{$key}}"; }
- Sa mga regular na ekspresyon ipinatupad Ang eksperimental na 'enhanced_xx' mode ay nagbibigay-daan sa /xx modifier na gamitin kasama ng mga klase ng karakter na nasa square bracket ([a-zA-Z]) upang hatiin ang mga ito sa maraming linya o upang magsingit ng mga komento. Halimbawa, ang kundisyong if ($text =~ m/[a-zA-Z]/){ ay maaaring isulat bilang: if ($text =~ m/[a-z # lowercase letters A-Z # uppercase letters ]/xx) {
- Ang pseudo-random number generator ay gumagamit ng system call na getentropy() upang makakuha ng entropy sa mga sistemang sumusuporta dito (Linux, BSD, macOSSa ibang mga sistema, ang entropy ay nakukuha sa pamamagitan ng pagbabasa mula sa /dev/urandom device o paggamit ng hash ng oras, process ID, at pointer value.
- Nagdagdag ng suporta sa pagtutukoy Unicode 17.0.
- Mahigpit na pagsunod sa mga tuntunin ng Unicode ang tiniyak para sa mga pangalan ng identifier at mga regular expression group, kung saan humigit-kumulang 160 karakter ng Unicode na dating sakop ng w class ay ipinagbabawal na ngayon. Halimbawa, ang w class, na sumasaklaw sa lahat ng letra, digit, at underscore character, ay hindi na ngayon isinasama ang mga nakabilog na letrang Latin, na kahawig ng mga aktwal na letra ngunit hindi naman. Ang pagbabagong ito sa pag-uugali ay nakakaapekto lamang sa mga programang gumagamit ng use utf8 mode.
- Inayos ang mga kahinaan na dulot ng mga buffer overflow sa mga function na Perl_study_chunk (CVE-2026-8376, lumalabas sa mga 32-bit na asembliya) at S_measure_struct (CVE-2026-57432), pati na rin ang overflow ng 16-bit counter sa Regex engine (CVE-2026-13221), na maaaring maging sanhi ng pagkabigo ng regular na expression.
- Ipinagbabawal ang pagtalon sa mga posisyon sa loob ng mga loop at block construct gamit ang goto operator. Hindi na ginagamit ang feature na ito noong 2010.
- Isinagawa ang mga pag-optimize sa pagganap upang mapabilis ang pagdaragdag, pagbabawas, at pagpaparami ng integer, pagproseso ng function signature, at paglalagay ng mga hash mula sa mga listahan ng key/value gamit ang mga string key na alam sa oras ng pag-compile.
Pinagmulan: linux.org.ru
