Lansarea limbajului de programare Perl 5.30.0

După 11 luni de dezvoltare a avut loc lansarea unei noi ramuri stabile a limbajului de programare Perl - 5.30. La pregătirea noii versiuni, aproximativ 620 de mii de linii de cod au fost modificate, modificările au afectat 1300 de fișiere și 58 de dezvoltatori au luat parte la dezvoltare.

Ramura 5.30 a fost lansată în conformitate cu programul de dezvoltare fix aprobat în urmă cu șase ani, ceea ce presupune lansarea de noi sucursale stabile o dată pe an și lansări corective la fiecare trei luni. În aproximativ o lună, este planificată lansarea primei versiuni corective a Perl 5.30.1, care va corecta cele mai semnificative erori identificate în timpul implementării Perl 5.30.0. Odată cu lansarea Perl 5.30, suportul pentru ramura 5.26 a fost întrerupt, pentru care actualizările pot fi lansate în viitor numai dacă sunt identificate probleme critice de securitate. A început și procesul de dezvoltare a ramurii experimentale 5.31, pe baza căruia se va forma o versiune stabilă a Perl 2020 în mai 5.32.

Cheie modificări:

  • Suportul experimental pentru operațiunile „” a fost adăugat la expresiile regulate.(?<!model)"Și"(?‹=model)» pentru acces limitat la șabloanele denumite procesate anterior. Definiția modelului trebuie să fie în maximum 255 de caractere față de punctul de referință;
  • Valoarea maximă a specificatorului de dimensiune („n”) în blocurile de expresii regulate „{m,n}” a fost mărită la 65534;
  • Adăugat limitat sprijini măști pentru a evidenția anumite categorii de caractere în expresiile regulate, acoperind diferite seturi Unicode. De exemplu, expresia „qr! \p{nv= /(?x) \A [0-5] \z / }!” vă permite să selectați toate caracterele Unicode care definesc numerele de la 0 la 5, inclusiv ortografie thailandeză sau bengaleză a numerelor;
  • S-a adăugat suport pentru caracterele numite în expresiile regulate
    în interiorul modelelor delimitate de ghilimele simple (qr'\N{nume}');

  • Suport pentru specificații Unicode actualizat la versiunea 12.1. Indicatorul de dezvoltare experimentală a fost eliminat din apeluri sv_utf8_downgrade și sv_utf8_decode, utilizat în dezvoltarea extensiilor în limbajul C;
  • S-a adăugat capacitatea de a construi perl cu implementarea operațiunilor cu o locație care acceptă operarea cu mai multe fire (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Anterior, o astfel de implementare era folosită numai la construirea unei versiuni multi-threaded de Perl, dar acum poate fi activată pentru orice versiune;
  • Combinarea flag-urilor „-Dv” (ieșire îmbunătățită de depanare) și „-Dr” (depanare regex) face ca toate modurile posibile de depanare a expresiilor regulate să fie activate;
  • Funcțiile depreciate anterior au fost eliminate:
    • Acum este disponibil ca separator de linii și caractere wildcard permis utilizați numai grafeme (caracterele Unicode compuse nu sunt permise).
    • Întrerupt suport pentru unele forme de mult învechite de utilizare a caracterului „{” în expresiile regulate fără a scăpa de el.
    • Este interzisă folosind funcțiile sysread(), syswrite(), recv() și send() cu handlere „:utf8”.
    • Este interzisă utilizarea definițiilor „meu” în declarații condiționale inerent false (de exemplu, „meu $x dacă 0”).
    • Suportul pentru variabilele speciale „$*” și „$#” a fost eliminat.
      Suportul pentru apelarea implicită a funcției dump() a fost întrerupt (acum trebuie să specificați în mod explicit CORE::dump()).

    • Funcția File::Glob::glob a fost eliminată (ar trebui să utilizați File::Glob::bsd_glob).
    • S-a adăugat protecție la pack() împotriva returnării secvențelor Unicode incorecte.
    • Sfârșitul suportului pentru utilizarea macrocomenzilor care efectuează operațiuni cu UTF-8 în cod XS (blocuri C) a fost amânat până la următoarea ediție.
  • Optimizări de performanță:
    • Operațiile de traducere de la UTF-8 la aspectul caracterelor au fost accelerate (punct de cod), de exemplu, efectuarea operației ord(„\x7fff”) necesită acum cu 12% mai puține instrucțiuni. Performanța operațiunilor de verificare a corectitudinii secvențelor de caractere UTF-8 a fost, de asemenea, crescută;
    • Apelurile recursive din funcția finalize_op() au fost eliminate;
    • Au făcut optimizări minore ale codului pentru restrângerea caracterelor identice și definirea claselor de caractere în expresiile regulate;
    • Optimizat conversia definițiilor de tip semnat în definiții nesemnate (IV în UV);
    • Algoritmul pentru conversia numerelor întregi într-un șir a fost accelerat prin procesarea a două cifre deodată în loc de una;
    • Au fost făcute îmbunătățiri antrenat pe baza analizei LGTM;
    • Cod optimizat în fișierele regcomp.c, regcomp.h și regexec.c;
    • În expresiile regulate, procesarea modelelor precum „qr/[^a]/” cu caractere ASCII a fost accelerată semnificativ.
  • Suportul pentru platforma Minix3 a fost restabilit. Este posibil să se construiască folosind compilatorul Microsoft Visual Studio 2019 (Visual C++ 14.2);
  • Versiuni actualizate ale modulelor incluse în pachetul de bază. Modulele au fost eliminate din compoziția principală B::Depanare и Locale::Coduri.

Sursa: opennet.ru

Adauga un comentariu