Iaith raglennu Perl 5.36.0 ar gael

Ar ôl blwyddyn o ddatblygiad, mae rhyddhau cangen sefydlog newydd o iaith raglennu Perl - 5.36 - wedi'i gyhoeddi. Wrth baratoi'r datganiad newydd, newidiwyd tua 250 mil o linellau cod, effeithiodd y newidiadau ar 2000 o ffeiliau, a chymerodd 82 o ddatblygwyr ran yn y datblygiad.

Rhyddhawyd Cangen 5.36 yn unol â'r amserlen ddatblygu sefydlog a gymeradwywyd naw mlynedd yn ôl, sy'n awgrymu rhyddhau canghennau sefydlog newydd unwaith y flwyddyn a datganiadau cywiro bob tri mis. Mewn tua mis, bwriedir rhyddhau'r datganiad cywirol cyntaf o Perl 5.36.1, a fydd yn cywiro'r gwallau mwyaf arwyddocaol a nodwyd yn ystod gweithredu Perl 5.36.0. Ynghyd â rhyddhau Perl 5.36, daethpwyd â chefnogaeth i'r gangen 5.32 i ben, y gellir rhyddhau diweddariadau yn y dyfodol ar ei chyfer dim ond os canfyddir problemau diogelwch critigol. Mae'r broses o ddatblygu cangen arbrofol 5.37 hefyd wedi dechrau, ar y sail y bydd datganiad sefydlog o Perl 2023 yn cael ei ffurfio ym mis Mai neu fis Mehefin 5.38, oni bai bod penderfyniad yn cael ei wneud i newid i rifo 7.x.

Newidiadau allweddol:

  • Mae cefnogaeth ar gyfer llofnodion swyddogaeth wedi'i sefydlogi ac mae bellach ar gael wrth nodi'r pragma “defnyddio v5.36”, sy'n eich galluogi i ddiffinio'n benodol y rhestr o newidynnau a ddefnyddir yn y swyddogaeth ac awtomeiddio gweithrediadau gwirio a phennu gwerthoedd o amrywiaeth o paramedrau sy'n dod i mewn. Er enghraifft, cod a ddefnyddiwyd yn flaenorol: sub foo { die "Gormod o ddadleuon dros is-reolwaith" oni bai bod @_ >= 2; die "Rhychydig o ddadleuon dros is-reolwaith" oni bai bod @_ <= 2; my($chwith, $dde) = @_; dychwelyd $left + $right; }

    wrth ddefnyddio llofnodion, gellir ei ddisodli gan:

    sub foo ($chwith, $right) { dychwelyd $left + $right; }

    Os byddwch yn ffonio foo gyda mwy na dwy ddadl, bydd y cyfieithydd yn taflu gwall. Mae'r rhestr hefyd yn cefnogi newidyn arbennig “$”, sy'n eich galluogi i anwybyddu rhai o'r dadleuon, er enghraifft, bydd “sub foo ($left, $, $right)” yn caniatáu ichi gopïo'r arg cyntaf a'r trydydd yn newidynnau yn unig , tra bod yn rhaid trosglwyddo union dri i'r ddadl swyddogaeth.

    Mae cystrawen y llofnod hefyd yn caniatáu ichi nodi dadleuon dewisol a phennu gwerthoedd rhagosodedig os oes dadl ar goll. Er enghraifft, trwy nodi "sub foo ($left, $right = 0)" mae'r ail ddadl yn dod yn ddewisol ac os yw'n absennol, mae'r gwerth 0 yn cael ei basio. Yng ngweithrediad yr aseiniad, gallwch chi nodi ymadroddion mympwyol, gan gynnwys defnyddio newidynnau eraill o'r rhestr neu newidynnau byd-eang. Bydd pennu hash neu arae yn lle newidyn (er enghraifft, "sub foo ($left, @right)") yn caniatáu i un neu fwy o ddadleuon gael eu pasio.

  • Mewn swyddogaethau a ddatganwyd gan ddefnyddio llofnodion, mae cefnogaeth ar gyfer aseiniad paramedr dewisol o'r arae "@_" yn cael ei ddatgan yn arbrofol a bydd yn arwain at rybudd (dim ond os defnyddir @_ mewn swyddogaethau a ddatganwyd gan ddefnyddio'r gystrawen newydd y rhoddir y rhybudd). Er enghraifft, bydd rhybudd yn cael ei arddangos ar gyfer y swyddogaeth: defnyddiwch v5.36; is f ($x, $y = 123) { dweud "Y arg gyntaf yw $_[0]"; }
  • Wedi'i sefydlogi ac ar gael wrth nodi'r pragma "use v5.36", mae'r gweithredwr infix "isa" ar gyfer gwirio a yw gwrthrych yn enghraifft o'r dosbarth penodedig neu'n ddosbarth sy'n deillio ohono. Er enghraifft: if( $obj isa Pecyn ::Enw ) { … }
  • Wrth nodi'r pragma “defnyddio v5.36”, mae prosesu rhybuddion wedi'i alluogi (mae'r modd "rhybuddion defnyddio" wedi'i actifadu).
  • Wrth nodi'r pragma “defnyddio v5.36”, mae cefnogaeth i nodiant anuniongyrchol ar gyfer galw gwrthrychau (“nodwedd anuniongyrchol”) yn anabl - ffordd hen ffasiwn o alw gwrthrychau, lle defnyddir gofod yn lle “->” (“dull $ gwrthrych @param" yn lle "$object-> $method(@param)"). Er enghraifft, yn lle “fy $ cgi = CGI newydd” mae angen i chi ddefnyddio “my $ cgi = CGI->newydd”.
  • Wrth nodi'r pragma “defnyddio v5.36”, mae cefnogaeth ar gyfer efelychu araeau a hashes amlddimensiwn yn arddull Perl 4 (“nodwedd amlddimensiwn”) wedi'i analluogi, gan ganiatáu i'r arwydd o sawl allwedd gael ei gyfieithu i arae ganolradd (er enghraifft, " Cafodd $hash{1, 2}”) ei drosi i "$hash{join($;, 1, 2)}").
  • Wrth nodi'r pragma “defnyddio v5.36”, mae cefnogaeth i'r mecanwaith canghennog arbrofol (“switsh nodwedd”), yn debyg i'r datganiadau switsh ac achos, yn anabl (mae Perl yn defnyddio'r allweddeiriau a roddir a phryd). I ddefnyddio'r nodwedd hon, gan ddechrau o Perl 5.36 mae angen i chi nodi'n benodol 'defnyddio nodwedd "switch"', a phan fyddwch yn nodi "defnyddio fersiwn" ni fydd yn cael ei alluogi'n awtomatig mwyach.
  • Mae cefnogaeth ar gyfer dosbarthiadau nodau ychwanegol mewn cromfachau sgwâr y tu mewn i ymadroddion rheolaidd wedi'i sefydlogi ac mae ar gael yn ddiofyn. Mae'r nodwedd yn eich galluogi i berfformio gemau gan ddefnyddio rheolau uwch ar gyfer croestoriad, eithrio, ac undeb setiau o nodau. Er enghraifft, '[A-Z - W]' - nodau o A i Z heb gynnwys W.
  • Mae cefnogaeth i'r gweithrediadau "(?", "( )", "{ }" a "[ ]" wedi'i sefydlogi'n rhannol ac ar gael yn ddiofyn; gallwch ddefnyddio'r symbolau "" "", """, ac ati. Er enghraifft , "qr"pat".
  • Gwaherddir galw'r swyddogaeth ddidoli heb ddadleuon, a fydd nawr yn arwain at gamgymeriad. @a = sortio @gwag; bydd # yn parhau @a = sort; # bydd gwall yn cael ei argraffu @a = sort(); # bydd gwall yn cael ei argraffu
  • Mae baner llinell orchymyn newydd “-g” wedi'i chynnig, sy'n galluogi'r modd o lwytho'r ffeil gyfan yn ei chyfanrwydd, yn hytrach na llinell wrth linell. Mae gweithred y faner yn debyg i'r arwydd “-0777”.
  • Mae cefnogaeth i fanyleb Unicode wedi'i diweddaru i fersiwn 14.0.
  • Yn darparu ar unwaith ymdrin ag eithriadau pwynt arnawf (SIGFPE) tebyg i larymau eraill megis SIGSEGV, sy'n eich galluogi i rwymo eich trinwyr eich hun ar gyfer SIGFPE trwy $SIG{FPE}, er enghraifft allbynnu rhif y llinell lle digwyddodd y broblem.
  • Fersiynau wedi'u diweddaru o fodiwlau sydd wedi'u cynnwys yn y pecyn sylfaenol.
  • Ychwanegwyd optimeiddiadau perfformiad. Mae'r gallu i storio bysellau hash mawr yn fwy effeithlon heb ddefnyddio tablau llinynnol a rennir wedi'i ddarparu. Mae perfformiad creu gwerthoedd sgalar newydd wedi gwella'n sylweddol, er enghraifft mae'r cod canlynol bellach yn rhedeg 30% yn gyflymach: $str = "A" x 64; ar gyfer (0..1_000_000) { @svs = hollt //, $str }
  • Dechreuodd cod y cyfieithydd ddefnyddio rhai o'r lluniadau a ddiffinnir yn safon C99. Mae Building Perl bellach angen casglwr sy'n cefnogi C99. Mae cefnogaeth ar gyfer adeiladu fersiynau hŷn o MSVC ++ (cyn-VC12) wedi dod i ben. Cefnogaeth ychwanegol ar gyfer adeiladu yn Microsoft Visual Studio 2022 (MSVC ++ 14.3).
  • Mae cefnogaeth i lwyfannau AT&T UWIN, DOS/DJGPP a Novell NetWare wedi dod i ben.

Ffynhonnell: opennet.ru

Ychwanegu sylw