Rhyddhau iaith raglennu Perl 5.30.0

Ar ôl 11 mis o ddatblygiad ddigwyddodd rhyddhau cangen sefydlog newydd o iaith raglennu Perl - 5.30. Wrth baratoi'r datganiad newydd, newidiwyd tua 620 mil o linellau cod, effeithiodd y newidiadau ar 1300 o ffeiliau, a chymerodd 58 o ddatblygwyr ran yn y datblygiad.

Rhyddhawyd Cangen 5.30 yn unol â'r amserlen ddatblygu sefydlog a gymeradwywyd chwe blynedd 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.30.1, a fydd yn cywiro'r gwallau mwyaf arwyddocaol a nodwyd yn ystod gweithredu Perl 5.30.0. Ynghyd â rhyddhau Perl 5.30, daethpwyd â chefnogaeth i'r gangen 5.26 i ben, y gellir rhyddhau diweddariadau ar ei chyfer yn y dyfodol dim ond os nodir problemau diogelwch critigol. Mae proses ddatblygu cangen arbrofol 5.31 hefyd wedi dechrau, ac ar y sail honno bydd datganiad sefydlog o Perl 2020 yn cael ei ffurfio ym mis Mai 5.32.

Allwedd newidiadau:

  • Mae cefnogaeth arbrofol ar gyfer " "gweithrediadau wedi ei ychwanegu at ymadroddion rheolaidd.(? ‹!patrwm)"Ac"(? ‹ = patrwm)» ar gyfer mynediad cyfyngedig i dempledi enwedig a broseswyd yn flaenorol. Rhaid i ddiffiniad y patrwm fod o fewn 255 nod i'r pwynt cyfeirio;
  • Mae gwerth mwyaf y manylebydd maint (“n”) yn y blociau mynegiant rheolaidd “{m,n}” wedi’i gynyddu i 65534;
  • Ychwanegwyd cyfyngedig cefnogaeth masgiau i dynnu sylw at rai categorïau o nodau mewn ymadroddion rheolaidd, gan gwmpasu gwahanol setiau Unicode. Er enghraifft, mae'r ymadrodd “qr! \p{ nv= /(?x) \A [0-5] \z / }!" yn caniatáu ichi ddewis pob nod Unicode sy'n diffinio'r rhifau o 0 i 5, gan gynnwys sillafiadau rhifau Thai neu Bengali;
  • Cefnogaeth ychwanegol i nodau a enwir mewn ymadroddion rheolaidd
    y tu mewn i batrymau wedi'u hamffinio gan ddyfyniadau unigol (qr'\N{name}');

  • Cefnogaeth manyleb Unicode wedi'i diweddaru i fersiwn 12.1. Mae'r faner datblygiad arbrofol wedi'i thynnu oddi ar alwadau sv_utf8_downgrade a sv_utf8_decode, a ddefnyddir wrth ddatblygu estyniadau yn yr iaith C;
  • Ychwanegwyd y gallu i adeiladu perl gyda gweithrediad gweithrediadau gyda locale sy'n cefnogi gweithrediad aml-edau (-Accflags = '-DUSE_THREAD_SAFE_LOCALE'). Yn flaenorol, dim ond wrth adeiladu fersiwn aml-edau o Perl y defnyddiwyd gweithrediad o'r fath, ond nawr gellir ei alluogi ar gyfer unrhyw adeiladu;
  • Mae cyfuno'r baneri "-Dv" (allbwn dadfygio uwch) a "-Dr" (debugging regex) bellach yn galluogi pob dull dadfygio mynegiant rheolaidd posibl;
  • Mae nodweddion a anghymeradwywyd yn flaenorol wedi'u dileu:
    • Ar gael nawr fel gwahanydd llinell a chymeriadau cerdyn gwyllt a ganiateir defnydd yn unig graffemau (ni chaniateir nodau Unicode cyfansawdd).
    • Terfynwyd cefnogaeth i rai ffurfiau hir-ddarfodedig o ddefnyddio'r nod “{” mewn ymadroddion rheolaidd heb ddianc ohono.
    • Mae'n gwahardd defnyddio'r swyddogaethau sysread(), syswrite(), recv() ac anfon() gyda thrinwyr ":utf8".
    • Gwaherddir defnyddio diffiniadau o “fy” mewn datganiadau amodol anwir yn eu hanfod (er enghraifft, “fy $x os 0”).
    • Mae cefnogaeth ar gyfer newidynnau arbennig “$*” a “$#” wedi'i ddileu.
      Mae cefnogaeth ar gyfer galw'r swyddogaeth dymp() yn ymhlyg wedi'i therfynu (rhaid i chi nawr nodi'n benodol CORE::dump()).

    • Mae'r swyddogaeth Ffeil::Glob::glob wedi'i thynnu (dylech ddefnyddio Ffeil::Glob::bsd_glob).
    • Ychwanegwyd amddiffyniad i'r pecyn() rhag dychwelyd dilyniannau Unicode annilys.
    • Mae diwedd y gefnogaeth ar gyfer defnyddio macros sy'n perfformio gweithrediadau gyda UTF-8 mewn cod XS (blociau C) wedi'i ohirio tan y datganiad nesaf.
  • Optimeiddio Perfformiad:
    • Mae gweithrediadau cyfieithu o UTF-8 i gynllun nodau wedi'u cyflymu (pwynt cod), er enghraifft, mae angen 7% yn llai o gyfarwyddiadau i gyflawni'r gweithrediad ord("\x12fff") bellach. Mae perfformiad gweithrediadau sy'n gwirio cywirdeb dilyniannau nodau UTF-8 hefyd wedi'i gynyddu;
    • Mae galwadau ailadroddus yn y swyddogaeth finalize_op() wedi'u dileu;
    • Wedi gwneud mân optimeiddiadau i'r cod ar gyfer dymchwel nodau unfath a diffinio dosbarthiadau nodau mewn ymadroddion rheolaidd;
    • Wedi'i optimeiddio trosi diffiniadau math wedi'u llofnodi i rai heb eu llofnodi (IV i UV);
    • Mae'r algorithm ar gyfer trosi cyfanrifau yn llinyn wedi'i gyflymu trwy brosesu dau ddigid ar unwaith yn lle un;
    • Mae gwelliannau wedi'u gwneud parod yn seiliedig ar ddadansoddiad gan LGTM;
    • Cod wedi'i optimeiddio mewn ffeiliau regcomp.c, regcomp.h a regexec.c;
    • Mewn ymadroddion rheolaidd, mae prosesu patrymau fel “qr/[^a]/” gyda nodau ASCII wedi'i gyflymu'n sylweddol.
  • Mae cefnogaeth i'r platfform Minix3 wedi'i adfer. Mae'n bosibl adeiladu gan ddefnyddio casglwr Microsoft Visual Studio 2019 (Visual C ++ 14.2);
  • Fersiynau wedi'u diweddaru o fodiwlau sydd wedi'u cynnwys yn y pecyn sylfaenol. Mae modiwlau wedi'u tynnu o'r prif gyfansoddiad B:: Dadfygio и Lleoliad::Codau.

Ffynhonnell: opennet.ru

Ychwanegu sylw