Izdanje programskog jezika Perl 5.30.0

Nakon 11 mjeseci razvoja održan izdanje nove stabilne grane programskog jezika Perl - 5.30. U pripremi novog izdanja promijenjeno je oko 620 hiljada linija koda, promjene su zahvatile 1300 datoteka, a u razvoju je učestvovalo 58 programera.

Grana 5.30 puštena je u prodaju u skladu sa fiksnim planom razvoja koji je odobren prije šest godina, što podrazumijeva puštanje novih stabilnih grana jednom godišnje i korektivnih izdanja svaka tri mjeseca. Za otprilike mjesec dana planirano je izdavanje prvog korektivnog izdanja Perla 5.30.1, koje će ispraviti najznačajnije greške uočene tokom implementacije Perl 5.30.0. Zajedno sa izdavanjem Perl 5.30, obustavljena je podrška za granu 5.26, za koju se ažuriranja mogu objaviti u budućnosti samo ako se identifikuju kritični sigurnosni problemi. Započeo je i proces razvoja eksperimentalne grane 5.31 na osnovu koje će se u maju 2020. formirati stabilno izdanje Perla 5.32.

Ključ promjena:

  • Eksperimentalna podrška za "" operacije je dodana regularnim izrazima.(?‹!uzorak)"I"(?‹=uzorak)» za ograničen pristup prethodno obrađenim imenovanim šablonima. Definicija uzorka mora biti unutar 255 znakova od referentne točke;
  • Maksimalna vrijednost specificatora veličine (“n”) u blokovima regularnog izraza “{m,n}” je povećana na 65534;
  • Dodano ograničeno podrška 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ćava vam da odaberete sve Unicode znakove koji definiraju brojeve od 0 do 5, uključujući tajlandski ili bengalski pravopis brojeva;
  • Dodata podrška za imenovane znakove u regularnim izrazima
    unutar šablona omeđenih jednostrukim navodnicima (qr'\N{name}');

  • Podrška za Unicode specifikaciju ažurirana na verziju 12.1. Oznaka eksperimentalnog razvoja je uklonjena iz poziva sv_utf8_downgrade i sv_utf8_decode, koji se koristi u razvoju ekstenzija u jeziku C;
  • Dodata je mogućnost izrade perl-a sa implementacijom operacija sa lokalizacijom koja podržava višenitne operacije (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Ranije se takva implementacija koristila samo kada se gradila verzija Perla sa više niti, ali sada se može omogućiti za bilo koju verziju;
  • Kombinovanje zastavica "-Dv" (poboljšani izlaz za otklanjanje grešaka) i "-Dr" (regeks otklanjanje grešaka) sada uzrokuje da svi mogući načini otklanjanja grešaka regularnim izrazom budu omogućeni;
  • Funkcije koje su prethodno bile zastarjele su uklonjene:
    • Sada dostupan kao separator redaka i zamjenski znakovi dozvoljeno koristiti samo grafema (kompozitni Unicode znakovi nisu dozvoljeni).
    • Prekinut podrška za neke davno zastarjele oblike korištenja znaka “{” u regularnim izrazima bez izbjegavanja.
    • Zabranjeno je koristeći funkcije sysread(), syswrite(), recv() i send() sa ":utf8" rukovaocima.
    • Zabranjeno je koristiti definicije "moj" u inherentno lažnim uslovnim izjavama (na primjer, "moj $x ako je 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 (trebalo bi da koristite File::Glob::bsd_glob).
    • Dodata zaštita pack() od vraćanja nevažećih Unicode sekvenci.
    • Prestanak podrške za korištenje makronaredbi koje obavljaju operacije sa UTF-8 u XS kodu (C blokovi) je odgođen do sljedećeg izdanja.
  • Optimizacije performansi:
    • Operacije prevođenja sa UTF-8 na raspored znakova su ubrzane (kodna tačka), na primjer, izvođenje operacije ord(“\x7fff”) sada zahtijeva 12% manje instrukcija. Performanse operacija provjere ispravnosti sekvenci znakova UTF-8 su također povećane;
    • Rekurzivni pozivi u funkciji finalize_op() su eliminisani;
    • Napravljene manje optimizacije koda za sažimanje identičnih znakova i definisanje klasa znakova u regularnim izrazima;
    • Optimizirano pretvaranje definicija potpisanog tipa u one bez predznaka (IV u UV);
    • Algoritam za pretvaranje cijelih brojeva u niz je ubrzan obradom dvije cifre odjednom umjesto jedne;
    • Napravljena su poboljšanja pripremljeno na osnovu analize LGTM;
    • Optimizovan kod u datotekama regcomp.c, regcomp.h i regexec.c;
    • U regularnim izrazima, obrada obrazaca poput “qr/[^a]/” sa ASCII znakovima je značajno ubrzana.
  • Podrška za Minix3 platformu je vraćena. Moguće je izgraditi pomoću kompajlera Microsoft Visual Studio 2019 (Visual C++ 14.2);
  • Ažurirane verzije modula uključenih u osnovni paket. Moduli su uklonjeni iz glavne kompozicije B::Debug и Lokal::Kodovi.

izvor: opennet.ru

Dodajte komentar