Gjuha e programimit Perl 5.40.0 është e disponueshme

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

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster