Paglabas ng programming language na Perl 5.30.0

Pagkatapos ng 11 na buwan ng pag-unlad naganap paglabas ng isang bagong matatag na sangay ng Perl programming language - 5.30. Sa paghahanda ng bagong release, humigit-kumulang 620 libong mga linya ng code ang nabago, ang mga pagbabago ay nakaapekto sa 1300 mga file, at 58 mga developer ang nakibahagi sa pag-unlad.

Ang Branch 5.30 ay inilabas alinsunod sa nakapirming iskedyul ng pag-unlad na naaprubahan anim na taon na ang nakakaraan, na nagpapahiwatig ng pagpapalabas ng mga bagong stable na sangay isang beses sa isang taon at corrective release bawat tatlong buwan. Sa humigit-kumulang isang buwan, pinlano na ilabas ang unang corrective release ng Perl 5.30.1, na magwawasto sa pinakamahalagang error na natukoy sa panahon ng pagpapatupad ng Perl 5.30.0. Kasabay ng paglabas ng Perl 5.30, ang suporta para sa 5.26 na sangay ay hindi na ipinagpatuloy, kung saan ang mga pag-update ay maaaring ilabas lamang sa hinaharap kung matukoy ang mga kritikal na problema sa seguridad. Nagsimula na rin ang proseso ng pag-develop ng experimental branch 5.31, kung saan ang isang matatag na release ng Perl 2020 ay bubuo sa Mayo 5.32.

Susi pagbabago:

  • Ang pang-eksperimentong suporta para sa mga operasyong "" ay idinagdag sa mga regular na expression.(?β€Ή!pattern)"At"(?β€Ή=pattern)Β» para sa limitadong access sa dating naprosesong pinangalanang mga template. Ang kahulugan ng pattern ay dapat nasa loob ng 255 character ng reference point;
  • Ang maximum na halaga ng size specifier (β€œn”) sa β€œ{m,n}” na regular na mga bloke ng expression ay nadagdagan sa 65534;
  • Idinagdag na limitado sinusuportahan mask upang i-highlight ang ilang partikular na kategorya ng mga character sa mga regular na expression, na sumasaklaw sa iba't ibang Unicode set. Halimbawa, ang pananalitang β€œqr! \p{nv= /(?x) \A [0-5] \z / }!” nagbibigay-daan sa iyong piliin ang lahat ng mga Unicode na character na tumutukoy sa mga numero mula 0 hanggang 5, kasama ang Thai o Bengali na mga spelling ng mga numero;
  • Nagdagdag ng suporta para sa mga pinangalanang character sa mga regular na expression
    mga pattern sa loob na nililimitahan ng mga solong quote (qr'\N{name}');

  • Ang suporta sa pagtutukoy ng Unicode ay na-update sa bersyon 12.1. Ang flag ng experimental development ay inalis sa mga tawag sv_utf8_downgrade at sv_utf8_decode, ginagamit sa pagbuo ng mga extension sa wikang C;
  • Nagdagdag ng kakayahang bumuo ng perl sa pagpapatupad ng mga pagpapatakbo na may lokal na sumusuporta sa multi-threaded na operasyon (-Accflags=’-DUSE_THREAD_SAFE_LOCALE’). Dati, ang naturang pagpapatupad ay ginagamit lamang kapag bumubuo ng multi-threaded na bersyon ng Perl, ngunit maaari na ngayong paganahin para sa anumang build;
  • Ang pagsasama-sama ng mga flag na "-Dv" (pinahusay na pag-debug na output) at "-Dr" (regex debugging) ay nagiging sanhi ng lahat ng posibleng mga mode ng pag-debug ng regular na expression upang paganahin;
  • Inalis ang mga feature na dati nang hindi ginagamit:
    • Available na ngayon bilang line separator at wildcard na mga character pinapayagan gamitin lamang graphemes (hindi pinapayagan ang mga composite na Unicode na character).
    • Itinigil suporta para sa ilang matagal nang hindi ginagamit na paraan ng paggamit ng character na β€œ{” sa mga regular na expression nang hindi ito tinatakasan.
    • Ito ay ipinagbabawal gamit ang mga function na sysread(), syswrite(), recv() at send() na may mga handler na ":utf8".
    • Ipinagbabawal ang paggamit ng mga kahulugan ng "aking" sa likas na maling kondisyong mga pahayag (halimbawa, "aking $x kung 0").
    • Ang suporta para sa mga espesyal na variable na "$*" at "$#" ay tinanggal.
      Ang suporta para sa implicit na pagtawag ng dump() function ay hindi na ipinagpatuloy (dapat mo na ngayong tahasang tukuyin ang CORE::dump()).

    • Ang File::Glob::glob function ay tinanggal na (dapat mong gamitin ang File::Glob::bsd_glob).
    • Nagdagdag ng proteksyon sa pack() laban sa pagbabalik ng mga maling Unicode sequence.
    • Ang pagtatapos ng suporta para sa paggamit ng mga macro na gumaganap ng mga operasyon sa UTF-8 sa XS code (C blocks) ay ipinagpaliban hanggang sa susunod na paglabas.
  • Mga Pag-optimize sa Pagganap:
    • Ang mga pagpapatakbo ng pagsasalin mula sa UTF-8 patungo sa layout ng character ay pinabilis (code point), halimbawa, ang pagsasagawa ng ord(β€œ\x7fff”) na operasyon ay nangangailangan na ngayon ng 12% na mas kaunting mga tagubilin. Nadagdagan din ang pagganap ng mga operasyong sumusuri sa kawastuhan ng mga pagkakasunud-sunod ng karakter ng UTF-8;
    • Ang mga recursive na tawag sa finalize_op() function ay inalis na;
    • Gumawa ng mga menor de edad na pag-optimize sa code para sa pagbagsak ng magkatulad na mga character at pagtukoy ng mga klase ng character sa mga regular na expression;
    • Na-optimize pag-convert ng mga kahulugan ng nilagdaang uri sa mga hindi nilagdaan (IV sa UV);
    • Ang algorithm para sa pag-convert ng mga integer sa isang string ay pinabilis sa pamamagitan ng pagproseso ng dalawang digit nang sabay-sabay sa halip na isa;
    • Ang mga pagpapabuti ay ginawa pinaghandaan batay sa pagsusuri ng LGTM;
    • Na-optimize na code sa mga file na regcomp.c, regcomp.h at regexec.c;
    • Sa mga regular na expression, ang pagpoproseso ng mga pattern tulad ng "qr/[^a]/" na may mga ASCII na character ay lubos na pinabilis.
  • Ang suporta para sa platform ng Minix3 ay naibalik. Posibleng bumuo gamit ang Microsoft Visual Studio 2019 compiler (Visual C++ 14.2);
  • Mga na-update na bersyon ng mga module na kasama sa pangunahing pakete. Ang mga module ay tinanggal mula sa pangunahing komposisyon B:: Debug ΠΈ Lokal::Mga Code.

Pinagmulan: opennet.ru

Magdagdag ng komento