Pēc gada izstrādes ir publicēta jaunā stabilā Perl programmēšanas valodas versija – 5.42. Jaunā izlaiduma sagatavošanas laikā tika mainīti apmēram 280 000 koda rindiņu (bez dokumentācijas un automātiski ģenerēta koda – 93 tūkstoši), izmaiņas attiecās uz 1500 failiem, un izstrādē piedalījās 64 izstrādātāji.
Versija 5.42 ir izlaista saskaņā ar apstiprināto grafiku, kas tika noteikts pirms divpadsmit gadiem, paredzot jaunu stabilu versiju izdošanu reizi gadā un labojumu izlaidumus – reizi trīs mēnešos. Aptuveni pēc mēneša plānots izlaist pirmo labojumu Perl 5.42.1, kurā tiks novērstas vissvarīgākās kļūdas, kas tika atklātas, ieviešot Perl 5.42.0. Tūlīt pēc Perl 5.42 izdošanas tiek pārtraukta atbalsta sniegšana versijai 5.38, kurai atjauninājumi nākotnē var tikt izlaisti tikai kritisku drošības problēmu gadījumā. Drīzumā sāksies eksperimentālās versijas 5.43 izstrāde, uz kuras pamata 2026. gada jūnijā tiks veidota stabila Perl 5.44 versija, ja netiks pieņemts lēmums pārgājienam uz num- cerēšana 7.x.
Galveno izmaiņu saraksts:
- Tika pievienoti eksperimentālie sarakstu apstrādes operatori – «any { BLOCK } @list» un «all { BLOCK } @list», kas atgādina operatoru «grep { BLOCK } @list», bet var atgriezt tikai true vai false vērtības. Operators «all» atgriež «true», ja nosacījums ir izpildīts visiem saraksta elementiem, bet operators «any» – ja nosacījums ir izpildīts vismaz vienam elementam. Operatoru funkcionalitāte ir līdzīga funkcijām no moduļa List::Util, bet iebūvētās versijas ir ātrākas un patērē mazāk atmiņas. use v5.42; use feature 'keyword_all'; no warnings 'experimental::keyword_all'; my @numbers = … if ( all { $_ % 2 == 0 } @numbers ) { say 'All the numbers are even'; }
- Lai iekšējās klasēs definētajiem laukiem, ir ieviests atribūts «:writer», kas tiek izmantots, lai automātiski izveidotu metodi, kas ieraksta mainīgā vērtību lauka pašreizējā objekta instancē. class Point { field $x :reader :writer :param; field $y :reader :writer :param; } my $p = Point->new( x => 20, y => 40 ); $p->set_x(60);
- Pievienota atbalsta noteikšanai leksiskajām metodēm, kas līdzīgi leksisko apakšprogrammu definīcijai („lexical_subs”), ļauj izveidot metodes, kas pieejamas tikai tajā leksiskajā redzamībā, kurā tās tika izveidotas. Lai izveidotu līdzīgas metodes, tiek izmantota izteiksme „my metodē_vārds”.
- Pievienots operators „->&”, kas ļauj izsaukt apakšprogrammas, kas atrodas leksiskajā redzamībā, it kā tās būtu metodes. Kopā ar leksisko metožu definēšanas iespēju jaunais operators īsteno funkcionalitāti, kas līdzīga privātām metodēm.
- Pievienots piešķiršanas operators „A ^^= B”, kas veic operāciju „A = A XOR B”.
- Pievienota pragmas „source::encoding” definīcija, kas nosaka avota koda kodējumu. ASCII kodējamam kodam var norādīt „use source::encoding ‘ascii'” (pēc noklusējuma), bet UTF-8 - „use source::encoding ‘utf8’”, turklāt pēdējā izteiksme ir ekvivalenta izteiksmei „use utf8”. Interpretators izvadīs kļūdu, ja kodā, kas marķēts kā ASCII, ir UTF-8 simboli vai ja kodā, kas marķēts kā UTF-8, tiek izmantotas escape secības „\x{}”. Lai atspējotu koda daļas pārbaudi, var izmantot vērtību „use no source::encoding”. Praksē pievienotā pragma var izrādīties noderīga, lai identificētu gadījumus, kad izstrādātājs aizmirsis norādīt „use utf8” kodam, kas ir UTF-8 kodē.
- Nosaukumu telpai „CORE::” pievienota funkcija chdir(). Piemēram, tagad uz šo funkciju var atsaukties kā „&CORE::chdir($dir)” vai „my $ref = \&CORE::chdir; $ref->($dir)”.
- Pievienota izteiksme ‘no feature „apostrophe_as_package_separator”‘, lai atspējotu atbalstu izmantošanai simbolam „‘” kā pakotņu nosaukumu separators (piemēram, „My’Module’Var” vietā „My::Module::Var”). Sākotnēji Perl 5.42 plānots bija noņemt atbalstu šādiem separatoriem, kas iepriekš bija pasludināti par novecojušiem, taču diskusiju laikā tika nolemts saglabāt šo iespēju pēc noklusējuma, bet nodrošināt iespēju to atspējot.
- At the number of returnable features, the functionality of ‘switch’ and the operator ‘~~’ have been translated, which were previously marked as deprecated and planned for removal. Starting from the releases of Perl 5.36 and 5.42, the features ‘switch’ and ‘~~’ are disabled by default when binding the code to language versions (for example, when specifying ‘use v5.42’), but can be activated using the expressions ‘use feature «switch»’ and ‘use feature «smartmatch»’.
- Added support for Unicode 16.0 specification.
Avots: opennet.lv
