Lang pwogramasyon Perl 5.36.0 disponib

Apre yon ane devlopman, yo pibliye yon nouvo branch ki estab nan langaj pwogram Perl - 5.36. Nan prepare nouvo lage a, apeprè 250 mil liy kòd yo te chanje, chanjman yo te afekte 2000 dosye, ak 82 devlopè te patisipe nan devlopman an.

Branch 5.36 te lage an akò ak orè devlopman fiks yo te apwouve nèf ane de sa, ki vle di lage nouvo branch ki estab yon fwa chak ane ak degaje korektif chak twa mwa. Nan apeprè yon mwa, li planifye pou lage premye lage korektif Perl 5.36.1, ki pral korije erè ki pi enpòtan yo idantifye pandan aplikasyon Perl 5.36.0. Ansanm ak lage Perl 5.36, sipò pou branch 5.32 la te sispann, pou ki dènye mizajou nan lavni yo ka lage sèlman si yo idantifye pwoblèm sekirite kritik. Pwosesis pou devlope branch eksperimantal 5.37 la te kòmanse tou, sou baz yo pral fòme yon lage ki estab nan Perl 2023 nan mwa me oswa jen 5.38, sof si yo pran yon desizyon pou chanje nan nimewo 7.x.

Chanjman kle:

  • Sipò pou siyati fonksyon yo te estabilize epi li disponib kounye a lè w espesifye pragma "itilize v5.36", sa ki pèmèt ou defini klèman lis varyab yo itilize nan fonksyon an ak otomatize operasyon yo nan tcheke ak plase valè soti nan yon etalaj de. paramèt fèk ap rantre. Pa egzanp, kòd te itilize deja: sub foo { mouri "Twòp agiman pou souroutine" sof si @_ >= 2; mouri "Twò kèk agiman pou souroutine" sof si @_ <= 2; mwen($gòch, $dwat) = @_; retounen $gòch + $dwat; }

    lè w ap itilize siyati, li ka ranplase pa:

    sub foo ($gòch, $dwat) { retounen $gòch + $dwat; }

    Si ou rele foo ak plis pase de agiman, entèprèt la ap voye yon erè. Lis la sipòte tou yon varyab espesyal "$", ki pèmèt ou inyore kèk nan agiman yo, pou egzanp, "sub foo ($left, $, $right)" pral pèmèt ou kopye sèlman premye ak twazyèm agiman yo nan varyab. , pandan ke egzakteman twa dwe pase nan agiman an fonksyon.

    Sentaks siyati a pèmèt ou tou presize agiman si ou vle epi presize valè default si yon agiman manke. Pou egzanp, lè w espesifye "sub foo ($gòch, $dwat = 0)" dezyèm agiman an vin opsyonèl epi si li absan, yo pase valè 0. Nan operasyon plasman an, ou ka presize ekspresyon abitrè, tankou lè l sèvi avèk lòt varyab. soti nan lis la oswa varyab mondyal yo. Espesifye yon hash oswa yon etalaj olye de yon varyab (pa egzanp, "sub foo ($left, @right)") pral pèmèt youn oswa plizyè agiman yo dwe pase.

  • Nan fonksyon yo deklare lè l sèvi avèk siyati, sipò pou plasman paramèt si ou vle nan etalaj "@_" la deklare eksperimantal epi sa pral lakòz yon avètisman (avètisman an bay sèlman si @_ yo itilize nan fonksyon yo deklare lè l sèvi avèk nouvo sentaks la). Pou egzanp, yon avètisman pral parèt pou fonksyon an: itilize v5.36; sub f ($x, $y = 123) { di "Premye agiman an se $_[0]"; }
  • Estabilize ak disponib lè espesifye "itilize v5.36" pragma a, operatè enfiks "isa" pou tcheke si yon objè se yon egzanp nan klas la espesifye oswa yon klas ki sòti nan li. Pa egzanp: if( $obj isa Package::Name ) { … }
  • Lè w espesifye "itilize v5.36" pragma a, pwosesis avètisman pèmèt (se mòd "itilize avètisman" aktive).
  • Lè w espesifye pragma "itilize v5.36", sipò pou notasyon endirèk pou rele objè ("karakteristik endirèk") enfim - yon fason demode pou rele objè, kote yo itilize yon espas olye pou yo "->" ("metòd $ objè @param" olye de "$objè-> $metòd(@param)"). Pou egzanp, olye pou yo "$cgi mwen = nouvo CGI" ou bezwen sèvi ak "$cgi mwen = CGI->nouvo".
  • Lè w espesifye pragma "itilize v5.36", sipò pou imite etalaj miltidimansyonèl ak hash nan style Perl 4 ("karakteristik miltidimansyon") enfim, sa ki pèmèt endikasyon plizyè kle yo dwe tradui nan yon etalaj entèmedyè (pa egzanp, " $hash{1, 2}") te konvèti nan "$hash{join($;, 1, 2)}").
  • Lè espesifye "itilize v5.36" pragma a, sipò pou mekanis eksperimantal branche ("switch karakteristik"), menm jan ak switch la ak deklarasyon ka, se enfim (Perl sèvi ak mo kle yo bay ak lè). Pou itilize karakteristik sa a, kòmanse ak Perl 5.36, ou dwe presize klèman 'itilize karakteristik "switch"', epi si ou presize "itilize vèsyon", li p'ap otomatikman aktive ankò.
  • Sipò pou klas karaktè adisyonèl nan parantèz kare andedan ekspresyon regilye yo te estabilize epi li disponib pa default. Karakteristik la pèmèt ou fè alimèt lè l sèvi avèk règ avanse pou entèseksyon, esklizyon, ak inyon seri karaktè. Pou egzanp, '[AZ - W]' - karaktè soti nan A jiska Z eksepte W.
  • Sipò pou operasyon yo "(?", "( )", "{ }" ak "[ ]" se pasyèlman estabilize epi li disponib pa default; ou ka itilize senbòl yo "" "", "" "", elatriye Pou egzanp , "qr"pat "".
  • Rele fonksyon an sòt san agiman entèdi, ki pral kounye a rezilta nan yon erè. @a = sòt @vid; # ap kontinye @a = sòt; # yon erè ap enprime @a = sòt(); # y ap enprime yon erè
  • Yo te pwopoze yon nouvo drapo liy kòmand "-g", ki pèmèt mòd nan chaje fichye a antye kòm yon antye, olye ke liy pa liy. Aksyon drapo a sanble ak endikasyon "-0777".
  • Sipò pou spesifikasyon Unicode yo te mete ajou nan vèsyon 14.0.
  • Ofri enstantane manyen eksepsyon pwen flotan (SIGFPE) menm jan ak lòt alam tankou SIGSEGV, ki pèmèt ou mare pwòp moun k ap okipe SIGFPE atravè $SIG{FPE}, pou egzanp bay nimewo liy kote pwoblèm nan te rive.
  • Mizajou vèsyon modil ki enkli nan pake debaz la.
  • Te ajoute optimize pèfòmans. Yo bay kapasite pou estoke gwo kle hash pi efikas san yo pa itilize tab fisèl pataje. Pèfòmans nan kreye nouvo valè eskalè yo te amelyore anpil, pou egzanp kòd sa a kounye a kouri 30% pi vit: $str = "A" x 64; pou (0..1_000_000) { @svs = divize //, $str }
  • Kòd entèprèt la te kòmanse sèvi ak kèk nan konstriksyon yo defini nan estanda C99 la. Konstriksyon Perl kounye a mande pou yon du ki sipòte C99. Sipò pou bati nan ansyen vèsyon MSVC++ (pre-VC12) te sispann. Te ajoute sipò pou bati nan Microsoft Visual Studio 2022 (MSVC++ 14.3).
  • Sipò pou AT&T UWIN, DOS/DJGPP ak platfòm Novell NetWare yo sispann.

Sous: opennet.ru

Add nouvo kòmantè