Lanzamiento del lenguaje de programación Perl 5.30.0

Después de 11 meses de desarrollo. tuvo lugar lanzamiento de una nueva rama estable del lenguaje de programación Perl - 5.30. Durante la preparación de la nueva versión, se cambiaron alrededor de 620 mil líneas de código, los cambios afectaron a 1300 archivos y en el desarrollo participaron 58 desarrolladores.

La rama 5.30 fue liberada de acuerdo con el cronograma de desarrollo fijo aprobado hace seis años, lo que implica el lanzamiento de nuevas ramas estables una vez al año y lanzamientos correctivos cada tres meses. En aproximadamente un mes, está previsto lanzar la primera versión correctiva de Perl 5.30.1, que corregirá los errores más importantes identificados durante la implementación de Perl 5.30.0. Junto con el lanzamiento de Perl 5.30, se suspendió el soporte para la rama 5.26, para la cual es posible que se publiquen actualizaciones futuras sólo si se identifican problemas de seguridad críticos. También ha comenzado el proceso de desarrollo de la rama experimental 5.31, a partir de la cual se formará una versión estable de Perl 2020 en mayo de 5.32.

Llave cambios:

  • Se ha agregado soporte experimental para operaciones "" a las expresiones regulares.(?<!patrón)"Y"(? ‹= patrón)» para acceso limitado a plantillas con nombre procesadas previamente. La definición del patrón debe estar dentro de los 255 caracteres del punto de referencia;
  • El valor máximo del especificador de tamaño (“n”) en los bloques de expresión regular “{m,n}” se ha incrementado a 65534;
  • Añadido limitado apoyar máscaras para resaltar ciertas categorías de caracteres en expresiones regulares, que cubren diferentes conjuntos Unicode. Por ejemplo, la expresión “qr! \p{nv= /(?x) \A [0-5] \z / }!” le permite seleccionar todos los caracteres Unicode que definen los números del 0 al 5, incluida la ortografía tailandesa o bengalí de los números;
  • Se agregó soporte para caracteres con nombre en expresiones regulares.
    patrones internos delimitados por comillas simples (qr’\N{name}’);

  • Soporte de especificación Unicode actualizado a la versión 12.1. La bandera de desarrollo experimental se ha eliminado de las llamadas. sv_utf8_downgrade y sv_utf8_decode, utilizado en el desarrollo de extensiones en lenguaje C;
  • Se agregó la capacidad de compilar Perl con la implementación de operaciones con una configuración regional que admita operaciones de subprocesos múltiples (-Accflags=’-DUSE_THREAD_SAFE_LOCALE’). Anteriormente, esta implementación se utilizaba sólo al compilar una versión multiproceso de Perl, pero ahora se puede habilitar para cualquier compilación;
  • La combinación de los indicadores "-Dv" (salida de depuración mejorada) y "-Dr" (depuración de expresiones regulares) ahora hace que se habiliten todos los modos posibles de depuración de expresiones regulares;
  • Se han eliminado las funciones anteriormente obsoletas:
    • Ahora disponible como separador de línea y caracteres comodín. permitido Usar unicamente grafemas (No se permiten caracteres Unicode compuestos).
    • Interrumpido soporte para algunas formas obsoletas de usar el carácter "{" en expresiones regulares sin escapar de él.
    • Prohibido usando las funciones sysread(), syswrite(), recv() y send() con controladores ":utf8".
    • Está prohibido utilizar definiciones de "mi" en declaraciones condicionales inherentemente falsas (por ejemplo, "mi $x si 0").
    • Se ha eliminado la compatibilidad con variables especiales “$*” y “$#”.
      Se ha descontinuado la compatibilidad con llamadas implícitas a la función dump() (ahora debe especificar explícitamente CORE::dump()).

    • La función File::Glob::glob ha sido eliminada (debe usar File::Glob::bsd_glob).
    • Se agregó protección a pack() contra la devolución de secuencias Unicode no válidas.
    • El fin del soporte para el uso de macros que realizan operaciones con UTF-8 en código XS (bloques C) se ha pospuesto hasta la próxima versión.
  • Optimizaciones de rendimiento:
    • Se han acelerado las operaciones de traducción de UTF-8 al diseño de caracteres (punto de código), por ejemplo, realizar la operación ord(“\x7fff”) ahora requiere un 12% menos de instrucciones. También se ha aumentado la realización de operaciones que verifican la exactitud de las secuencias de caracteres UTF-8;
    • Se han eliminado las llamadas recursivas en la función finalize_op();
    • Se realizaron optimizaciones menores al código para contraer caracteres idénticos y definir clases de caracteres en expresiones regulares;
    • Optimizado convertir definiciones de tipos con signo a sin signo (IV a UV);
    • El algoritmo para convertir números enteros en una cadena se ha acelerado procesando dos dígitos a la vez en lugar de uno;
    • Se han realizado mejoras preparado basado en análisis de LGTM;
    • Código optimizado en los archivos regcomp.c, regcomp.h y regexec.c;
    • En expresiones regulares, el procesamiento de patrones como “qr/[^a]/” con caracteres ASCII se ha acelerado significativamente.
  • Se ha restablecido el soporte para la plataforma Minix3. Es posible compilar utilizando el compilador Microsoft Visual Studio 2019 (Visual C++ 14.2);
  • Versiones actualizadas de los módulos incluidos en el paquete básico. Se han eliminado módulos de la composición principal. B::Depurar и Locale :: Códigos.

Fuente: opennet.ru

Añadir un comentario