Etter ett Ă„rs utvikling er det nye stabile utgivelsen av programmeringssprĂ„ket Perl â 5.42. I forberedelsene til den nye utgivelsen ble omtrent 280 000 linjer med kode endret (uten dokumentasjon og automatisk generert kode â 93 000), og endringene berĂžrte 1500 filer, med 64 utviklere involvert.
Versjon 5.42 ble sluppet i henhold til den fastsatte utviklingsplanen som ble godkjent for tolv Är siden, som har en Ärlig utgivelse av nye stabile versjoner og korrigerende utgivelser hver tredje mÄned. FÞrste korrigerende utgivelse, Perl 5.42.1, er planlagt for utgivelse om cirka en mÄned, hvor de mest betydelige feilene identifisert ved implementeringen av Perl 5.42.0 vil bli rettet. Samtidig med lanseringen av Perl 5.42, ble stÞtten for versjon 5.38 opphÞrt, og fremtidige oppdateringer for den versjonen vil kun bli gitt hvis kritiske sikkerhetsproblemer oppdages. Prosessen med Ä utvikle den eksperimentelle versjonen 5.43 vil starte snart, og en stabil utgivelse av Perl 5.44 vil bli formet i juni 2026, med mindre det blir besluttet Ä gÄ over til versjonsnummerering 7.x.
NĂžkkelendringer:
- Eksperimentelle operatorer for listebehandling er lagt til â «any { BLOCK } @list» og «all { BLOCK } @list», som ligner pĂ„ operatoren «grep { BLOCK } @list», men kan kun returnere verdiene true eller false. Operatoren «all» returnerer «true» hvis betingelsen er oppfylt for alle elementene i listen, mens operatoren «any» returnerer «true» hvis betingelsen er oppfylt for minst ett element. Funksjonaliteten til operatorene ligner funksjonene fra modulen List::Util, men de innebygde alternativene er raskere og bruker mindre minne. use v5.42; use feature 'keyword_all'; no warnings 'experimental::keyword_all'; my @numbers = ⊠if ( all { $_ % 2 == 0 } @numbers ) { say "Alle tallene er jevne"; }
- For feltene definert inne i klassen er attributtet «:writer» implementert, som brukes til automatisk Ä opprette en metode som skriver verdien til variabelen i feltet for den nÄvÊrende klassenes instans. class Point { field $x :reader :writer :param; field $y :reader :writer :param; } my $p = Point->new( x => 20, y => 40 ); $p->set_x(60);
- StÞtte for Ä definere leksikalske metoder er lagt til, som pÄ samme mÄte som definisjonen av leksikalske delprogrammer («lexical_subs»), lar en lage metoder som kun er tilgjengelige i den leksikale synligheten til blokken de ble opprettet i. For Ä lage slike metoder brukes uttrykket «my metode_navn».
- OperatÞren «->&» er lagt til, og lar en kalle delprogrammer som er i leksisk synlighet, som om de var metoder. I kombinasjon med muligheten for Ä definere leksikalske metoder implementerer den nye operatÞren funksjonalitet som ligner pÄ private metoder.
- TildelingsoperatÞren «A ^^= B» er lagt til, som utfÞrer operasjonen «A = A XOR B».
- Pragmaen «source::encoding», som definerer koding av kildekoden, er lagt til. For kode i ASCII-koding kan en angi «use source::encoding 'ascii'» (som standard), mens for UTF-8 kan en bruke «use source::encoding 'utf8'», der det siste uttrykket er ekvivalent med «use utf8». Tolken vil gi en feil hvis det i koden merket som ASCII finnes UTF-8-tegn, eller hvis i koden merket som UTF-8 brukes escape-sekvenser «\x{}». For Ä deaktivere sjekken av en del av koden kan en bruke verdien «use no source::encoding». I praksis kan den nye pragmaen vÊre nyttig for Ä avdekke tilfeller hvor utvikleren har glemt Ä spesifisere «use utf8» for kode i UTF-8-koding.
- Funksjonen chdir() er lagt til navneomrÄdet «CORE::». For eksempel kan en nÄ referere til denne funksjonen som «&CORE::chdir($dir)» eller «my $ref = \&CORE::chdir; $ref->($dir)».
- Uttrykket âno feature «apostrophe_as_package_separator»â er lagt til for Ă„ deaktivere stĂžtten for Ă„ bruke symbolet â â som pakke-separator (for eksempel «MyâModuleâVar» i stedet for «My::Module::Var»). Opprinnelig var det planlagt Ă„ fjerne stĂžtten for slike separatorer i Perl 5.42, som tidligere ble erklĂŠrt foreldet, men under diskusjonen ble det besluttet Ă„ beholde denne muligheten som standard, men Ă„ gi en opsjon for Ă„ deaktivere den.
- Funksjonaliteten til «switch» og operatoren «~~» har blitt inkludert i de returnerte mulighetene, som tidligere ble merket som utdatert og var planlagt fjernet. Fra og med utgivelsene av Perl 5.36 og 5.42 er mulighetene «switch» og «~~» som standard deaktivert nĂ„r koden bindes til versjoner av sprĂ„ket (for eksempel ved Ă„ angi «use v5.42»), men kan aktiveres med uttrykkene âuse feature «switch»â og âuse feature «smartmatch»â.
- StĂžtte for Unicode 16.0-spesifikasjonen er lagt til.
Kilde: opennet.ru
