Pas 11 muajsh zhvillimi, Ă«shtĂ« publikuar lĂ«shimi i degĂ«s sĂ« re stabile tĂ« gjuhĂ«s sĂ« programimit Perl â 5.40. GjatĂ« pĂ«rgatitjes sĂ« lĂ«shimit tĂ« ri, janĂ« ndryshuar rreth 160 mijĂ« rreshta kodi (pa dokumentacionin dhe kodin e gjeneruar automatikisht â 110 mijĂ«), ndryshimet preknin 1500 skedarĂ«, ndĂ«rsa nĂ« zhvillim morĂ«n pjesĂ« 75 zhvillues.
Dega 5.40 Ă«shtĂ« lĂ«shuar sipas njĂ« plani tĂ« miratuar 11 vjet mĂ« parĂ«, i cili parashikon lĂ«shimin e degĂ«ve tĂ« reja stabile çdo vit dhe lĂ«shimeve korrigjuese â çdo tre muaj. Rreth njĂ« muaj mĂ« vonĂ«, planifikohet tĂ« lĂ«shohet lĂ«shimi i parĂ« korrigjues i Perl 5.40.1, nĂ« tĂ« cilin do tĂ« rregullohen gabimet mĂ« tĂ« rĂ«ndĂ«sishme qĂ« janĂ« identifikuar gjatĂ« zbatimit tĂ« Perl 5.40.0. NĂ« tĂ« njĂ«jtĂ«n kohĂ«, me daljen e Perl 5.40, pĂ«rkrahja pĂ«r degĂ«n 5.36 do tĂ« pezullohet, pĂ«r tĂ« cilĂ«n pĂ«rditĂ«simet do tĂ« lĂ«shohet vetĂ«m nĂ« rast se do tĂ« identifikohen probleme kritike me sigurinĂ«. Procesi i zhvillimit tĂ« degĂ«s eksperimentale 5.41 do tĂ« fillojĂ« mĂ« 20 qershor, mbi tĂ« cilĂ«n njĂ« lĂ«shim stabil i Perl 5.42 pritet tĂ« formohet nĂ« maj ose qershor 2025, nĂ«se nuk merret njĂ« vendim pĂ«r tĂ« kaluar nĂ« numĂ«rimin 7.x.
Ndryshimet kryesore:
- Janë zgjeruar mundësitë që lidhen me sintaksën eksperimentale të disponueshme në versionin e kaluar për krijimin e klasave. U shtua një fjalë kyçe e re «__CLASS__», e cila, kur thirret nga metodat, blloqet ADJUST ose gjatë inicializimit të fushave, kthen emrin e klasës aktuale, ashtu si fjalë kyçe __PACKAGE__ kthen emrin e paketës. Ndryshe nga shprehja ref($self), fjalë kyçe __CLASS__ mund të përdoret gjatë inicializimit të fushave për qasje në metodat e klasës në fazën para përfundimit të krijimit të instancës së klasës. Për klasën bazë, vlera e __CLASS__ është identike me vlerën e __PACKAGE__, por do të ndryshojë kur krijohen nëndega.
use feature âclassâ;
class Example1 {
field $f = __CLASS__->default_f;
sub default_f { 10 }
} - Për fushat e përcaktuara brenda klasës, është implementuar atributi «:reader», i aplikuar për krijimin automatik të një metode që kthen vlerën e variablës nga fusha në instancën aktuale të klasës.
Për shembull, specifikimi i «:reader» pas përcaktimit të fushës «field $s;» është ekuivalente me krijimin e metodës «method s () { return $s; }». Nëse është e nevojshme, mund të caktoni një emër të ndryshëm të metodës duke përdorur konstrukcionin e tipit «field $name :reader(get_name);». - Sintaksa stabile e trajtimit të përjashtimeve try/catch është shpallur, e cila mund të përdoret në vend të manipulimeve jo të dukshme me «eval». Blloku «try» përfshin bllokun me kodin që përmirësohet, dhe blloku «catch» me kodin për trajtimin e çdo përjashtimi që mund të ndodhë gjatë ekzekutimit të bllokut të parë. Në «catch» përcaktohet një variabël që përmban të dhënat e dërguara gjatë formimit të përjashtimit (për shembull, kur ndodh një përjashtim në thirrjen «die», do të dërgohet vargu i specifikuar si argument). Brenda bllokut «try» dhe «catch» lejohet të përdoren operatoret për kalim, duke përfshirë return, goto, next, last dhe redo.
try {
my $x = call_a_function();
$x < 100 or die "Too big"; send_output($x); } catch ($e) { warn "Unable to output a value; $e"; } print "Finished\n"; - Sintaksa «for my (VAR, VAR) (LIST)» dhe «foreach my (VAR, VAR) (LIST)» është stabilizuar, e cila aplikohet për të iteruar lista me nxjerrjen e menjëhershme të disa vlerave në një iteracion të vetëm të ciklit. Për shembuj, tani mund të specifikohet:
foreach my ($key, $value) (%hash) { ⊠}
for my ($left, $right, $gripping) (@moties) { ⊠} - Moduli builtin është shpallur stabil, duke përfshirë funksione gjithmonë të disponueshme të integruara në interpretor. Aktualisht, moduli ofron funksionet true, false, weaken, unweaken, is_weak, blessed, refaddr, reftype, ceil, floor, is_tainted, trim dhe indexed.
- Funksionet e reja eksperimentale të integruara inf dhe nan janë shtuar, të disponueshme në hapësirën e emrave "builtin::" ("builtin::inf" dhe "builtin::nan"). Këto funksione mund të përdoren si konstante që përcaktojnë pafundësinë dhe vlerën jo-numerike.
- Operatori logjik i ri "^^" është shtuar, i cili korrespondon me operacionin XOR dhe plotëson operatorin bitor "^" (në Perl, ofron tre operatorë themelorë bitorë "&", "|" dhe "^", që përputhen me operacionet AND, OR dhe XOR, por për operacionet logjike deri tani ishin në dispozicion vetëm variantet AND ("&&") dhe OR ("||"). Shprehja logjike "$x ^^ $y" do të kthejë TRUE kur ose "x" ose "y" kanë një vlerë TRUE, por jo njëkohësisht.
- Mbështetja për simulimin e versioneve deri në 5.11 është pezulluar. Përdorimi i direktivës «use numri_versionit» që çon në çaktivizimin e aftësive shtesë të shtuara në interpreter pas versionit të dhënë, me një numër versioni më të vogël se 5.11 (për shembull, «use v5.8»), tani do të rezultojë në një gabim, jo në një paralajmërim. Njësoj është shtuar një paralajmërim kur përdoret në «use» versioni më i vogël se 5.39 (paralajmërimet do të zëvendësohen me gabim në lëshimin 5.44).
- Lejohet pĂ«rdorimi i hapĂ«sirĂ«s midis opsionit tĂ« linjĂ«s sĂ« komandĂ«s «-M» dhe emrit tĂ« modulit, pĂ«r shembull «perl -M Data::Dumper=Dumper -E âsay Dumper [1,2,3]'» (mĂ« parĂ« duhej tĂ« shkruhej «perl -MData::DumperâŠÂ»).
- Përdorimi i operatorit «goto» për të kaluar nga një fushë e jashtme në një të brendshme është shpallur i hartuar. Mbështetja për këtë aftësi do të pezullohet në versionin Perl 5.42.
- Modulet Term::Table dhe Test2::Suite janë përfshirë në përbërjen kryesore, të destinuara për krijimin e testeve unit. Janë përmirësuar versionet e moduleve Archive::Tar, Compress::Raw::Bzip2, Compress::Raw::Zlib, Data::Dumper,
DB_File, File::Compare, File::Find, Getopt::Long, Hash::Util, HTTP::Tiny, IO, Math::BigInt, PerlIO::encoding, Tie::File, Time::HiRes etj. - Shtuar mbështetje për sistemin operativ Serenity OS.
- Janë eliminuar dy vulnerabilitete:
- CVE-2023-47038 â njĂ« shkrim pĂ«r tejkalimin e buffer-it gjatĂ« pĂ«rpunimit tĂ« vetĂ«synimeve Unicode tĂ« papĂ«rshtatshme nga pĂ«rdoruesi. Problemi mund tĂ« çojĂ« nĂ« njĂ« tejkalim buffer-i prej 1 byte gjatĂ« pĂ«rpunimit tĂ« shprehjeve tĂ« rregullta tĂ« dizajnuara veçmas.
- CVE-2023-47039 â mundĂ«sia pĂ«r tĂ« zĂ«vendĂ«suar njĂ« skedarin ekzekutues nĂ« platformĂ«n Windows pĂ«r shkak tĂ« kĂ«rkimit tĂ« cmd.exe nĂ« rrugĂ«t duke pĂ«rdorur variablin e mjedisit PATH, ku katalogu aktual i punĂ«s ka prioritet mĂ« tĂ« lartĂ« se katalogu sistemor qĂ« pĂ«rmban skedarin ekzekutues cmd.exe.
Burimi: opennet.ru
