Po roku vývoja bol vydaný nový stabilný release programovacieho jazyka Perl — 5.42. Pri príprave nového vydania bolo zmenených približne 280 tisíc riadkov kódu (bez dokumentácie a automaticky generovaného kódu — 93 tisíc), zmeny sa dotkli 1500 súborov a na vývoji sa podieľalo 64 vývojárov.
Vydanie 5.42 bolo realizované podľa schváleného dvanásť rokov starého pevného harmonogramu vývoja, ktorý predpokladá vydávanie nových stabilných verzií raz ročne a opravárskych release raz za tri mesiace. Približne za mesiac sa plánuje vydanie prvého opravárskeho release Perl 5.42.1, v ktorom budú opravené najvýznamnejšie chyby odhalene v procese uvedenia Perl 5.42.0. Súbežne s vydaním Perl 5.42 bola ukončená podpora verzie 5.38, pre ktorú môžu byť aktualizácie vydané v budúcnosti iba v prípade odhalenia kritických bezpečnostných problémov. V blízkej dobe sa začne proces vývoja experimentálnej vetvy 5.43, na základe ktorej bude v júni 2026 vytvorený stabilný release Perl 5.44, pokiaľ sa nerozhodne prejsť na číslovanie 7.x.
Kľúčové zmeny:
- Boli pridané experimentálne operátory spracovania zoznamov — „any { BLOCK } @list“ a „all { BLOCK } @list“, ktoré pripomínajú operátor „grep { BLOCK } @list“, ale môžu vrátiť iba hodnoty true alebo false. Operátor „all“ vráti „true“ ak je podmienka splnená pre všetky prvky zoznamu, zatiaľ čo operátor „any“ vráti „true“ ak je podmienka splnená aspoň pre jeden prvok. Funkcionalita operátorov je podobná funkciám z modulu List::Util, ale zabudované varianty sú rýchlejšie a spotrebúvajú menej pamäte. use v5.42; use feature ‘keyword_all’; no warnings ‘experimental::keyword_all’; my @numbers = … if ( all { $_ % 2 == 0 } @numbers ) { say «Všetky čísla sú párne»; }
- Pre polia definované v triede bol implementovaný atribút „:writer“, ktorý sa používa na automatické vytvorenie metódy zapisujúcej hodnotu premennej do poľa pre aktuálny inštanciu triedy. class Point { field $x :reader :writer :param; field $y :reader :writer :param; } my $p = Point->new( x => 20, y => 40 ); $p->set_x(60);
- Pridaná podpora definície lexikálnych metód, ktorá podobne ako definícia lexikálnych podprogramov („lexical_subs“) umožňuje vytvárať metódy dostupné iba v oblasti lexikálnej viditeľnosti bloku, v ktorom boli vytvorené. Na vytvorenie takýchto metód sa používa výraz „my meno_metódy“.
- Pridaný operátor „->&“, ktorý umožňuje vyvolať podprogramy nachádzajúce sa v lexikálnej oblasti viditeľnosti tak, akoby to boli metódy. V kombinácii s možnosťou definovať lexikálne metódy nový operátor realizuje funkčnosť podobnú súkromným metódam.
- Pridaný priradzovací operátor „A ^^= B“, ktorý vykonáva operáciu „A = A XOR B“.
- Pridaná pragma „source::encoding“, ktorá určuje kódovanie zdrojového kódu. Pre kód v kódovaní ASCII je možné uviesť „use source::encoding 'ascii'“ (predvolene), a pre UTF-8 — „use source::encoding 'utf8'“, pričom posledný výraz je ekvivalentný výrazu „use utf8“. Interpreter vygeneruje chybu, ak v kóde označenom ako ASCII sa nachádzajú znaky UTF-8 alebo ak v kóde označenom ako UTF-8 sú použité escape sekvencie „\x{}“. Pre vypnutie kontroly časti kódu je možné použiť hodnotu „use no source::encoding“. V praxi môže byť pridaná pragma užitočná na odhaľovanie prípadov, keď vývojár zabudol uviesť „use utf8“ pre kód v kódovaní UTF-8.
- Do priestoru mien „CORE::“ bola pridaná funkcia chdir(). Napríklad, teraz je možné na túto funkciu odkazovať ako „&CORE::chdir($dir)“ alebo „my $ref = \&CORE::chdir; $ref->($dir)“.
- Pridané výrazy ‚no feature „apostrophe_as_package_separator“‘ na vypnutie podpory používania symbolu „'“ ako oddeľovača mien balíkov (napríklad „My'Module'Var“ namiesto „My::Module::Var“). Pôvodne sa v Perle 5.42 plánovalo odstránenie podpory takýchto oddeľovačov, ktoré boli predtým vyhlásené za zastarané, ale počas diskusií sa rozhodlo zachovať túto možnosť ako predvolenú, ale predpokladať možnosť na jej vypnutie.
- Funkcionalita „switch“ a operátor „~~“, ktoré boli predtým označené za zastarané a plánovali sa na odstránenie, boli zaradené do zoznamu vracaných možností. Od verzií Perl 5.36 a 5.42 sú funkcie „switch“ a „~~“ pri viazaní kódu na verzie jazyka predvolene vypnuté (napríklad pri zadaní „use v5.42“), ale môžu byť aktivované výrazmi ‘use feature „switch“‘ a ‘use feature „smartmatch“‘.
- Pridaná podpora špecifikácie Unicode 16.0.
Zdroj: opennet.ru
