Perl 5.36.0 ede siseto wa

Lẹhin ọdun kan ti idagbasoke, itusilẹ ti ẹka iduroṣinṣin tuntun ti ede siseto Perl - 5.36 - ti ṣe atẹjade. Ni igbaradi itusilẹ tuntun, nipa awọn laini koodu 250 ti yipada, awọn ayipada kan awọn faili 2000, ati awọn olupilẹṣẹ 82 kopa ninu idagbasoke naa.

Ẹka 5.36 ti tu silẹ ni ibamu pẹlu iṣeto idagbasoke ti o wa titi ti a fọwọsi ni ọdun mẹsan sẹhin, eyiti o tumọ itusilẹ ti awọn ẹka iduroṣinṣin tuntun lẹẹkan ni ọdun ati awọn idasilẹ atunṣe ni gbogbo oṣu mẹta. Ni bii oṣu kan, o ti gbero lati tu idasilẹ atunṣe akọkọ ti Perl 5.36.1, eyiti yoo ṣe atunṣe awọn aṣiṣe pataki ti o ṣe idanimọ lakoko imuse ti Perl 5.36.0. Paapọ pẹlu itusilẹ ti Perl 5.36, atilẹyin fun ẹka 5.32 ti dawọ, fun eyiti awọn imudojuiwọn ọjọ iwaju le ṣe idasilẹ nikan ti awọn iṣoro aabo to ṣe pataki ba jẹ idanimọ. Ilana ti idagbasoke ẹka idanwo 5.37 tun ti bẹrẹ, lori ipilẹ eyiti itusilẹ iduroṣinṣin ti Perl 2023 yoo ṣẹda ni Oṣu Karun tabi Oṣu Karun ọdun 5.38, ayafi ti a ba pinnu lati yipada si nọmba 7.x.

Awọn iyipada bọtini:

  • Atilẹyin fun awọn ibuwọlu iṣẹ ti wa ni iduroṣinṣin ati pe o wa ni bayi nigbati o n ṣalaye “lilo v5.36” pragma, gbigba ọ laaye lati ṣalaye ni gbangba atokọ ti awọn oniyipada ti a lo ninu iṣẹ naa ki o ṣe adaṣe awọn iṣẹ ṣiṣe ti ṣayẹwo ati yiyan awọn iye lati titobi ti ti nwọle sile. Fún àpẹrẹ, kóòdù tí a lò tẹ́lẹ̀: sub foo {die "Ọ̀pọ̀lọpọ̀ àríyànjiyàn fún abẹ́rẹ́" àfi @_>= 2; kú "Àwọn àríyànjiyàn tó pọ̀ jù fún abẹ́rẹ́" àfi @_ <= 2; mi($osi, $ọtun) = @_; pada $ osi + $ ọtun; }

    nigba lilo awọn ibuwọlu, o le paarọ rẹ nipasẹ:

    sub foo ($osi, $ọtun) {pada $ osi + $ọtun; }

    Ti o ba pe foo pẹlu diẹ ẹ sii ju awọn ariyanjiyan meji, onitumọ yoo jabọ aṣiṣe kan. Atokọ naa tun ṣe atilẹyin oniyipada pataki “$”, eyiti o fun ọ laaye lati foju diẹ ninu awọn ariyanjiyan, fun apẹẹrẹ, “sub foo ($ osi, $, $ ọtun)” yoo gba ọ laaye lati daakọ nikan awọn ariyanjiyan akọkọ ati kẹta sinu awọn oniyipada. , nigba ti gangan mẹta gbọdọ kọja si ariyanjiyan iṣẹ.

    Sintasi Ibuwọlu tun gba ọ laaye lati pato awọn ariyanjiyan yiyan ati pato awọn iye aiyipada ti ariyanjiyan ba sonu. Fun apẹẹrẹ, nipa sisọ “sub foo ($ osi, $ ọtun = 0)” ariyanjiyan keji di iyan ati pe ti ko ba si, iye 0 ti kọja. Ninu iṣẹ iyansilẹ, o le pato awọn ọrọ lainidii, pẹlu lilo awọn oniyipada miiran. lati atokọ tabi awọn oniyipada agbaye. Pato hash tabi orun dipo oniyipada (fun apẹẹrẹ, "sub foo ($ osi, @ ọtun)") yoo gba ọkan tabi diẹ ẹ sii ariyanjiyan laaye lati kọja.

  • Ninu awọn iṣẹ ti a kede ni lilo awọn ibuwọlu, atilẹyin fun iṣẹ iyansilẹ paramita yiyan lati “@_” orun ti wa ni ikede esiperimenta ati pe yoo ja si ikilọ kan (ikilọ naa ti jade ti @_ ba lo ninu awọn iṣẹ ti a kede ni lilo sintasi tuntun). Fun apẹẹrẹ, ikilọ kan yoo han fun iṣẹ naa: lo v5.36; sub f ($x, $y = 123) {sọ "Ajiyan akọkọ jẹ $_[0]"; }
  • Iduroṣinṣin ati pe o wa nigbati o n ṣalaye pragma “lilo v5.36”, oniṣẹ infix “isa” fun ṣiṣe ayẹwo boya ohun kan jẹ apẹẹrẹ ti kilasi ti a sọ tabi kilasi ti o jade lati ọdọ rẹ. Fun apẹẹrẹ: ti ( $obj isa Package :: Orukọ ) { … }
  • Nigbati o ba n ṣalaye pragma “lilo v5.36”, sisẹ ikilọ ti ṣiṣẹ (ipo “awọn ikilọ lilo” ti mu ṣiṣẹ).
  • Nigbati o ba n ṣalaye pragma “lilo v5.36”, atilẹyin fun akiyesi aiṣe-taara fun pipe awọn nkan (“ẹya-ara aiṣe-taara”) jẹ alaabo - ọna igba atijọ ti pipe awọn nkan, ninu eyiti aaye kan lo dipo “->” (“ọna $ ohun @param" dipo "$object-> $ ọna (@param)"). Fun apẹẹrẹ, dipo “mi $cgi = CGI tuntun” o nilo lati lo “mi $cgi = CGI->tuntun”.
  • Nigbati o ba n ṣalaye pragma “lilo v5.36”, atilẹyin fun iṣafarawe awọn akojọpọ onidiwọn pupọ ati hashes ni aṣa Perl 4 (“ẹya-ara multidimensional”) jẹ alaabo, gbigba itọkasi awọn bọtini pupọ lati tumọ si ọna agbedemeji (fun apẹẹrẹ, “ $hash{1, 2}”) ti yipada si "$hash{darapọ($;, 1, 2)}").
  • Nigbati o ba n ṣalaye pragma “lilo v5.36”, atilẹyin fun ẹrọ eka esiperimenta (“iyipada ẹya-ara”), ti o jọra si iyipada ati awọn alaye ọran, jẹ alaabo (Perl nlo ohun ti a fun ati nigbati awọn koko-ọrọ). Lati lo ẹya yii, ti o bẹrẹ lati Perl 5.36 o nilo lati sọ ni pato 'lilo ẹya “yipada”’, ati pe nigbati o ba pato “ẹya lilo” kii yoo ṣiṣẹ laifọwọyi.
  • Atilẹyin fun awọn kilasi ihuwasi afikun ni awọn biraketi onigun mẹrin inu awọn ikosile deede ti jẹ imuduro ati pe o wa nipasẹ aiyipada. Ẹya naa n gba ọ laaye lati ṣe awọn ere-kere nipa lilo awọn ofin ilọsiwaju fun ikorita, iyasoto, ati iṣọkan ti awọn ohun kikọ. Fun apẹẹrẹ, '[A-Z - W]' - awọn kikọ lati A si Z laisi W.
  • Atilẹyin fun awọn iṣẹ-ṣiṣe "(?", "()", "{}" ati "[]" jẹ imuduro apakan ati pe o wa nipasẹ aiyipada; o le lo awọn aami "" "", "" "", ati bẹbẹ lọ fun apẹẹrẹ. , "qr"pat"".
  • Pipe iṣẹ too laisi awọn ariyanjiyan jẹ eewọ, eyiti yoo ja si ni aṣiṣe. @a = too @ sofo; # yoo tesiwaju @a = too; # aṣiṣe yoo wa ni titẹ @a = too(); # aṣiṣe yoo wa ni titẹ
  • A ti dabaa asia laini aṣẹ tuntun “-g”, eyiti o jẹ ki ipo ikojọpọ gbogbo faili lapapọ, dipo laini laini. Iṣe ti asia jẹ iru si itọkasi "-0777".
  • Atilẹyin fun sipesifikesonu Unicode ti ni imudojuiwọn si ẹya 14.0.
  • Pese mimu mimu ni kiakia ti awọn imukuro aaye lilefoofo (SIGFPE) ti o jọra si awọn itaniji miiran bii SIGSEGV, gbigba ọ laaye lati di awọn olutọju tirẹ fun SIGFPE nipasẹ $SIG{FPE}, fun apẹẹrẹ ti njade nọmba laini nibiti iṣoro naa ti waye.
  • Awọn ẹya imudojuiwọn ti awọn modulu ti o wa ninu package ipilẹ.
  • Awọn iṣapeye iṣẹ ti a ṣafikun. Agbara lati ṣafipamọ awọn bọtini hash nla diẹ sii daradara laisi lilo awọn tabili okun ti o pin ni a ti pese. Iṣẹ ṣiṣe ti ṣiṣẹda awọn iye iwọn tuntun ti ni ilọsiwaju ni pataki, fun apẹẹrẹ koodu atẹle n ṣiṣẹ ni iyara 30%: $str = "A" x 64; fun (0..1_000_000) {@svs = pipin //, $str }
  • Koodu onitumọ bẹrẹ lilo diẹ ninu awọn itumọ ti asọye ni boṣewa C99. Ilé Perl ni bayi nilo alakojọ ti o ṣe atilẹyin C99. Atilẹyin fun kikọ ni awọn ẹya agbalagba ti MSVC++ (ṣaaju-VC12) ti dawọ duro. Atilẹyin ti a ṣafikun fun kikọ ni Microsoft Visual Studio 2022 (MSVC++ 14.3).
  • Atilẹyin fun AT&T UWIN, DOS/DJGPP ati awọn iru ẹrọ Novell NetWare ti dawọ duro.

orisun: opennet.ru

Fi ọrọìwòye kun