Dostupan je programski jezik Perl 5.42

Nakon godinu dana razvoja objavljen je novi stabilni izdanak programskog jezika Perl — 5.42. Prilikom pripreme novog izdanja promijenjeno je oko 280 tisuća redaka koda (bez dokumentacije i automatski generiranog koda — 93 tisuće), a promjene su se odnosile na 1500 datoteka, dok je u razvoju sudjelovalo 64 programera.

Grana 5.42 izdana je prema odobrenom fiksnom rasporedu razvoja, koji predviđa izdavanje novih stabilnih grana jednom godišnje i ispravaka — svaka tri mjeseca. Oko mjesec dana planira se objaviti prvi ispravak Perl 5.42.1, koji će ispraviti najznačajnije greške otkrivene tijekom implementacije Perl 5.42.0. Istodobno s izlaskom Perl 5.42, podrška za granu 5.38 se obustavlja, a ažuriranja za nju bit će izdana u budućnosti samo u slučaju pronalaska kritičnih problema s sigurnošću. Uskoro započinje proces razvoja eksperimentalne grane 5.43, na temelju koje će u lipnju 2026. godine biti formirano stabilno izdanje Perl 5.44, osim ako se ne donese odluka o prelasku na numeraciju 7.x.

Ključne promjene:

  • Dodani su eksperimentalni operatori obrade lista — «any { BLOCK } @list» i «all { BLOCK } @list», koji podsjećaju na operator «grep { BLOCK } @list», ali mogu vraćati samo vrijednosti true ili false. Operator «all» vraća «true» kada je uvjet ispunjen za sve elemente liste, dok operator «any» vraća «true» kada je uvjet ispunjen za barem jedan element. Funkcionalnost operatora slična je funkcijama iz modula List::Util, ali su ugrađene varijante brže i troše manje memorije. use v5.42; use feature ‘keyword_all’; no warnings ‘experimental::keyword_all’; my @numbers = … if ( all { $_ % 2 == 0 } @numbers ) { say «Svi brojevi su parni»; }
  • Za definirane unutar klase polja implementiran je atribut «:writer», koji se koristi za automatsko stvaranje metode koja zapisuje vrijednost varijable u polje za trenutni primjerak klase. 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 podrška za definiranje leksikálních metoda, koja analogno definiranju leksikálních podprograma („lexical_subs“), omogućava stvaranje metoda koji su dostupni samo unutar leksikalne vidljivosti bloka u kojem su stvoreni. Za stvaranje takvih metoda koristi se izraz „my ime_metoda“.
  • Dodana je operator „->&“, koji omogućava pozivanje podprograma unutar leksikalne vidljivosti, kao da su to metode. U kombinaciji s mogućnošću definiranja leksikálních metoda, novi operator ostvaruje funkcionalnost sličnu privatnim metodama.
  • Dodana je operator dodjele „A ^^= B“, koja izvršava operaciju „A = A XOR B“.
  • Dodana je pragma „source::encoding“, koja određuje kodiranje izvornog koda. Za kod u ASCII kodiranju može se navesti „use source::encoding 'ascii'“ (zadano), a za UTF-8 — „use source::encoding 'utf8'“, pri čemu je posljednji izraz ekvivalentan izrazu „use utf8“. Interpreter će izbaciti grešku ako se u kodu označenom kao ASCII nalaze UTF-8 znakovi, ili ako se u kodu označenom kao UTF-8 koriste escape sekvence „\x{}“. Za isključivanje provjere određenog dijela koda može se koristiti vrijednost „use no source::encoding“. U praksi, dodana pragma može biti korisna za otkrivanje slučajeva kada je programer zaboravio navesti „use utf8“ za kod u UTF-8 kodiranju.
  • U prostor imena „CORE::“ dodana je funkcija chdir(). Na primjer, sada se ovoj funkciji može pristupiti kao „&CORE::chdir($dir)“ ili „my $ref = \&CORE::chdir; $ref->($dir)“.
  • Dodano je izrazenje ‘no feature „apostrophe_as_package_separator“‘ za isključivanje podrške za korištenje znaka „'“ kao razdjelnik imena paketa (primjerice, „My'Module'Var“ umjesto „My::Module::Var“). Izvorno je u Perl 5.42 bilo planirano uklanjanje podrške za takve razdjeljnike, koji su prethodno deklarirani kao zastarjeli, no tijekom rasprava odlučeno je zadržati ovu mogućnost prema zadanim postavkama, uz mogućnost isključivanja.
  • Funkcionalnost „switch“ i operator „~~“, koji su ranije označeni kao zastarjeli i planirani za uklanjanje, sada su uključeni u broj vraćenih mogućnosti. Počevši od verzija Perl 5.36 i 5.42, mogućnosti „switch“ i „~~“ su prema zadanim postavkama onemogućene prilikom vezivanja koda uz verzije jezika (na primjer, kada navedete „use v5.42“), ali se mogu aktivirati izrazima 'use feature „switch“' i 'use feature „smartmatch“'.
  • Dodana je podrška za specifikaciju Unicode 16.0.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster