Eldono de la programlingvo Perl 5.30.0

Post 11 monatoj da evoluo okazis liberigo de nova stabila branĉo de la Perl programlingvo - 5.30. Preparante la novan eldonon, proksimume 620 mil linioj de kodo estis ŝanĝitaj, la ŝanĝoj influis 1300 dosierojn, kaj 58 programistoj partoprenis en la evoluo.

Branĉo 5.30 estis liberigita laŭ la fiksa disvolva horaro aprobita antaŭ ses jaroj, kio implicas la liberigon de novaj stabilaj branĉoj unufoje jare kaj korektajn eldonojn ĉiujn trimonatojn. Post ĉirkaŭ unu monato, estas planite liberigi la unuan korektan eldonon de Perl 5.30.1, kiu korektos la plej signifajn erarojn identigitajn dum la efektivigo de Perl 5.30.0. Kune kun la liberigo de Perl 5.30, subteno por la branĉo 5.26 estis nuligita, por kiu ĝisdatigoj povas esti publikigitaj estonte nur se kritikaj sekurecaj problemoj estas identigitaj. La disvolva procezo de la eksperimenta branĉo 5.31 ankaŭ komenciĝis, surbaze de kiu stabila eldono de Perl 2020 estos formita en majo 5.32.

Ŝlosilo ŝanĝi:

  • Eksperimenta subteno por "" operacioj estis aldonita al regulaj esprimoj.(?‹!ŝablono)"Kaj"(?‹=ŝablono)» por limigita aliro al antaŭe prilaboritaj nomitaj ŝablonoj. La ŝablonodifino devas esti ene de 255 signoj de la referencpunkto;
  • La maksimuma valoro de la grandeco-specifilo ("n") en "{m,n}" regulaesprimblokoj estis pliigita al 65534;
  • Aldonita limigita subteno maskoj por reliefigi certajn kategoriojn da signoj en regulaj esprimoj, kovrante malsamajn Unikodajn arojn. Ekzemple, la esprimo “qr! \p{nv= /(?x) \A [0-5] \z / }!” permesas elekti ĉiujn Unikodajn signojn, kiuj difinas la nombrojn de 0 ĝis 5, inkluzive de tajlandaj aŭ bengalaj literumoj de nombroj;
  • Aldonita subteno por nomitaj signoj en regulaj esprimoj
    ene de ŝablonoj limigitaj per unuopaj citiloj (qr'\N{nomo}');

  • Unikoda specifsubteno ĝisdatigita al versio 12.1. La flago de eksperimenta evoluo estis forigita de vokoj sv_utf8_downgrade kaj sv_utf8_decode, uzata en la evoluo de etendaĵoj en la C-lingvo;
  • Aldonita la kapablo konstrui perl kun efektivigo de operacioj kun loko kiu subtenas plurfadenan operacion (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Antaŭe, tia efektivigo estis uzata nur dum konstruado de plurfadena versio de Perl, sed nun povas esti ebligita por iu ajn konstruo;
  • Kombini la flagojn "-Dv" (plifortigita sencimiga eligo) kaj "-Dr" (regekso-sencimigado) nun ebligas ĉiujn eblajn sencimigajn reĝimojn de regula esprimo;
  • Trajtoj antaŭe malrekomenditaj estis forigitaj:
    • Nun havebla kiel linio apartigilo kaj ĵokeraj signoj permesite uzi nur grafemoj (kunmetitaj Unikodaj signoj ne estas permesitaj).
    • ĉesigita subteno por kelkaj longe malnoviĝintaj formoj de uzado de la "{" signo en regulaj esprimoj sen eskapi ĝin.
    • Estas malpermesite uzante la sysread(), syswrite(), recv() kaj send() funkciojn kun ":utf8" pritraktiloj.
    • Estas malpermesite uzi difinojn de "mia" en esence falsaj kondiĉaj deklaroj (ekzemple, "mia $x se 0").
    • Subteno por specialaj variabloj "$*" kaj "$#" estis forigita.
      Subteno por implica voko de la dump() funkcio estis nuligita (vi nun devas eksplicite specifi CORE::dump()).

    • La funkcio File::Glob::glob estis forigita (vi uzu File::Glob::bsd_glob).
    • Aldonita protekto al pack() kontraŭ reveno de malĝustaj Unikodaj sekvencoj.
    • La fino de subteno por la uzo de makrooj kiuj plenumas operaciojn kun UTF-8 en XS-kodo (C-blokoj) estis prokrastita ĝis la venonta eldono.
  • Efikecoptimumigoj:
    • Tradukoperacioj de UTF-8 al signo-aranĝo estis akcelitaj (kodpunkto), ekzemple, plenumi la operacion ord(“\x7fff”) nun postulas 12% malpli da instrukcioj. La agado de operacioj kontrolantaj la ĝustecon de UTF-8-sinsekvoj ankaŭ estis pliigita;
    • Rekursivaj vokoj en la funkcio finalize_op() estis forigitaj;
    • Faris negravajn optimumigojn al la kodo por kolapsado de identaj signoj kaj difinado de signoklasoj en regulaj esprimoj;
    • Optimumigita konvertado de subskribitaj tipdifinoj al nesubskribitaj (IV al UV);
    • La algoritmo por konverti entjerojn en ĉenon estis akcelita per prilaborado de du ciferoj samtempe anstataŭ unu;
    • Plibonigoj estis faritaj preparita surbaze de analizo de LGTM;
    • Optimumigita kodo en dosieroj regcomp.c, regcomp.h kaj regexec.c;
    • En regulaj esprimoj, la prilaborado de ŝablonoj kiel "qr/[^a]/" kun ASCII-signoj estis signife akcelita.
  • Subteno por la platformo Minix3 estis restarigita. Eblas konstrui per la kompililo Microsoft Visual Studio 2019 (Visual C++ 14.2);
  • Ĝisdatigitaj versioj de moduloj inkluzivitaj en la baza pako. Moduloj estis forigitaj de la ĉefa komponado B::Elpurigi и Loko::Kodoj.

fonto: opennet.ru

Aldoni komenton