PĂ€rast aasta kestnud arendust on vĂ€lja antud uus stabiilne Perl programmeerimiskeele versioon â 5.42. Uue vĂ€ljaande ettevalmistamise kĂ€igus muudeti umbes 280 000 koodirida (ilma dokumentatsiooni ja automaatselt genereeritud koodita â 93 000), muudatused puudutasid 1500 faili ning arenduses osales 64 arendajat.
Versioon 5.42 vĂ€lja anti vastavalt kinnitatud kaheteistkĂŒmne aasta eest korraldatud arenduskavale, mis hĂ”lmab uute stabiilsete versioonide vĂ€ljaandmist kord aastas ja paranduste lĂ€biviimist iga kolme kuu tagant. Umbes kuu pĂ€rast plaanitakse vĂ€lja anda esimene parandav versioon Perl 5.42.1, kus parandatakse tĂ€htsamaid vigu, mis avastati Perl 5.42.0 rakendamise kĂ€igus. Koos Perl 5.42 vĂ€ljaandmisega lĂ”petatakse versiooni 5.38 tugi, millele uuendusi vĂ”ib tulevikus vĂ€lja anda vaid kriitiliste turvaprobleemide ilmnemisel. Peagi algab eksperimendiversiooni 5.43 arendus, mille baasil kujuneb juunis 2026 vĂ€lja stabiilne versioon Perl 5.44, kui ei otsustata ĂŒleminekuks versiooninumbrile 7.x.
Peamised muutused:
- Kasutusele on vĂ”etud eksperimentaalsed loendi töötlemise operaatorid â «any { BLOCK } @list» ja «all { BLOCK } @list», mis meenutavad operaatorit «grep { BLOCK } @list», kuid vĂ”ivad tagastada vaid vÀÀrtused true vĂ”i false. Operaator «all» tagastab «true», kui tingimus kehtib kĂ”ikidele loendi elementidele, ja operaator «any» â kui see kehtib vĂ€hemalt ĂŒhe elemendi puhul. Operaatorite funktsionaalsus on sarnane List::Util mooduli funktsioonidega, kuid sisseehitatud variandid on kiiremad ja vĂ€hem mĂ€lukallid. use v5.42; use feature 'keyword_all'; no warnings 'experimental::keyword_all'; my @numbers = ⊠if ( all { $_ % 2 == 0 } @numbers ) { say 'KĂ”ik numbrid on paaris'; }
- Klassi sees mÀÀratletud vÀljadele on rakendatud atribuut «:writer», mida kasutatakse meetodi automaatseks loomiseks, mis salvestab muutuja vÀÀrtuse klassi praeguse eksemplari vÀljadele. class Point { field $x :reader :writer :param; field $y :reader :writer :param; } my $p = Point->new( x => 20, y => 40 ); $p->set_x(60);
- Lisatud toimetamisviiside mÀÀramise tugi, mis sarnaselt lexikaalsete alamprogrammide (âlexical_subsâ) mÀÀramisega, vĂ”imaldab luua meetodeid, mis on kĂ€ttesaadavad ainult neis loomisala leksikaalses nĂ€htavuses. Selliste meetodite loomiseks kasutatakse vĂ€ljendit âmy nimi_meetodâ.
- Lisatud operaator â->&â, mis vĂ”imaldab kutsuda alamprogramme, mis asuvad leksikaalses nĂ€htavuses, justkui oleks nad meetodid. Koos leksikaalsete meetodite mÀÀramise vĂ”imalusega realiseerib uus operaator funktsionaalsuse, mis sarnaneb privaatsete meetoditega.
- Lisatud mÀÀramisoperaator âA ^^= Bâ, mis tĂ€idab operatsiooni âA = A XOR Bâ.
- Lisatud pragma âsource::encodingâ, mis mÀÀrab allika koodi kodeeringu. ASCII kodeeringuga koodi jaoks saab mÀÀrata âuse source::encoding 'ascii'â (vaikimisi), ja UTF-8 puhul - âuse source::encoding 'utf8'â, samal ajal kui viimane vĂ€ljend on ekvivalentne vĂ€ljendiga âuse utf8â. TĂ”lgendaja annab tĂ”rke, kui ASCII mĂ€rgistatud koodis esinevad UTF-8 sĂŒmbolid, vĂ”i kui UTF-8 mĂ€rgistatud koodis kasutatakse escape-jĂ€rjestusi â\x{}â. Koodi osa kontrollimise keelamiseks vĂ”ib kasutada vÀÀrtust âuse no source::encodingâ. Praktikas vĂ”ib lisatud pragma osutuda kasulikuks, et tuvastada juhtumeid, kus arendaja on unustanud mÀÀrata âuse utf8â UTF-8 kodeeringus koodile.
- Nime ruumi âCORE::â on lisatud funktsioon chdir(). NĂ€iteks on nĂŒĂŒd vĂ”imalik sellele funktsioonile viidata kui â&CORE::chdir($dir)â vĂ”i âmy $ref = \&CORE::chdir; $ref->($dir)â.
- Lisatud vĂ€ljend âno feature «apostrophe_as_package_separator»â, et keelata toetuse pakkumine sĂŒmboli â'â kasutamiseks paketi nimede eraldajana (nĂ€iteks âMy'Module'Varâ asemel âMy::Module::Varâ). Algselt kavandati Perl 5.42 toetuse eemaldamine selliste eraldajate jaoks, mis olid varem kuulutatud vananenuks, kuid arutelude kĂ€igus otsustati hoida see vĂ”imalus vaikimisi alles, kuid ette nĂ€ha vĂ”imalus keelamiseks.
- Tagasi on toodud funktsionaalsus «switch» ja operaator «~~», mis varem olid tĂ€histatud vananenud ja plaanitud eemaldamiseks. Alates Perl 5.36 ja 5.42 vĂ€ljaannetest on «switchi» ja «~~» omadused vaikimisi keelatud, kui kood on seotud keele versioonidega (nt «use v5.42»), kuid need saavad aktiveerida vĂ€ljenditega âuse feature «switch»â ja âuse feature «smartmatch»â.
- Lisatud tugi Unicode 16.0 spetsifikatsioonile.
Allikas: opennet.ru
