Pas njĂ« vit zhvillimi, u publikua lĂ«shimi i degĂ«s sĂ« re stabile tĂ« gjuhĂ«s sĂ« programimit Perl â 5.36. GjatĂ« pĂ«rgatitjes sĂ« kĂ«tij versioni u ndryshuan rreth 250 mijĂ« rreshta kodi, ndryshimet preken 2000 skedarĂ« dhe nĂ« zhvillim morĂ«n pjesĂ« 82 zhvillues.
Dega 5.36 u publikua nĂ« pĂ«rputhje me planin e miratuar nĂ«ntĂ« vjet mĂ« parĂ«, qĂ« parashikon lĂ«shimin e degĂ«ve tĂ« reja stabile çdo vit dhe lĂ«shime korigjues â çdo tre muaj. Rreth njĂ« muaj mĂ« vonĂ« pritet tĂ« lĂ«shohet lĂ«shimi i parĂ« korigjues Perl 5.36.1, i cili do tĂ« rregullojĂ« gabimet mĂ« tĂ« rĂ«ndĂ«sishme tĂ« zbuluara gjatĂ« zbatimit tĂ« Perl 5.36.0. NĂ« tĂ« njĂ«jtĂ«n kohĂ« me daljen e Perl 5.36 u ndal mbĂ«shtetja pĂ«r degĂ«n 5.32, pĂ«r tĂ« cilĂ«n nĂ« tĂ« ardhmen mund tĂ« lĂ«shohen pĂ«rditĂ«sime vetĂ«m nĂ« rast tĂ« problemeve kritike me sigurinĂ«. Po ashtu, ka filluar procesi i zhvillimit tĂ« degĂ«s eksperimentale 5.37, mbi tĂ« cilĂ«n nĂ« maj ose qershor 2023 do tĂ« formohet njĂ« lĂ«shim stabil Perl 5.38, nĂ«se nuk merret njĂ« vendim pĂ«r tĂ« kaluar nĂ« numĂ«rimin 7.x.
Ndryshimet kryesore:
- ĂshtĂ« stabilizuar dhe tani Ă«shtĂ« e disponueshme duke treguar pragmĂ«n «use v5.36» mbĂ«shtetje pĂ«r nĂ«nshkrimet e funksioneve, duke lejuar pĂ«rcaktimin e qartĂ« tĂ« listĂ«s sĂ« variablave qĂ« pĂ«rdoren nĂ« funksion dhe automatizimin e operacioneve tĂ« verifikimit dhe caktimit tĂ« vlerave nga asorti i parametrave hyrĂ«s. PĂ«r shembull, kodi qĂ« pĂ«rdorej mĂ« parĂ«: sub foo { die «Prej shumĂ« argumentesh pĂ«r nĂ«nshkrimin» pĂ«rveç se @_ >= 2; die «Prej tĂ« paktĂ« argumentesh pĂ«r nĂ«nshkrimin» pĂ«rveç se @_ <= 2; my($left, $right) = @_; return $left + $right; }
kur përdoren nënshkrimet mund të zëvendësohet me:
sub foo ($left, $right) { return $left + $right; }
Kur thirret foo me një numër argumentesh të ndryshëm nga dy, interpreti do të nxjerrë një gabim. Në listë mbështetet gjithashtu variabla speciale «$», e cila lejon anashkalimin e disa argumenteve, për shembull, «sub foo ($left, $, $right)» do të lejojë kopjimin në variablat vetëm të argumentit të parë dhe të tretë, duke kërkuar që të tre argumentet të dërgohen në funksion.
Sintaksa e nënshkrimeve gjithashtu lejon përcaktimin e argumenteve jo-obligatore dhe caktimin e vlerave që përdoren si standard në rast të mungesës së një argumenti. Për shembull, duke specifikuar «sub foo ($left, $right = 0)» argumenti i dytë bëhet jo-obligator dhe në rastin e mungesës së tij kalon vlerën 0. Në operacionin e caktimit mund të përcaktohen shprehje të rastësishme, duke përfshirë përdorimin e variablave të tjerë nga lista ose variablave globalë. Përcaktimi i një variabli hash ose array (p.sh., «sub foo ($left, @right)») do të çojë në mundësinë e dërgimit të një ose më shumë argumenteve.
- Në funksionet e shpallura duke përdorur nënshkrime, mbështetje për caktimin shtesë të parametrave nga lista «@_» është shpallur eksperimentale dhe do të sjellë një paralajmërim (paralajmërimi shfaqet vetëm nëse @_ përdoret në funksionet e shpallura duke përdorur sintaksën e re). Për shembull, do të jepet një paralajmërim për funksionin: use v5.36; sub f ($x, $y = 123) { say «Argumenti i parë është $_[0]»; }
- ĂshtĂ« stabilizuar dhe e disponueshme duke treguar pragmĂ«n «use v5.36» operatori infiks «isa» pĂ«r tĂ« kontrolluar nĂ«se objekti Ă«shtĂ« njĂ« instancĂ« e klasĂ«s sĂ« caktuar ose njĂ« klase qĂ« e trashĂ«gon atĂ«. PĂ«r shembull: if( $obj isa Package::Name ) { ⊠}
- Duke treguar pragmën «use v5.36» është aktivizuar trajtimi i paralajmërimeve (aktivizuar mënyra «use warnings»).
- Duke treguar pragmĂ«n «use v5.36» Ă«shtĂ« çaktivizuar mbĂ«shtetja pĂ«r notacionin e tĂ«rthortĂ« tĂ« thirrjes sĂ« objekteve («feature indirect») â njĂ« mĂ«nyrĂ« e vjetruar pĂ«r thirrjen e objekteve, ku nĂ« vend tĂ« «->» pĂ«rdoret njĂ« hapĂ«sirĂ« («method $object @param» nĂ« vend tĂ« «$object->$method(@param)»). PĂ«r shembull, nĂ« vend tĂ« «my $cgi = new CGI» duhet tĂ« pĂ«rdoret «my $cgi = CGI->new».
- Duke treguar pragmën «use v5.36» është çaktivizuar mbështetja për simulimin e matricave dhe hash-eve shumë-dimensionale në stilin Perl 4 («feature multidimensional»), duke lejuar përkthimin e caktimit të disa çelësave në një array ndërmjetësor (p.sh., «$hash{1, 2}» u transformua në «$hash{join($;, 1, 2)}»).
- Duke treguar pragmĂ«n «use v5.36» Ă«shtĂ« çaktivizuar mbĂ«shtetja pĂ«r mekanizmĂ«n eksperimentale tĂ« Branching («feature switch»), e ngjashme me operatorĂ«t switch dhe case (nĂ« Perl pĂ«rdoren fjalitĂ« kyçe given dhe when). PĂ«r tĂ« pĂ«rdorur kĂ«tĂ« mundĂ«si, duke filluar nga Perl 5.36 duhet tĂ« specifikohet qartĂ« âuse feature «switch»â, dhe me specifikimin «use version» kjo nuk do tĂ« aktivizohet mĂ« automatikisht.
- ĂshtĂ« stabilizuar dhe e disponueshme si standard mbĂ«shtetja pĂ«r klasat e tjera tĂ« simboleve nĂ« kllapĂ« brenda shprehjeve tĂ« rregullta. Kjo mundĂ«si lejon pĂ«rshtatjen me rregulla tĂ« pĂ«rmirĂ«suara pĂ«r ndĂ«rprerje, pĂ«rjashtim dhe bashkim grupesh simbole. PĂ«r shembull, â[A-Z â W]â pĂ«rfshin simbolet nga A deri nĂ« Z pĂ«rveç W.
- PjesĂ«risht Ă«shtĂ« stabilizuar dhe suporti pĂ«r operacionet "(?", "( )", "{ }" dhe "[ ]" tani Ă«shtĂ« i aksesueshĂ«m si standard, duke lejuar pĂ«rdorimin e simboleve "« »", "â â" etj. PĂ«r shembull, "qr«pat»".
- Thirrja e funksionit sort pa argumente është e ndaluar dhe tani do të shkaktojë një gabim. @a = sort @empty; # do të vazhdojë të punojë @a = sort; # do të dalë një gabim @a = sort (); # do të dalë një gabim
- Një flamur i ri i komandës në vijë "-g" është propozuar, duke përfshirë modalitetin e ngarkimit të skedarit të tërë në vend që rresht pas rreshti. Veprimi i flamurit është i ngjashëm me shënimin "-0777".
- MbSupportimi i specifikimit Unicode është përditësuar në versionin 14.0.
- Janë siguruar trajtime të menjëhershme për përjashtimet lidhur me llogaritjet me pikë të zakonshme (SIGFPE), të ngjashme me trajtimin e sinjaleve të tjera emergjente, siç është SIGSEGV, duke lejuar lidhjen e trajtuesve të personalizuar për sinjalin SIGFPE përmes $SIG{FPE}, për shembull, që japin numrin e rreshtit ku ka ndodhur problemi.
- Janë përmirësuar versionet e modulit që përfshihen në paketën bazë.
- JanĂ« shtuar optimizime tĂ« performancĂ«s. ĂshtĂ« ofruar mundĂ«sia e ruajtjes mĂ« efikase tĂ« çelsojve pĂ«r hash tĂ« mĂ«dha, pa pĂ«rdorimin e tabelave tĂ« pĂ«rbashkĂ«ta tĂ« vargjeve. Ka njĂ« rritje tĂ« konsiderueshme nĂ« performancĂ«n e krijimit tĂ« vlerave tĂ« reja skalarĂ«, pĂ«r shembull, kodi nĂ« vazhdim tani ekzekutohet deri nĂ« 30% mĂ« shpejt: $str = âAâ x 64; pĂ«r (0..1_000_000) { @svs = split //, $str }
- NĂ« kodin e interpretuesit ka filluar pĂ«rdorimi i disa konstruksioneve tĂ« pĂ«rcaktuara nĂ« standardin C99. Tani pĂ«r ndĂ«rtimin e Perl kĂ«rkohet njĂ« kompilator qĂ« mbĂ«shtet C99. ĂshtĂ« ndĂ«rprerĂ« mbĂ«shtetja pĂ«r ndĂ«rtimin nĂ« versionet e vjetra tĂ« MSVC++ (deri nĂ« VC12). ĂshtĂ« shtuar mbĂ«shtetja pĂ«r ndĂ«rtimin nĂ« Microsoft Visual Studio 2022 (MSVC++ 14.3).
- ĂshtĂ« ndĂ«rprerĂ« mbĂ«shtetja pĂ«r platformat AT&T UWIN, DOS/DJGPP dhe Novell NetWare.
Burimi: opennet.ru
