Programavimo kalbos Perl 5.30.0 išleidimas

Po 11 mėnesių vystymosi įvyko naujos stabilios Perl programavimo kalbos šakos išleidimas - 5.30. Rengiant naują laidą buvo pakeista apie 620 tūkstančių kodo eilučių, pakeitimai palietė 1300 failų, o kūrime dalyvavo 58 kūrėjai.

„Branch 5.30“ buvo išleistas pagal prieš šešerius metus patvirtintą fiksuotą plėtros grafiką, o tai reiškia, kad nauji stabilūs filialai išleidžiami kartą per metus, o korekciniai – kas tris mėnesius. Maždaug po mėnesio planuojama išleisti pirmąją korekcinę Perl 5.30.1 versiją, kuri ištaisys reikšmingiausias klaidas, nustatytas diegiant Perl 5.30.0. Kartu su Perl 5.30 išleidimu nutrūko 5.26 šakos palaikymas, kurio naujinimai ateityje gali būti išleisti tik nustačius kritines saugumo problemas. Taip pat prasidėjo eksperimentinės šakos 5.31 kūrimo procesas, kurio pagrindu 2020 metų gegužę bus suformuotas stabilus Perl 5.32 leidimas.

Raktas pokyčiai:

  • Eksperimentinis operacijų „“ palaikymas buvo pridėtas prie įprastų išraiškų.(?‹! modelis)"Ir"(?‹ = modelis)» ribotai prieigai prie anksčiau apdorotų pavadintų šablonų. Šablono apibrėžimas turi būti ne didesnis kaip 255 simboliai nuo atskaitos taško;
  • Didžiausia dydžio specifikatoriaus („n“) reikšmė „{m,n}“ reguliariųjų reiškinių blokuose padidinta iki 65534;
  • Pridėta ribotai parama kaukės, skirtos paryškinti tam tikras simbolių kategorijas reguliariosiose išraiškose, apimančios skirtingus Unikodo rinkinius. Pavyzdžiui, posakis „qr! \p{nv= /(?x) \A [0-5] \z / }! leidžia pasirinkti visus Unicode simbolius, kurie apibrėžia skaičius nuo 0 iki 5, įskaitant skaičių rašybos tajų arba bengalų kalbas;
  • Pridėtas įvardintų simbolių palaikymas reguliariosiose išraiškose
    vidiniai modeliai, atskirti pavienėmis kabutėmis (qr'\N{vardas}');

  • Unicode specifikacijų palaikymas atnaujintas iki versijos 12.1. Eksperimentinės plėtros vėliavėlė pašalinta iš skambučių sv_utf8_downgrade ir sv_utf8_decode, naudojamas kuriant plėtinius C kalba;
  • Pridėta galimybė kurti perl, įgyvendinant operacijas su lokale, kuri palaiko kelių gijų operaciją (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Anksčiau toks diegimas buvo naudojamas tik kuriant kelių gijų Perl versiją, tačiau dabar ją galima įjungti bet kokiai versijai;
  • Sujungus „-Dv“ (patobulinto derinimo išvestis) ir „-Dr“ (regex derinimo) vėliavėles dabar įjungiami visi galimi reguliariųjų reiškinių derinimo režimai;
  • Anksčiau nebenaudojamos funkcijos buvo pašalintos:
    • Dabar galima naudoti kaip eilučių skyriklį ir pakaitos simbolius leidžiama naudoti tik grafemos (sudėtiniai Unicode simboliai neleidžiami).
    • Nutraukta palaiko kai kurias seniai pasenusias simbolio „{“ naudojimo reguliariosiose išraiškose formas, nepažeidžiant jo.
    • Draudžiama naudojant sysread(), syswrite(), recv() ir send() funkcijas su ":utf8" tvarkyklėmis.
    • Draudžiama naudoti „mano“ apibrėžimus iš prigimties klaidinguose sąlyginiuose teiginiuose (pvz., „mano $x, jei 0“).
    • Specialių kintamųjų „$*“ ir „$#“ palaikymas buvo pašalintas.
      Nutrauktas numanomas funkcijos dump() iškvietimas (dabar turite aiškiai nurodyti CORE::dump()).

    • Funkcija File::Glob::glob buvo pašalinta (turėtumėte naudoti File::Glob::bsd_glob).
    • Pridėta paketo () apsauga nuo neteisingų Unicode sekų grąžinimo.
    • Makrokomandų, atliekančių operacijas su UTF-8 XS kodu (C blokais), naudojimo nutraukimas atidėtas iki kito leidimo.
  • Našumo optimizavimas:
    • Vertimo operacijos iš UTF-8 į simbolių išdėstymą buvo paspartintos (kodo taškas), pavyzdžiui, norint atlikti operaciją ord(“\x7fff”) dabar reikia 12 % mažiau instrukcijų. Taip pat padidintas UTF-8 simbolių sekų teisingumo tikrinimo operacijų atlikimas;
    • Rekursyvūs skambučiai funkcijoje finalize_op() buvo pašalinti;
    • Atliktas nedidelis kodo optimizavimas, siekiant sutraukti identiškus simbolius ir apibrėžti simbolių klases įprastose išraiškose;
    • Optimizuotas pasirašyto tipo apibrėžimų konvertavimas į nepasirašytus (IV į UV);
    • Sveikųjų skaičių konvertavimo į eilutę algoritmas buvo paspartintas apdorojant du skaitmenis iš karto, o ne vieną;
    • Buvo padaryta patobulinimų paruoštas remiantis LGTM analize;
    • Optimizuotas kodas failuose regcomp.c, regcomp.h ir regexec.c;
    • Reguliariosiose išraiškose tokių šablonų kaip „qr/[^a]/“ su ASCII simboliais apdorojimas buvo žymiai paspartintas.
  • Minix3 platformos palaikymas buvo atkurtas. Galima kurti naudojant Microsoft Visual Studio 2019 kompiliatorių (Visual C++ 14.2);
  • Atnaujintos modulių versijos, įtrauktos į pagrindinį paketą. Moduliai buvo pašalinti iš pagrindinės kompozicijos B::Debug и Lokalė::Kodai.

Šaltinis: opennet.ru

Добавить комментарий