Izdanje programskog jezika Perl 5.30.0

Nakon 11 mjeseci razvoja odvijao izdanje nove stabilne grane programskog jezika Perl - 5.30. U pripremi novog izdanja promijenjeno je oko 620 tisuća linija koda, promjene su zahvatile 1300 datoteka, au razvoju je sudjelovalo 58 programera.

Grana 5.30 objavljena je u skladu s fiksnim planom razvoja odobrenim prije šest godina, koji podrazumijeva izdavanje novih stabilnih grana jednom godišnje i korektivna izdanja svaka tri mjeseca. Za otprilike mjesec dana planira se izdati prvo korektivno izdanje Perla 5.30.1, koje će ispraviti najznačajnije greške uočene tijekom implementacije Perla 5.30.0. Zajedno s izdanjem Perla 5.30, obustavljena je podrška za ogranak 5.26, za koji se ažuriranja mogu objaviti u budućnosti samo ako se identificiraju kritični sigurnosni problemi. Započeo je i razvojni proces eksperimentalne grane 5.31, na temelju koje će u svibnju 2020. biti formirano stabilno izdanje Perla 5.32.

Ključ promjena:

  • Eksperimentalna podrška za operacije "" dodana je regularnim izrazima.(?<!uzorak)"A"(?‹=uzorak)» za ograničeni pristup prethodno obrađenim imenovanim predlošcima. Definicija uzorka mora biti unutar 255 znakova od referentne točke;
  • Maksimalna vrijednost specifikatora veličine (“n”) u “{m,n}” blokovima regularnih izraza povećana je na 65534;
  • Dodano ograničeno podržati maske za isticanje određenih kategorija znakova u regularnim izrazima, pokrivajući različite Unicode skupove. Na primjer, izraz “qr! \p{nv= /(?x) \A [0-5] \z / }!" omogućuje odabir svih Unicode znakova koji definiraju brojeve od 0 do 5, uključujući tajlandski ili bengalski način pisanja brojeva;
  • Dodana podrška za imenovane znakove u regularnim izrazima
    unutar uzoraka razgraničenih jednostrukim navodnicima (qr'\N{name}');

  • Podrška za specifikaciju Unicode ažurirana na verziju 12.1. Oznaka eksperimentalnog razvoja uklonjena je iz poziva sv_utf8_downgrade i sv_utf8_decode, koji se koristi u razvoju ekstenzija u jeziku C;
  • Dodana je mogućnost izrade perla s implementacijom operacija s lokalizacijom koja podržava rad s više niti (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Prethodno se takva implementacija koristila samo pri izradi višenitne verzije Perla, ali sada se može omogućiti za bilo koju izgradnju;
  • Kombinacija zastavica "-Dv" (poboljšani izlaz za otklanjanje pogrešaka) i "-Dr" (otklanjanje pogrešaka regularnog izraza) sada uzrokuje da svi mogući načini otklanjanja pogrešaka regularnih izraza budu omogućeni;
  • Značajke koje su prethodno zastarjele su uklonjene:
    • Sada dostupan kao razdjelnik retka i zamjenski znakovi dopušteno koristiti samo grafemi (složeni Unicode znakovi nisu dopušteni).
    • Ukinuto podrška za neke davno zastarjele oblike korištenja znaka “{” u regularnim izrazima bez njegovog izbjegavanja.
    • To je zabranjeno pomoću funkcija sysread(), syswrite(), recv() i send() s rukovateljima ":utf8".
    • Zabranjeno je koristiti definicije "my" u inherentno lažnim uvjetnim izjavama (na primjer, "my $x if 0").
    • Podrška za posebne varijable “$*” i “$#” je uklonjena.
      Podrška za implicitno pozivanje funkcije dump() je ukinuta (sada morate eksplicitno navesti CORE::dump()).

    • Funkcija File::Glob::glob je uklonjena (trebali biste koristiti File::Glob::bsd_glob).
    • Dodana zaštita za pack() protiv vraćanja netočnih Unicode nizova.
    • Prestanak podrške za korištenje makronaredbi koje izvode operacije s UTF-8 u XS kodu (C blokovi) odgođen je do sljedećeg izdanja.
  • Optimizacija izvedbe:
    • Operacije prevođenja s UTF-8 na raspored znakova su ubrzane (kodna točka), na primjer, izvođenje operacije ord(“\x7fff”) sada zahtijeva 12% manje instrukcija. Također je povećana izvedba operacija provjere ispravnosti nizova znakova UTF-8;
    • Rekurzivni pozivi u funkciji finalize_op() su eliminirani;
    • Napravljene manje optimizacije koda za sažimanje identičnih znakova i definiranje klasa znakova u regularnim izrazima;
    • Optimizirano pretvaranje definicija tipa s predznakom u one bez predznaka (IV u UV);
    • Algoritam za pretvaranje cijelih brojeva u niz je ubrzan obradom dvije znamenke odjednom umjesto jedne;
    • Napravljena su poboljšanja pripremljeni na temelju analize LGTM;
    • Optimiziran kod u datotekama regcomp.c, regcomp.h i regexec.c;
    • U regularnim izrazima, obrada uzoraka poput "qr/[^a]/" s ASCII znakovima znatno je ubrzana.
  • Podrška za Minix3 platformu je vraćena. Moguće je graditi pomoću kompilatora Microsoft Visual Studio 2019 (Visual C++ 14.2);
  • Ažurirane verzije modula uključenih u osnovni paket. Moduli su uklonjeni iz glavnog sastava B::Debug и Lokalizacija::Kodovi.

Izvor: opennet.ru

Dodajte komentar