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.
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.