Frigivelse af programmeringssproget Perl 5.30.0

Efter 11 måneders udvikling tog sted frigivelse af en ny stabil gren af ​​programmeringssproget Perl - 5.30. Under forberedelsen af ​​den nye udgivelse blev omkring 620 tusind linjer kode ændret, ændringerne påvirkede 1300 filer, og 58 udviklere deltog i udviklingen.

Afdeling 5.30 blev frigivet i overensstemmelse med den faste udviklingsplan godkendt for seks år siden, hvilket indebærer frigivelse af nye staldgrene én gang årligt og korrigerende udgivelser hver tredje måned. Om cirka en måned er det planlagt at frigive den første korrigerende udgivelse af Perl 5.30.1, som vil rette de væsentligste fejl, der er identificeret under implementeringen af ​​Perl 5.30.0. Sammen med udgivelsen af ​​Perl 5.30 blev understøttelsen af ​​5.26-grenen afbrudt, hvor opdateringer kun kan frigives i fremtiden, hvis der identificeres kritiske sikkerhedsproblemer. Udviklingsprocessen af ​​forsøgsgrenen 5.31 er også begyndt, på grundlag af hvilken en stabil udgivelse af Perl 2020 vil blive dannet i maj 5.32.

Nøgle ændringer:

  • Eksperimentel understøttelse af ""-operationer er blevet tilføjet til regulære udtryk.(?<!mønster)"Og"(?‹=mønster)» for begrænset adgang til tidligere behandlede navngivne skabeloner. Mønsterdefinitionen skal være inden for 255 tegn fra referencepunktet;
  • Den maksimale værdi af størrelsesspecifikationen ("n") i "{m,n}" regulære udtryksblokke er blevet øget til 65534;
  • Tilføjet begrænset støtte masker til at fremhæve bestemte kategorier af tegn i regulære udtryk, der dækker forskellige Unicode-sæt. For eksempel udtrykket "qr! \p{nv= /(?x) \A [0-5] \z / }!" giver dig mulighed for at vælge alle Unicode-tegn, der definerer tallene fra 0 til 5, inklusive thailandske eller bengalske stavemåder af tal;
  • Tilføjet understøttelse af navngivne tegn i regulære udtryk
    indvendige mønstre afgrænset af enkelte anførselstegn (qr'\N{navn}');

  • Unicode-specifikationsunderstøttelse opdateret til version 12.1. Flaget for eksperimentel udvikling er blevet fjernet fra opkald sv_utf8_downgrade og sv_utf8_decode, brugt i udviklingen af ​​udvidelser i C-sproget;
  • Tilføjet muligheden for at bygge perl med implementering af operationer med en lokalitet, der understøtter multi-threaded operation (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Tidligere blev en sådan implementering kun brugt, når man byggede en multi-threaded version af Perl, men kan nu aktiveres for enhver build;
  • Kombination af flagene "-Dv" (forbedret debugging output) og "-Dr" (regex debugging) bevirker nu, at alle mulige regulære udtryks debugging-tilstande aktiveres;
  • Tidligere udfasede funktioner er blevet fjernet:
    • Nu tilgængelig som linjeseparator og jokertegn tilladt kun brug grafemer (sammensatte Unicode-tegn er ikke tilladt).
    • Udgået understøttelse af nogle forældede former for brug af tegnet "{" i regulære udtryk uden at undslippe det.
    • Det er forbudt ved at bruge funktionerne sysread(), syswrite(), recv() og send() med ":utf8"-handlere.
    • Det er forbudt at bruge definitioner af "min" i iboende falske betingede udsagn (for eksempel "min $x hvis 0").
    • Understøttelse af specielle variabler "$*" og "$#" er blevet fjernet.
      Understøttelse af implicit kald af dump()-funktionen er afbrudt (du skal nu udtrykkeligt angive CORE::dump()).

    • File::Glob::glob-funktionen er blevet fjernet (du skal bruge File::Glob::bsd_glob).
    • Tilføjet beskyttelse til pack() mod returnering af forkerte Unicode-sekvenser.
    • Slutningen af ​​understøttelse af brug af makroer, der udfører operationer med UTF-8 i XS-kode (C-blokke), er blevet udskudt til næste udgivelse.
  • Ydeevneoptimeringer:
    • Oversættelsesoperationer fra UTF-8 til tegnlayout er blevet fremskyndet (kodepunkt), for eksempel kræver udførelse af ord(“\x7fff”) operationen nu 12 % færre instruktioner. Ydeevnen af ​​operationer, der kontrollerer rigtigheden af ​​UTF-8-tegnsekvenser, er også blevet øget;
    • Rekursive kald i finalize_op()-funktionen er blevet elimineret;
    • Lavet mindre optimeringer af koden for at kollapse identiske tegn og definere karakterklasser i regulære udtryk;
    • Optimeret konvertering af signerede typedefinitioner til usignerede (IV til UV);
    • Algoritmen til at konvertere heltal til en streng er blevet accelereret ved at behandle to cifre på én gang i stedet for ét;
    • Der er foretaget forbedringer forberedt baseret på analyse fra LGTM;
    • Optimeret kode i filerne regcomp.c, regcomp.h og regexec.c;
    • I regulære udtryk er behandlingen af ​​mønstre som "qr/[^a]/" med ASCII-tegn blevet betydeligt fremskyndet.
  • Understøttelse af Minix3-platformen er blevet genoprettet. Det er muligt at bygge ved hjælp af Microsoft Visual Studio 2019-kompileren (Visual C++ 14.2);
  • Opdaterede versioner af moduler inkluderet i grundpakken. Moduler er blevet fjernet fra hovedsammensætningen B::Fejlretning и Locale::Koder.

Kilde: opennet.ru

Tilføj en kommentar