Lanzamento da linguaxe de programación Perl 5.30.0

Despois de 11 meses de desenvolvemento tivo lugar lanzamento dunha nova rama estable da linguaxe de programación Perl - 5.30. Na preparación da nova versión, modificáronse preto de 620 mil liñas de código, os cambios afectaron a 1300 ficheiros e 58 desenvolvedores participaron no desenvolvemento.

A rama 5.30 lanzouse de acordo co calendario de desenvolvemento fixo aprobado hai seis anos, o que implica o lanzamento de novas ramas estables unha vez ao ano e os lanzamentos correctores cada tres meses. En aproximadamente un mes, está previsto lanzar a primeira versión correctiva de Perl 5.30.1, que corrixirá os erros máis significativos identificados durante a implementación de Perl 5.30.0. Xunto co lanzamento de Perl 5.30, o soporte para a rama 5.26 foi descontinuado, para o que só se poden publicar actualizacións no futuro se se identifican problemas de seguridade críticos. Tamén comezou o proceso de desenvolvemento da rama experimental 5.31, sobre a base do cal se formará unha versión estable de Perl 2020 en maio de 5.32.

Chave cambios:

  • Engadiuse soporte experimental ás operacións "" ás expresións regulares.(?‹!patrón)"E"(?‹=patrón)» para un acceso limitado a modelos con nome procesados ​​previamente. A definición do patrón debe estar dentro dos 255 caracteres do punto de referencia;
  • O valor máximo do especificador de tamaño ("n") nos bloques de expresións regulares "{m,n}" aumentouse a 65534;
  • Engadido limitado apoiar máscaras para resaltar determinadas categorías de caracteres en expresións regulares, que abarcan diferentes conxuntos Unicode. Por exemplo, a expresión "qr! \p{nv= /(?x) \A [0-5] \z / }!" permítelle seleccionar todos os caracteres Unicode que definen os números do 0 ao 5, incluíndo a ortografía dos números en tailandés ou bengalí;
  • Engadido soporte para caracteres con nome en expresións regulares
    dentro de patróns delimitados por comiñas simples (qr’\N{nome}’);

  • Compatibilidade coa especificación Unicode actualizada á versión 12.1. Eliminouse a bandeira de desenvolvemento experimental das chamadas sv_utf8_downgrade e sv_utf8_decode, usado no desenvolvemento de extensións na linguaxe C;
  • Engadiuse a capacidade de construír Perl coa implementación de operacións cunha configuración rexional que admita operacións multiproceso (-Accflags=’-DUSE_THREAD_SAFE_LOCALE’). Anteriormente, tal implementación só se usaba cando se construía unha versión multi-fíos de Perl, pero agora pódese habilitar para calquera compilación;
  • A combinación das marcas "-Dv" (saída de depuración mellorada) e "-Dr" (depuración de expresións rex.) agora fai que se activen todos os modos de depuración de expresións regulares posibles;
  • Elimináronse as funcións anteriormente obsoletas:
    • Agora dispoñible como separador de liñas e comodíns permitidas usar só grafemas (Non se permiten caracteres Unicode compostos).
    • Descontinuado soporte para algunhas formas obsoletas de usar o carácter "{" en expresións regulares sen escapar del.
    • Prohíbese usando as funcións sysread(), syswrite(), recv() e send() con controladores ":utf8".
    • Está prohibido usar definicións de "meu" en declaracións condicionais inherentemente falsas (por exemplo, "meu $x se 0").
    • Eliminouse a compatibilidade coas variables especiais "$*" e "$#".
      O soporte para a chamada implícita da función dump() foi descontinuado (agora debes especificar explícitamente CORE::dump()).

    • A función File::Glob::glob foi eliminada (debería usar File::Glob::bsd_glob).
    • Engadiuse protección a pack() contra a devolución de secuencias Unicode non válidas.
    • O fin do soporte para o uso de macros que realizan operacións con UTF-8 en código XS (bloques C) aprazouse ata a próxima versión.
  • Optimizacións de rendemento:
    • Aceleráronse as operacións de tradución de UTF-8 ao deseño de caracteres (punto de código), por exemplo, realizar a operación ord(“\x7fff”) agora require un 12 % menos de instrucións. Tamén se incrementou o rendemento das operacións de comprobación da corrección das secuencias de caracteres UTF-8;
    • As chamadas recursivas na función finalize_op() foron eliminadas;
    • Optimizacións menores no código para contraer caracteres idénticos e definir clases de caracteres en expresións regulares;
    • Optimizado conversión de definicións de tipos asinados a non asinados (IV a UV);
    • O algoritmo para converter números enteiros nunha cadea foi acelerado procesando dous díxitos á vez en lugar dun;
    • Realizáronse melloras preparado baseado na análise de LGTM;
    • Código optimizado nos ficheiros regcomp.c, regcomp.h e regexec.c;
    • Nas expresións regulares, o procesamento de patróns como “qr/[^a]/” con caracteres ASCII acelerouse significativamente.
  • Restableceuse o soporte para a plataforma Minix3. É posible construír usando o compilador Microsoft Visual Studio 2019 (Visual C++ 14.2);
  • Versións actualizadas dos módulos incluídos no paquete básico. Elimináronse módulos da composición principal B::Depurar и Local::Codes.

Fonte: opennet.ru

Engadir un comentario