Na voljo je programski jezik Perl 5.42

Po letu razvoja je izšla nova stabilna različica programskega jezika Perl — 5.42. Med pripravo nove različice je bilo spremenjenih približno 280.000 vrstic kode (brez dokumentacije in samodejno generirane kode — 93.000), spremembe pa so zajele 1500 datotek, pri razvoju pa je sodelovalo 64 razvijalcev.

Različica 5.42 je izšla v skladu s trdnim razporedom, potrjenim pred dvanajstimi leti, ki predvideva izdajo novih stabilnih različic enkrat letno in popravljalnih izdaj vsakih tri mesece. Približno en mesec po izidu je načrtovana prva popravljalna izdaja Perl 5.42.1, v kateri bodo odpravljene najbolj pomembne napake, odkrite med uvajanjem Perl 5.42.0. Hkrati s sprostitvijo Perl 5.42 se preneha podpora za različico 5.38, za katero bodo posodobitve v prihodnosti morda izdate le v primeru kritičnih težav s varnostjo. V bližnji prihodnosti se bo začel proces razvoja eksperimentalne različice 5.43, na osnovi katere bo junija 2026 oblikovana stabilna izdaja Perl 5.44, razen če ne bo sprejeta odločitev o prehodu na številčenje 7.x.

Ključne spremembe:

  • Dodani so eksperimentalni operatorji obdelave seznamov — "any { BLOCK } @list" in "all { BLOCK } @list", ki spominjajo na operator "grep { BLOCK } @list", a lahko vrnejo le vrednosti true ali false. Operator "all" vrne "true", ko je pogoj izpolnjen za vse elemente seznama, medtem ko operator "any" vrne "true", ko je pogoj izpolnjen za vsaj en element. Funkcionalnost operatorjev je podobna funkcijam iz modula List::Util, vendar so vgrajene različice hitrejše in porabijo manj pomnilnika. use v5.42; use feature ‘keyword_all’; no warnings ‘experimental::keyword_all’; my @numbers = … if ( all { $_ % 2 == 0 } @numbers ) { say «Vsi števila so sodna»; }
  • Za znotraj razreda definirane atribute je bila uvedena oznaka ":writer", ki se uporablja za samodejno ustvarjanje metode, ki zapisuje vrednost spremenljivke v atribut trenutnega primera razreda. class Point { field $x :reader :writer :param; field $y :reader :writer :param; } my $p = Point->new( x => 20, y => 40 ); $p->set_x(60);
  • Dodana je podpora za določanje leksičnih metod, ki na podoben način kot določitev leksičnih podprogramov ('lexical_subs') omogoča ustvarjanje metod, dostopnih samo v obsegu leksične vidnosti bloka, v katerem so bile ustvarjene. Za ustvarjanje takšnih metod se uporablja izraz 'my ime_metode'.
  • Dod operator '->&', ki omogoča klicanje podprogramov, ki se nahajajo v leksični vidnosti, tako, kot da so metode. V kombinaciji s sposobnostjo določanja leksičnih metod novi operator uresničuje funkcionalnost, podobno privatnim metodam.
  • Dodana je dodelitev 'A ^^= B', ki izvede operacijo 'A = A XOR B'.
  • Dodana je pragma 'source::encoding', ki določa kodiranje izvorne kode. Za kodo v kodiranju ASCII lahko navedete 'use source::encoding 'ascii' (privzeto), medtem ko za UTF-8 – 'use source::encoding 'utf8'', pri čemer je zadnji izraz ekvivalenten izrazu 'use utf8'. Interpreter bo vrgel napako, če se v kodi, označeni kot ASCII, pojavijo znaki UTF-8, ali če se v kodi, označeni kot UTF-8, uporabljajo escape zaporedja '\x{}'. Za onemogočanje preverjanja dela kode lahko uporabite vrednost 'use no source::encoding'. V praksi je dodana pragma lahko koristna za odkrivanje primerov, ko je razvijalec pozabil navesti 'use utf8' za kodo v kodiranju UTF-8.
  • V prostor imenskih 'CORE::' je dodana funkcija chdir(). Na primer, zdaj se lahko do te funkcije dostopa kot '&CORE::chdir($dir)' ali 'my $ref = \&CORE::chdir; $ref->($dir)'.
  • Dodana je izjava 'no feature "apostrophe_as_package_separator"' za onemogočanje podpore uporabe znaka '‘' kot ločevalnika imen paketov (na primer 'My'Module'Var' namesto 'My::Module::Var'). Sprva je bilo v Perl 5.42 načrtovano, da se odstrani podpora za take ločevalnike, ki so bili prej razglašeni za zastarele, vendar je bilo v diskusijah odločeno, da se ta možnost obdrži privzeto, vendar se predvidi možnost za onemogočanje.
  • Med funkcionalnostjo „switch“ in operatorjem „~~“, ki sta bila prej označena kot zastarela in načrtovana za odstranitev, so bile vključene nove možnosti. Od izdaj Perl 5.36 in 5.42 sta funkcionalnost „switch“ in „~~“ privzeto onemogočena pri vezavi kode na različice jezika (na primer, pri navedbi „use v5.42“), lahko pa jih aktivirate z izrazi ‘use feature „switch“‘ in ‘use feature „smartmatch“‘.
  • Dodana je podpora za specifikacijo Unicode 16.0.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster