Llançament del llenguatge de programació Perl 5.30.0

Després de 11 mesos de desenvolupament tingué lloc llançament d'una nova branca estable del llenguatge de programació Perl - 5.30. En preparar la nova versió, es van canviar unes 620 mil línies de codi, els canvis van afectar 1300 fitxers i 58 desenvolupadors van participar en el desenvolupament.

La branca 5.30 es va llançar d'acord amb el calendari de desenvolupament fix aprovat fa sis anys, que implica l'alliberament de noves sucursals estables un cop l'any i llançaments correctius cada tres mesos. En aproximadament un mes, està previst llançar la primera versió correctiva de Perl 5.30.1, que corregirà els errors més significatius identificats durant la implementació de Perl 5.30.0. Juntament amb el llançament de Perl 5.30, el suport per a la branca 5.26 es va suspendre, per a la qual es poden publicar actualitzacions futures només si s'identifiquen problemes de seguretat crítics. També s'ha iniciat el procés de desenvolupament de la branca experimental 5.31, sobre la base del qual es formarà una versió estable de Perl 2020 el maig de 5.32.

Clau canvis:

  • S'ha afegit suport experimental per a les operacions "" a les expressions regulars.(?‹!patró)"I"(?‹=patró)» per a un accés limitat a les plantilles amb nom processades anteriorment. La definició del patró ha d'estar dins dels 255 caràcters del punt de referència;
  • El valor màxim de l'especificador de mida ("n") als blocs d'expressió regular "{m,n}" s'ha augmentat a 65534;
  • S'ha afegit limitat donar suport màscares per ressaltar determinades categories de caràcters en expressions regulars, que cobreixen diferents conjunts Unicode. Per exemple, l'expressió “qr! \p{nv= /(?x) \A [0-5] \z / }!" us permet seleccionar tots els caràcters Unicode que defineixen els números del 0 al 5, incloses les grafies tailandeses o bengalíes dels números;
  • S'ha afegit suport per a caràcters amb nom en expressions regulars
    patrons interiors delimitats per cometes simples (qr'\N{nom}');

  • S'ha actualitzat el suport d'especificacions Unicode a la versió 12.1. La marca de desenvolupament experimental s'ha eliminat de les trucades sv_utf8_downgrade i sv_utf8_decode, utilitzat en el desenvolupament d'extensions en llenguatge C;
  • S'ha afegit la possibilitat de crear perl amb la implementació d'operacions amb una configuració regional que admet operacions multifils (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Anteriorment, aquesta implementació només s'utilitzava quan es creava una versió multifils de Perl, però ara es pot habilitar per a qualsevol compilació;
  • La combinació dels indicadors "-Dv" (sortida de depuració millorada) i "-Dr" (depuració d'expressions regulars) ara fa que s'habilitin tots els modes de depuració d'expressions regulars possibles;
  • Les funcions anteriorment obsoletes s'han eliminat:
    • Ara disponible com a separador de línies i caràcters comodí permès utilitzar només grafemes (No es permeten caràcters Unicode compostos).
    • Descatalogat suport per a algunes formes obsoletes d'utilitzar el caràcter "{" en expressions regulars sense escapar-hi.
    • està prohibit utilitzant les funcions sysread(), syswrite(), recv() i send() amb controladors ":utf8".
    • Està prohibit utilitzar definicions de "el meu" en declaracions condicionals inherentment falses (per exemple, "el meu $x si 0").
    • S'ha eliminat el suport per a variables especials "$*" i "$#".
      El suport per a la crida implícita de la funció dump() s'ha interromput (ara heu d'especificar explícitament CORE::dump()).

    • S'ha eliminat la funció File::Glob::glob (haurieu d'utilitzar File::Glob::bsd_glob).
    • S'ha afegit protecció a pack() contra el retorn de seqüències Unicode incorrectes.
    • El final del suport per a l'ús de macros que realitzen operacions amb UTF-8 en codi XS (blocs C) s'ha ajornat fins a la propera versió.
  • Optimitzacions de rendiment:
    • S'han accelerat les operacions de traducció d'UTF-8 al disseny de caràcters (punt de codi), per exemple, realitzar l'operació ord(“\x7fff”) ara requereix un 12% menys d'instruccions. També s'ha augmentat el rendiment de les operacions de comprovació de la correcció de les seqüències de caràcters UTF-8;
    • Les trucades recursives a la funció finalize_op() s'han eliminat;
    • S'han fet optimitzacions menors al codi per col·lapsar caràcters idèntics i definir classes de caràcters en expressions regulars;
    • Optimitzat convertir definicions de tipus signat en definicions sense signar (IV a UV);
    • L'algorisme per convertir nombres enters en una cadena s'ha accelerat processant dos dígits alhora en lloc d'un;
    • S'han fet millores preparat basat en l'anàlisi de LGTM;
    • Codi optimitzat als fitxers regcomp.c, regcomp.h i regexec.c;
    • En les expressions regulars, el processament de patrons com "qr/[^a]/" amb caràcters ASCII s'ha accelerat significativament.
  • S'ha restaurat el suport per a la plataforma Minix3. És possible construir mitjançant el compilador Microsoft Visual Studio 2019 (Visual C++ 14.2);
  • Versions actualitzades dels mòduls inclosos al paquet bàsic. Els mòduls s'han eliminat de la composició principal B::Depuració и Locale::Codis.

Font: opennet.ru

Afegeix comentari