K dispozici je programovací jazyk Perl 5.36.0

Po roce vývoje bylo zveřejněno vydání nové stabilní větve programovacího jazyka Perl, 5.36. Při přípravě nového vydání bylo změněno asi 250 tisíc řádků kódu, změny se dotkly 2000 souborů, na vývoji se podílelo 82 vývojářů.

Větev 5.36 je vydávána v souladu s pevným plánem vývoje schváleným před devíti lety, což znamená vydávání nových stabilních větví jednou ročně a opravná vydání každé tři měsíce. První opravné vydání Perlu 5.36.1 je naplánováno na vydání přibližně za měsíc a opravuje nejvýznamnější chyby zjištěné během implementace Perlu 5.36.0. Spolu s vydáním Perlu 5.36 byla zrušena podpora pro větev 5.32, kterou lze v budoucnu aktualizovat pouze v případě, že budou identifikovány kritické bezpečnostní problémy. Začal také vývojový proces pro experimentální větev 5.37, ze které se v květnu nebo červnu 2023 vytvoří stabilní vydání Perlu 5.38, pokud nebude rozhodnuto o přechodu na číslování 7.x.

Klíčové změny:

  • Podpora podpisů funkcí byla stabilizována a je nyní k dispozici při specifikaci pragma "use v5.36", což umožňuje explicitně definovat seznam proměnných použitých ve funkci a automatizovat operace kontroly a přiřazování hodnot z pole. vstupních parametrů. Například dříve používaný kód: sub foo { die "Příliš mnoho argumentů pro podprogram" ledaže @_ >= 2; die "Příliš málo argumentů pro podprogram" ledaže @_ <= 2; my($left, $right) = @_; return $left + $right; }

    při použití podpisů jej lze nahradit:

    sub foo ($left, $right) { return $left + $right; }

    Volání foo s více než dvěma argumenty způsobí, že interpret vyvolá chybu. Seznam také podporuje speciální proměnnou "$", která umožňuje ignorovat některé z argumentů, například "sub foo ($left, $, $right)" vám umožní zkopírovat pouze první a třetí argument do proměnné, zatímco právě tři argument.

    Syntaxe podpisu také umožňuje zadat volitelné argumenty a nastavit výchozí hodnoty, pokud argument chybí. Například zadáním "sub foo ($left, $right = 0)" se druhý argument stane volitelným, a pokud chybí, bude předána hodnota 0. V operaci přiřazení lze zadat libovolný výraz, včetně použití další proměnné ze seznamu nebo globální proměnné. Zadání hashe nebo pole místo proměnné (například "sub foo ($left, @right)") bude mít za následek možnost předání jednoho nebo více argumentů.

  • Ve funkcích deklarovaných pomocí signatur je podpora dodatečného přiřazení parametrů z pole "@_" deklarována jako experimentální a bude mít za následek varování (výstraha se zobrazí pouze v případě, že je @_ použito ve funkcích deklarovaných pomocí nové syntaxe). Například bude vydáno varování pro funkci: use v5.36; sub f ($x, $y = 123) { say "První argument je $_[0]"; }
  • Stabilizovaný a dostupný při specifikaci pragma "use v5.36", operátor infix "isa" pro kontrolu, zda je objekt instancí zadané třídy nebo třídou z ní odvozenou. Například: if( $obj isa Package::Name ) { … }
  • Při zadání pragmatu "použít v5.36" je povoleno zpracování varování (je aktivován režim "použít varování").
  • Při specifikaci pragmatu "use v5.36" je zakázána podpora nepřímého zápisu volajících objektů ("feature indirect") - zastaralý způsob volání objektů, ve kterém se místo "->" používá mezera ("metoda $ objekt @param" místo "$objekt-> $method(@param)"). Například místo "my $cgi = new CGI" byste použili "my $cgi = CGI->new".
  • Při zadávání pragmatu "use v5.36" byla zakázána podpora emulace vícerozměrných polí a hashů ve stylu Perl 4 ("feature multidimenzionální"), což umožnilo převést více klíčů do středního pole (například "$hash{1 , 2}") byl převeden na "$hash{join($;, 1, 2)}").
  • Pragma "use v5.36" deaktivuje podporu pro experimentální mechanismus větvení ("feature switch") podobný příkazům switch a case (Perl používá klíčová slova given a when). Od Perlu 5.36 musíte pro použití této funkce explicitně specifikovat 'použít funkci "přepínač"' a zadáním "použít verzi" ji již automaticky nepovolíte.
  • Stabilizovaná a k dispozici ve výchozím nastavení podpora pro další třídy znaků v hranatých závorkách uvnitř regulárních výrazů. Tato schopnost umožňuje párování pomocí rozšířených pravidel pro protínání, vylučování a zřetězení více znaků. Například „[AZ - W]“ jsou znaky od A do Z kromě W.
  • Podpora operací „(?“, „( )“, „{ }“ a „[ ]“ je částečně stabilizovaná a dostupná ve výchozím nastavení. Můžete použít znaky „“ ”, „“ ” atd. Např. „qr“ „“.
  • Je zakázáno volat funkci sort bez argumentů, což nyní povede k chybovému výstupu. @a = řazení @prázdné; # pokračovat @a = sort; # vyhodí chybu @a = sort (); # bude vyvolána chyba
  • Byl navržen nový příznak příkazového řádku "-g", který umožňuje režim stahování celého souboru, nikoli řádek po řádku. Vlajka má stejný účinek jako "-0777".
  • Podpora specifikace Unicode byla aktualizována na verzi 14.0.
  • Okamžité zpracování výjimek s plovoucí desetinnou čárkou (SIGFPE) podobné jiným alarmům, jako je SIGSEGV, je poskytováno, což umožňuje připojení uživatelských obslužných programů k signálu SIGFPE prostřednictvím $SIG{FPE}, například výstupem čísla řádku, kde se problém vyskytl.
  • Aktualizované verze modulů obsažených v základní distribuci.
  • Přidány optimalizace výkonu. Je poskytována možnost efektivněji ukládat velké hash klíče bez použití sdílených tabulek řetězců. Výkon při vytváření nových skalárních hodnot byl výrazně vylepšen, například následující kód nyní běží o 30 % rychleji: $str = "A" x 64; for (0..1_000_000) { @svs = split //, $str }
  • Kód interpretu začal používat některé z konstrukcí definovaných ve standardu C99. Sestavení Perlu nyní vyžaduje kompilátor, který podporuje C99. Podpora sestavení byla u starších verzí MSVC++ (před VC12) zrušena. Přidána podpora sestavení v Microsoft Visual Studio 2022 (MSVC++ 14.3).
  • Podpora platforem AT&T UWIN, DOS/DJGPP a Novell NetWare byla zrušena.

Zdroj: opennet.ru

Přidat komentář