Egy évnyi fejlesztés után megjelent a Perl programozási nyelv új stabil ága — 5.42. Az új kiadás előkészítése során körülbelül 280 ezer kódsort módosítottak (a dokumentáció és az automatikusan generált kód nélkül — 93 ezer), a változások 1500 fájlt érintettek, a fejlesztésben 64 fejlesztő vett részt.
A 5.42 ág a tizenkét évvel ezelőtt jóváhagyott rögzített fejlesztési ütemterv szerint jelent meg, amely új stabil ágak évenkénti, valamint hibajavító kiadások trimeszteres megjelenését írja elő. Körülbelül egy hónapon belül várható a Perl 5.42.1 első hibajavító kiadása, amely a Perl 5.42.0 bevezetése során felfedezett legjelentősebb hibákat javítja. A Perl 5.42 megjelenésével egyidejűleg megszűnik az 5.38 ág támogatása, amelyhez frissítések a jövőben csak kritikus biztonsági problémák esetén készülhetnek. A közeljövőben megkezdődik az 5.43 kísérleti ág fejlesztési folyamata, amelyből 2026 júniusában stabil 5.44-es kiadás készül, hacsak nem döntenek a 7.x számozásra való áttérés mellett.
Kulcsfontosságú változások:
- Kísérleti listafeldolgozó operátorok kerültek bevezetésre — «any { BLOCK } @list» és «all { BLOCK } @list», amelyek hasonlítanak a «grep { BLOCK } @list» operátorra, de csak true vagy false értékeket adhatnak vissza. Az «all» operátor «true»-t ad vissza, ha a feltétel minden listaelemre teljesül, míg az «any» operátor akkor, ha legalább egy elem esetében teljesül a feltétel. Az operátorok funkcionalitása hasonló a List::Util modul funkcióihoz, de a beépített változatok gyorsabbak és kevesebb memóriát használnak. use v5.42; use feature ‘keyword_all’; no warnings ‘experimental::keyword_all’; my @numbers = … if ( all { $_ % 2 == 0 } @numbers ) { say «Minden szám páros»; }
- A klasszison belül definiált mezőkhöz megvalósították a «:writer» attribútumot, amelyet a mező aktuális példányához való értékbeíró metódus automatikus létrehozására alkalmaznak. class Point { field $x :reader :writer :param; field $y :reader :writer :param; } my $p = Point->new( x => 20, y => 40 ); $p->set_x(60);
- Hozzáadva a lexikai metódusok definiálásának támogatása, amely analógiát mutat a lexikai alsóprogramok („lexical_subs”) definiálásával, lehetővé téve olyan metódusok létrehozását, amelyek csak abban a lexikai láthatósági területen érhetők el, ahol létrehozták őket. Az ilyen metódusok létrehozásához a következő kifejezés használható: „my név_metódus”.
- Hozzáadva a „->&” operátor, amely lehetővé teszi, hogy a lexikai láthatósági területen lévő alsóprogramokat úgy hívjuk meg, mintha azok metódusok lennének. A lexikai metódusok definiálásának lehetőségével együtt az új operátor hasonló funkciókat valósít meg, mint a privát metódusok.
- Hozzáadva az „A ^^= B” hozzárendelési operátor, amely végrehajtja az „A = A XOR B” műveletet.
- Hozzáadva a „source::encoding” pragma, amely meghatározza a forráskód kódolását. ASCII kód esetén megadható a „use source::encoding ‘ascii'” (alapértelmezett), míg UTF-8 esetén a „use source::encoding ‘utf8’”, az utóbbi kifejezés az „use utf8” kifejezéssel egyenértékű. Az értelmező hibát jelez, ha az ASCII-ként megjelölt kódban UTF-8 karakterek találhatók, vagy ha UTF-8-ként megjelölt kódban „\x{}” escape-sorozatok használatosak. A kód egy részének ellenőrzésének letiltásához használható a „use no source::encoding” érték. A gyakorlatban a hozzáadott pragma hasznos lehet az olyan esetek felderítésére, amikor a fejlesztő elfelejtette megadni a „use utf8” kifejezést UTF-8 kód esetén.
- A „CORE::” névtérbe hozzáadva a chdir() függvény. Például mostantól így hivatkozhatunk erre a függvényre: „&CORE::chdir($dir)” vagy „my $ref = \&CORE::chdir; $ref->($dir)”.
- Hozzáadva a „no feature «apostrophe_as_package_separator»” kifejezés az apostrof mint csomagnevező elválasztó használatának támogatásának letiltására (például „My’Module’Var” helyett „My::Module::Var”). Eredetileg a Perl 5.42-ben terveztek eltávolítani a hasonló elválasztók támogatását, amelyeket korábban elavultnak nyilvánítottak, de a viták során úgy döntöttek, hogy ezt a lehetőséget alapértelmezés szerint megőrzik, de biztosítanak egy opciót a letiltására.
- A visszatérített lehetőségek közé került a „switch” funkcionalitás és a „~~” operátor, amelyek korábban elavultnak voltak nyilvánítva, és törlésük tervbe volt véve. A Perl 5.36 és 5.42 verziók kiadása óta a „switch” és a „~~” alapértelmezés szerint ki van kapcsolva a kód verziókhoz való kötésekor (például „use v5.42” megadásakor), de aktiválhatók a ‘use feature „switch”‘ és ‘use feature „smartmatch”‘ kifejezésekkel.
- Hozzáadva a 16.0-ás Unicode specifikáció támogatása.
Forrás: opennet.ru
