Utgivelse av programmeringsspråket Perl 5.30.0

Etter 11 måneders utvikling fant sted utgivelse av en ny stabil gren av programmeringsspråket Perl - 5.30. Under utarbeidelsen av den nye utgivelsen ble rundt 620 tusen linjer med kode endret, endringene påvirket 1300 filer, og 58 utviklere deltok i utviklingen.

Branch 5.30 ble utgitt i henhold til den faste utviklingsplanen som ble godkjent for seks år siden, som innebærer utgivelse av nye stabile filialer én gang i året og korrigerende utgivelser hver tredje måned. Om omtrent en måned er det planlagt å utgi den første korrigerende utgivelsen av Perl 5.30.1, som vil rette opp de mest betydelige feilene som er identifisert under implementeringen av Perl 5.30.0. Sammen med utgivelsen av Perl 5.30, ble støtten for 5.26-grenen avviklet, for hvilke fremtidige oppdateringer bare kan utgis hvis kritiske sikkerhetsproblemer blir identifisert. Utviklingsprosessen av den eksperimentelle grenen 5.31 har også startet, på grunnlag av denne vil en stabil utgivelse av Perl 2020 bli dannet i mai 5.32.

Nøkkel endringer:

  • Eksperimentell støtte for ""-operasjoner er lagt til regulære uttrykk.(?<!mønster)"Og"(?‹=mønster)» for begrenset tilgang til tidligere behandlede navngitte maler. Mønsterdefinisjonen må være innenfor 255 tegn fra referansestedet;
  • Maksimumsverdien for størrelsesspesifikatoren ("n") i "{m,n}" regulære uttrykksblokker er økt til 65534;
  • Lagt til begrenset støtte masker for å fremheve visse kategorier av tegn i regulære uttrykk, som dekker forskjellige Unicode-sett. For eksempel uttrykket "qr! \p{nv= /(?x) \A [0-5] \z / }!" lar deg velge alle Unicode-tegn som definerer tallene fra 0 til 5, inkludert thailandske eller bengalske stavemåter av tall;
  • Lagt til støtte for navngitte tegn i regulære uttrykk
    innvendige mønstre avgrenset med enkle anførselstegn (qr'\N{navn}');

  • Unicode-spesifikasjonsstøtte oppdatert til versjon 12.1. Flagget for eksperimentell utvikling er fjernet fra samtaler sv_utf8_downgrade og sv_utf8_decode, brukt i utviklingen av utvidelser i C-språket;
  • Lagt til muligheten til å bygge perl med implementering av operasjoner med en lokalitet som støtter flertrådsoperasjon (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Tidligere ble en slik implementering bare brukt når man bygger en flertrådsversjon av Perl, men kan nå aktiveres for alle bygg;
  • Kombinering av "-Dv" (forbedret feilsøkingsutgang) og "-Dr" (regex debugging)-flagg fører nå til at alle mulige feilsøkingsmoduser for regulære uttrykk blir aktivert;
  • Funksjoner som tidligere er avviklet, er fjernet:
    • Som linjeskilletegn og jokertegn nå tillatt kun bruk grafemer (sammensatte Unicode-tegn er ikke tillatt).
    • Avviklet støtte for noen lenge foreldede former for bruk av "{"-tegnet i regulære uttrykk uten å unnslippe det.
    • Det er forbudt ved å bruke funksjonene sysread(), syswrite(), recv() og send() med ":utf8"-behandlere.
    • Det er forbudt å bruke definisjoner av "min" i iboende falske betingede utsagn (for eksempel "min $x hvis 0").
    • Støtte for spesialvariablene "$*" og "$#" er fjernet.
      Støtte for implisitt kalling av dump()-funksjonen har blitt avviklet (du må nå eksplisitt spesifisere CORE::dump()).

    • File::Glob::glob-funksjonen er fjernet (du bør bruke File::Glob::bsd_glob).
    • Lagt til beskyttelse til pack() mot retur av feil Unicode-sekvenser.
    • Slutten av støtte for bruk av makroer som utfører operasjoner med UTF-8 i XS-kode (C-blokker) er utsatt til neste utgivelse.
  • Ytelsesoptimaliseringer:
    • Oversettelsesoperasjoner fra UTF-8 til tegnlayout har blitt akselerert (kodepunkt), for eksempel, utførelse av ord(“\x7fff”)-operasjonen krever nå 12 % færre instruksjoner. Ytelsen til operasjoner som kontrollerer riktigheten av UTF-8-tegnsekvenser har også blitt økt;
    • Rekursive anrop i funksjonen finalize_op() har blitt eliminert;
    • Gjorde mindre optimaliseringer av koden for å kollapse identiske tegn og definere tegnklasser i regulære uttrykk;
    • Optimalisert konvertere signerte typedefinisjoner til usignerte (IV til UV);
    • Algoritmen for å konvertere heltall til en streng har blitt akselerert ved å behandle to sifre samtidig i stedet for ett;
    • Det er gjort forbedringer forberedt basert på analyse fra LGTM;
    • Optimalisert kode i filene regcomp.c, regcomp.h og regexec.c;
    • I regulære uttrykk har behandlingen av mønstre som "qr/[^a]/" med ASCII-tegn blitt betydelig akselerert.
  • Støtte for Minix3-plattformen er gjenopprettet. Det er mulig å bygge med Microsoft Visual Studio 2019-kompilatoren (Visual C++ 14.2);
  • Oppdaterte versjoner av moduler inkludert i grunnpakken. Moduler er fjernet fra hovedsammensetningen B::Feilsøk и Locale::Koder.

Kilde: opennet.ru

Legg til en kommentar