Disponebla programlingvo Perl 5.36.0

Post jaro da evoluo, la eldono de nova stabila branĉo de la Perl programlingvo - 5.36 - estis publikigita. En la preparado de la nova eldono, proksimume 250 mil linioj de kodo estis ŝanĝitaj, la ŝanĝoj influis 2000 dosierojn, kaj 82 programistoj partoprenis en la evoluo.

Branĉo 5.36 estis publikigita laŭ la fiksa disvolva horaro aprobita antaŭ naŭ jaroj, kio implicas la liberigon de novaj stabilaj branĉoj unufoje jare kaj korektajn eldonojn ĉiujn tri monatojn. Post ĉirkaŭ unu monato, estas planite liberigi la unuan korektan eldonon de Perl 5.36.1, kiu korektos la plej signifajn erarojn identigitajn dum la efektivigo de Perl 5.36.0. Kune kun la liberigo de Perl 5.36, subteno por la branĉo 5.32 estis nuligita, por kiu estontaj ĝisdatigoj povas esti publikigitaj nur se kritikaj sekurecaj problemoj estas identigitaj. La procezo de disvolvi la eksperimentan branĉon 5.37 ankaŭ komenciĝis, surbaze de kiu stabila eldono de Perl 2023 estos formita en majo aŭ junio 5.38, krom se decido ŝanĝi al numerado 7.x.

Ŝlosilaj ŝanĝoj:

  • Subteno por funkciaj subskriboj estis stabiligita kaj nun disponeblas kiam oni specifigas la pragmaron "uzu v5.36", ebligante al vi eksplicite difini la liston de variabloj uzataj en la funkcio kaj aŭtomatigi la operaciojn de kontrolado kaj asignado de valoroj el aro de. envenantaj parametroj. Ekzemple, antaŭe uzata kodo: sub foo { die "Tro multaj argumentoj por subrutino" krom se @_ >= 2; die "Tro malmultaj argumentoj por subrutino" krom se @_ <= 2; mia($maldekstre, $dekstre) = @_; reveni $maldekstren + $dekstren; }

    uzante subskribojn, ĝi povas esti anstataŭigita per:

    sub foo ($maldekstre, $dekstre) { return $maldekstre + $dekstre; }

    Se vi nomas foo kun pli ol du argumentoj, la interpretisto ĵetos eraron. La listo ankaŭ subtenas specialan variablon "$", kiu ebligas al vi ignori kelkajn el la argumentoj, ekzemple, "sub foo ($maldekstre, $, $dekstre)" permesos al vi kopii nur la unuan kaj trian argumentojn en variablojn. , dum ekzakte tri devas esti pasitaj al la funkcio argumento.

    La subskriba sintakso ankaŭ permesas vin specifi laŭvolajn argumentojn kaj specifi defaŭltajn valorojn se argumento mankas. Ekzemple, specifante "sub foo ($maldekstra, $dekstra = 0)" la dua argumento fariĝas nedeviga kaj se ĝi forestas, la valoro estas pasita 0. En la asigno operacio, vi povas specifi arbitrajn esprimojn, inkluzive de uzado de aliaj variabloj. el la listo aŭ tutmondaj variabloj. Specifante hash aŭ tabelo anstataŭ variablo (ekzemple, "sub foo ($maldekstre, @dekstra)") permesos unu aŭ pli da argumentoj esti pasitaj.

  • En funkcioj deklaritaj uzante signaturojn, subteno por plia parametra asignado de la tabelo "@_" estas deklarita eksperimenta kaj rezultigos averton (la averto estas eligita nur se @_ estas uzata en funkcioj deklaritaj uzante la novan sintakson). Ekzemple, averto estos montrata por la funkcio: uzu v5.36; sub f ($x, $y = 123) { diru "La unua argumento estas $_[0]"; }
  • Stabiligita kaj havebla dum specifado de la pragmaro "use v5.36", la infiksa operatoro "isa" por kontroli ĉu objekto estas kazo de la specifita klaso aŭ klaso derivita de ĝi. Ekzemple: if( $obj estas Pako::Nomo) { … }
  • Kiam oni specifas la pragmaron "uzu v5.36", averta prilaborado estas ebligita (la reĝimo "uzu avertojn" estas aktivigita).
  • Kiam oni specifas la pragmon "uzu v5.36", subteno por nerekta skribmaniero por voki objektojn ("trajto nerekta") estas malŝaltita - malmoderna maniero voki objektojn, en kiu spaco estas uzata anstataŭ "->" ("metodo $ objekto @param" anstataŭ "$objekto-> $metodo(@param)"). Ekzemple, anstataŭ "mia $cgi = nova CGI" vi devas uzi "mia $cgi = CGI->nova".
  • Kiam oni specifas la pragmaron "uzu v5.36", subteno por kopiado de plurdimensiaj tabeloj kaj hashoj en la stilo Perl 4 ("trajto plurdimensia") estas malŝaltita, permesante la indikon de pluraj ŝlosiloj esti tradukita en mezan tabelon (ekzemple, " $hash{1, 2}") estis konvertita al "$hash{join($;, 1, 2)}").
  • Kiam oni specifas la pragmaron "uzu v5.36", subteno por la eksperimenta disbranĉiga mekanismo ("funkcia ŝaltilo"), simila al la ŝaltilo kaj kazo-deklaroj, estas malŝaltita (Perl uzas la donitajn kaj kiam ŝlosilvortojn). Por uzi ĉi tiun funkcion, komencante de Perl 5.36, vi devas eksplicite specifi 'uzu funkcion "ŝaltilo"', kaj se vi specifas "uzi version", ĝi ne plu estos aŭtomate ebligita.
  • Subteno por pliaj signoklasoj inter kvadrataj krampoj ene de regulaj esprimoj estis stabiligita kaj disponeblas defaŭlte. La funkcio permesas fari matĉojn uzante altnivelajn regulojn por la intersekco, ekskludo kaj kuniĝo de aroj de signoj. Ekzemple, '[AZ - W]' - signoj de A ĝis Z ekskludante W.
  • Subteno por la operacioj "(?", "( )", "{ }" kaj "[ ]" estas parte stabiligita kaj disponebla defaŭlte; vi povas uzi la simbolojn "" "", "" "", ktp. Ekzemple. , "qr"frapeto "".
  • Voki la ordigan funkcion sen argumentoj estas malpermesita, kio nun rezultigos eraron. @a = ordigi @malplena; # daŭrigos @a = ordigi; # eraro estos presita @a = sort(); # eraro estos presita
  • Nova komandlinia flago "-g" estis proponita, kiu ebligas la reĝimon de ŝarĝo de la tuta dosiero kiel tuto, prefere ol linio post linio. La ago de la flago estas simila al la indiko "-0777".
  • Subteno por la Unikoda specifo estis ĝisdatigita al versio 14.0.
  • Provizas tujan uzadon de glitkomaj esceptoj (SIGFPE) simila al aliaj alarmoj kiel SIGSEGV, permesante vin ligi viajn proprajn prizorgilojn por SIGFPE per $SIG{FPE}, ekzemple eligante la linionumeron kie la problemo okazis.
  • Ĝisdatigitaj versioj de moduloj inkluzivitaj en la baza pako.
  • Aldonitaj agado-optimumoj. La kapablo stoki grandajn hash-ŝlosilojn pli efike sen uzi komunajn kordtablojn estis disponigita. La agado krei novajn skalarajn valorojn estis signife plibonigita, ekzemple la sekva kodo nun funkcias 30% pli rapide: $str = "A" x 64; por (0..1_000_000) { @svs = split //, $str }
  • La interpretistkodo komencis uzi kelkajn el la konstrukcioj difinitaj en la C99-normo. Konstruado de Perl nun postulas kompililon kiu subtenas C99. Subteno por konstruado en pli malnovaj versioj de MSVC++ (antaŭ-VC12) estis nuligita. Aldonita subteno por konstruado en Microsoft Visual Studio 2022 (MSVC++ 14.3).
  • Subteno por AT&T UWIN, DOS/DJGPP kaj Novell NetWare platformoj estis nuligita.

fonto: opennet.ru

Aldoni komenton