Utgivning av programmeringsspråket Perl 5.30.0

Efter 11 månaders utveckling ägde rum release av en ny stabil gren av programmeringsspråket Perl - 5.30. Vid förberedelserna av den nya versionen ändrades cirka 620 tusen rader kod, ändringarna påverkade 1300 58 filer och XNUMX utvecklare deltog i utvecklingen.

Branch 5.30 släpptes i enlighet med det fasta utvecklingsschema som godkändes för sex år sedan, vilket innebär att nya stabila filialer släpps en gång per år och korrigerande släpp var tredje månad. Om ungefär en månad är det planerat att släppa den första korrigerande versionen av Perl 5.30.1, som kommer att rätta till de mest betydande felen som identifierats under implementeringen av Perl 5.30.0. Tillsammans med lanseringen av Perl 5.30 avbröts stödet för 5.26-grenen, för vilka uppdateringar kan släppas i framtiden endast om kritiska säkerhetsproblem identifieras. Utvecklingsprocessen för experimentgrenen 5.31 har också påbörjats, på grundval av vilken en stabil version av Perl 2020 kommer att bildas i maj 5.32.

Nyckel förändringar:

  • Experimentellt stöd för ""-operationer har lagts till i reguljära uttryck.(?<!mönster)"Och"(?‹=mönster)» för begränsad åtkomst till tidigare bearbetade namngivna mallar. Mönsterdefinitionen måste vara inom 255 tecken från referenspunkten;
  • Det maximala värdet för storleksspecifikationen ("n") i "{m,n}" reguljära uttrycksblock har ökats till 65534;
  • Lades till begränsat stöd masker för att markera vissa kategorier av tecken i reguljära uttryck, som täcker olika Unicode-uppsättningar. Till exempel uttrycket "qr! \p{nv= /(?x) \A [0-5] \z / }!” låter dig välja alla Unicode-tecken som definierar siffrorna från 0 till 5, inklusive thailändska eller bengaliska stavningar av siffror;
  • Lade till stöd för namngivna tecken i reguljära uttryck
    inuti mönster avgränsade av enkla citattecken (qr'\N{name}');

  • Unicode-specifikationsstöd uppdaterat till version 12.1. Flaggan för experimentell utveckling har tagits bort från samtal sv_utf8_downgrade och sv_utf8_decode, används i utvecklingen av tillägg i C-språket;
  • Lade till möjligheten att bygga perl med implementering av operationer med en lokal som stöder flertrådad operation (-Accflags=’-DUSE_THREAD_SAFE_LOCALE’). Tidigare användes en sådan implementering endast när man byggde en flertrådig version av Perl, men kan nu aktiveras för alla byggnader;
  • Kombination av flaggorna "-Dv" (förbättrad felsökning) och "-Dr" (regex-felsökning) gör nu att alla möjliga felsökningslägen för reguljära uttryck aktiveras;
  • Tidigare utfasade funktioner har tagits bort:
    • Nu tillgänglig som radavgränsare och jokertecken tillåten Använd endast grafem (sammansatta Unicode-tecken är inte tillåtna).
    • Avvecklad stöd för vissa sedan länge föråldrade former av att använda tecknet "{" i reguljära uttryck utan att undvika det.
    • Det är förbjudet använder funktionerna sysread(), syswrite(), recv() och send() med ":utf8"-hanterare.
    • Det är förbjudet att använda definitioner av "min" i naturligt falska villkorliga uttalanden (till exempel "min $x om 0").
    • Stöd för specialvariabler "$*" och "$#" har tagits bort.
      Stöd för implicit anrop av dump()-funktionen har upphört (du måste nu uttryckligen ange CORE::dump()).

    • File::Glob::glob-funktionen har tagits bort (du bör använda File::Glob::bsd_glob).
    • Lade till skydd till pack() mot att returnera felaktiga Unicode-sekvenser.
    • Slutet på stödet för användning av makron som utför operationer med UTF-8 i XS-kod (C-block) har skjutits upp till nästa release.
  • Prestandaoptimeringar:
    • Översättningsoperationer från UTF-8 till teckenlayout har påskyndats (kodpunkt), till exempel, att utföra operationen ord(“\x7fff”) kräver nu 12 % färre instruktioner. Prestanda för operationer som kontrollerar korrektheten av UTF-8-teckensekvenser har också ökat;
    • Rekursiva anrop i funktionen finalize_op() har eliminerats;
    • Gjorde mindre optimeringar av koden för att kollapsa identiska tecken och definiera teckenklasser i reguljära uttryck;
    • Optimerad konvertera signerade typdefinitioner till osignerade (IV till UV);
    • Algoritmen för att omvandla heltal till en sträng har accelererats genom att behandla två siffror på en gång istället för en;
    • Förbättringar har gjorts tränad baserat på analys av LGTM;
    • Optimerad kod i filerna regcomp.c, regcomp.h och regexec.c;
    • I reguljära uttryck har bearbetningen av mönster som "qr/[^a]/" med ASCII-tecken påskyndats avsevärt.
  • Stödet för Minix3-plattformen har återställts. Det är möjligt att bygga med Microsoft Visual Studio 2019-kompilatorn (Visual C++ 14.2);
  • Uppdaterade versioner av moduler som ingår i grundpaketet. Moduler har tagits bort från huvudkompositionen B::Fegla и Lokal::Koder.

Källa: opennet.ru

Lägg en kommentar