Dostupný programovací jazyk Perl 5.42

Po roce vývoje byl zveřejněn nový stabilní vydání programovacího jazyka Perl — 5.42. Při přípravě nového vydání bylo změněno přibližně 280 tisíc řádků kódu (bez dokumentace a automaticky generovaného kódu — 93 tisíc), změny se dotkly 1500 souborů a na vývoji se podílelo 64 vývojářů.

Vydání 5.42 bylo uvolněno podle schváleného pevného plánu vývoje, který byl přijat před dvanácti lety, a zahrnuje vydání nových stabilních větví jednou za rok a opravné vydání každé tři měsíce. Přibližně za měsíc se plánuje vydání prvního opravného vydání Perl 5.42.1, které opraví nejvýznamnější chyby objevené během implementace Perl 5.42.0. Současně s vydáním Perl 5.42 byla zastavena podpora větve 5.38, pro kterou mohou být aktualizace v budoucnu vydány pouze v případě zjištění kritických problémů v oblasti bezpečnosti. V blízké době začne proces vývoje experimentální větve 5.43, na jejímž základě bude v červnu 2026 vytvořeno stabilní vydání Perl 5.44, pokud nebude přijato rozhodnutí přejít na číslování 7.x.

Klíčové změny:

  • Byly přidány experimentální operátory zpracování seznamů — „any { BLOCK } @list“ a „all { BLOCK } @list“, které připomínají operátor „grep { BLOCK } @list“, ale mohou vracet pouze hodnoty true nebo false. Operátor „all“ vrací „true“ při splnění podmínky pro všechny prvky seznamu, zatímco operátor „any“ vrací „true“ při splnění podmínky alespoň pro jeden prvek. Funkčnost těchto operátorů je podobná funkcím z modulu List::Util, ale vestavěné varianty jsou rychlejší a spotřebovávají méně paměti. use v5.42; use feature ‘keyword_all’; no warnings ‘experimental::keyword_all’; my @numbers = … if ( all { $_ % 2 == 0 } @numbers ) { say «Všechny čísla jsou sudá»; }
  • Pro pole definovaná uvnitř třídy byl implementován atribut „:writer“, který se používá k automatickému vytváření metody, jež zapisuje hodnotu proměnné do pole pro aktuální instanci třídy. class Point { field $x :reader :writer :param; field $y :reader :writer :param; } my $p = Point->new( x => 20, y => 40 ); $p->set_x(60);
  • Byla přidána podpora pro definici lexikálních metod, která, podobně jako definice lexikálních subprogramů („lexical_subs“), umožňuje vytvářet metody dostupné pouze v oblasti lexikální viditelnosti bloku, ve kterém byly vytvořeny. Pro vytváření takových metod se používá výraz „my jméno_metody“.
  • Byl přidán operátor „->&“, který umožňuje volat subprogramy nacházející se v lexikální oblasti viditelnosti, tak jako by byly metodami. V kombinaci s možností definice lexikálních metod nový operátor realizuje funkčnost podobnou privátním metodám.
  • Byl přidán operátor přiřazení „A ^^= B“, provádějící operaci „A = A XOR B“.
  • Byla přidána pragma „source::encoding“, která určuje kódování zdrojového kódu. Pro kód v kódování ASCII lze uvést „use source::encoding 'ascii'“ (výchozí), a pro UTF-8 — „use source::encoding 'utf8'“, přičemž poslední výraz je ekvivalentní výrazu „use utf8“. Interpreter vyhodí chybu, pokud se v kódu označeném jako ASCII vyskytují znaky UTF-8, nebo pokud se v kódu označeném jako UTF-8 používají escape sekvence „\x{}“. Pro vypnutí kontroly části kódu lze použít hodnotu „use no source::encoding“. V praxi může být přidaná pragma užitečná pro odhalení případů, kdy vývojář zapomněl uvést „use utf8“ pro kód v kódování UTF-8.
  • Do jmenného prostoru „CORE::“ byla přidána funkce chdir(). Například nyní lze na tuto funkci odkazovat jako „&CORE::chdir($dir)“ nebo „my $ref = \&CORE::chdir; $ref->($dir)“.
  • Byl přidán výraz ‘no feature „apostrophe_as_package_separator“‘ pro vypnutí podpory používání znaku „'“ jako oddělovače jmen balíčků (například „My'Module'Var“ místo „My::Module::Var“). Původně bylo v Perl 5.42 plánováno odstranit podporu takových oddělovačů, které byly dříve vyhlášeny za zastaralé, ale během diskusí bylo rozhodnuto tuto možnost zachovat ve výchozím nastavení, ale poskytnout možnost pro její vypnutí.
  • Mezi vrácené funkce byla zahrnuta funkčnost „switch“ a operátor „~~“, které byly dříve označeny jako zastaralé a plánované k odstranění. Od verzí Perl 5.36 a 5.42 jsou funkce „switch“ a „~~“ ve výchozím nastavení deaktivovány při vazbě kódu na verze jazyka (například při použití „use v5.42“), ale mohou být aktivovány pomocí výrazů ‘use feature „switch“‘ a ‘use feature „smartmatch“‘.
  • Byla přidána podpora specifikace Unicode 16.0.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster