Liberasyon langaj pwogramasyon Perl 5.30.0

Apre 11 mwa devlopman pran plas lage yon nouvo branch ki estab nan langaj pwogram Perl - 5.30. Nan prepare nouvo lage a, apeprè 620 mil liy kòd yo te chanje, chanjman yo te afekte 1300 dosye, ak 58 devlopè te patisipe nan devlopman an.

Branch 5.30 te lage an akò ak orè devlopman fiks yo te apwouve sis ane de sa, ki vle di lage nouvo branch ki estab yon fwa pa ane ak degaje korektif chak twa mwa. Nan apeprè yon mwa, li planifye pou lage premye lage korektif Perl 5.30.1, ki pral korije erè ki pi enpòtan yo idantifye pandan aplikasyon Perl 5.30.0. Ansanm ak lage Perl 5.30, sipò pou branch 5.26 la te sispann, pou ki mizajou yo ka lage nan lavni sèlman si yo idantifye pwoblèm sekirite kritik. Pwosesis devlopman nan branch eksperimantal 5.31 la te kòmanse tou, sou baz yo pral fòme yon lage ki estab nan Perl 2020 nan mwa me 5.32.

Kle chanjman:

  • Yo ajoute sipò eksperimantal pou operasyon "" nan ekspresyon regilye yo.(?‹!modèl)"Ak"(?‹=modèl)» pou aksè limite a modèl yo te deja trete. Definisyon modèl la dwe nan 255 karaktè nan pwen referans lan;
  • Valè maksimòm espesifikasyon gwosè ("n") nan blòk ekspresyon regilye "{m,n}" yo ogmante a 65534;
  • Te ajoute limite sipòte mask pou mete aksan sou sèten kategori karaktè nan ekspresyon regilye, ki kouvri diferan seri Unicode. Pa egzanp, ekspresyon “qr! \p{nv= /(?x) \A [0-5] \z / }!” pèmèt ou chwazi tout karaktè Unicode ki defini nimewo yo soti nan 0 a 5, ki gen ladan òtograf Thai oswa Bengali nan nimewo;
  • Te ajoute sipò pou karaktè yo nonmen nan ekspresyon regilye
    modèl andedan delimite pa yon sèl guillemets (qr'\N{non}');

  • Sipò spesifikasyon Unicode mete ajou nan vèsyon an 12.1. Yo retire drapo devlopman eksperimantal la nan apèl yo sv_utf8_downgrade ak sv_utf8_decode, yo itilize nan devlopman ekstansyon nan lang C a;
  • Te ajoute kapasite pou konstwi perl ak aplikasyon operasyon ak yon lokal ki sipòte operasyon milti-threaded (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Anvan sa, yon aplikasyon sa a te itilize sèlman lè bati yon vèsyon milti-threaded nan Perl, men kounye a ka pèmèt pou nenpòt ki bati;
  • Konbine "-Dv" (pwodiksyon debogaj amelyore) ak "-Dr" (debogaj regex) kounye a lakòz tout mòd debogaj posib ekspresyon regilye yo dwe aktive;
  • Karakteristik yo te dekouraje deja yo te retire:
    • Kounye a ki disponib kòm séparateur liy ak karaktè wildcard pèmèt itilize sèlman grafèm (yo pa pèmèt karaktè Unicode konpoze).
    • Sispann sipò pou kèk fòm ki demode depi lontan nan itilize karaktè "{" nan ekspresyon regilye san yo pa chape li.
    • Li se entèdi lè l sèvi avèk sysread(), syswrite(), recv() ak send() fonksyon ak ":utf8" okipe.
    • Li entèdi pou itilize definisyon "mwen" nan deklarasyon kondisyonèl nannan fo (pa egzanp, "$x mwen si 0").
    • Yo retire sipò pou varyab espesyal "$*" ak "$#".
      Sipò pou apèl implicite nan dump() fonksyon an te sispann (ou dwe kounye a klèman presize CORE::dump()).

    • Yo retire fonksyon File::Glob::glob (ou ta dwe itilize File::Glob::bsd_glob).
    • Te ajoute pwoteksyon pou pack() kont retounen sekans Unicode ki pa kòrèk.
    • Fin sipò pou itilize makro ki fè operasyon ak UTF-8 nan kòd XS (blòk C) yo te ranvwaye jiskaske pwochen lage a.
  • Optimizasyon pèfòmans:
    • Operasyon tradiksyon soti nan UTF-8 rive nan layout karaktè yo te akselere (pwen kòd), pou egzanp, fè operasyon ord ("\x7fff") kounye a mande pou 12% mwens enstriksyon. Pèfòmans operasyon yo tcheke kòrèkteman sekans karaktè UTF-8 yo te ogmante tou;
    • Apèl rekursif nan fonksyon finalize_op() yo te elimine;
    • Te fè ti optimize nan kòd la pou efondre karaktè idantik ak defini klas karaktè nan ekspresyon regilye;
    • Optimize konvèti definisyon kalite ki siyen an definisyon ki pa siyen (IV nan UV);
    • Yo te akselere algorithm pou konvèti nonm antye yo nan yon fisèl pa trete de chif nan yon fwa olye pou yo youn;
    • Amelyorasyon yo te fè prepare baze sou analiz LGTM;
    • Kòd optimize nan dosye regcomp.c, regcomp.h ak regexec.c;
    • Nan ekspresyon regilye, pwosesis modèl tankou "qr/[^a]/" ak karaktè ASCII te akselere anpil.
  • Sipò pou platfòm Minix3 la retabli. Li posib pou konstwi lè l sèvi avèk Microsoft Visual Studio 2019 du (Visual C++ 14.2);
  • Mizajou vèsyon modil ki enkli nan pake debaz la. Modil yo te retire nan konpozisyon prensipal la B::Debug и Lokal::Kod.

Sous: opennet.ru

Add nouvo kòmantè