Perl 5.30 representa 11 meses de desarrollo desde Perl 5.28.0 y contiene aproximadamente 620 000 líneas modificadas en 1300 archivos por parte de 58 autores.
Las novedades que trae (entre otras):
Cambios principales
- Soporte experimental de coincidencias previas de tamaño cero con patrones de longitud variable. Ya es posible escribir patrones así: (?<!ba{1,9}r)
- El límite superior "n" especificado en un cuantificador de expresión regular de la forma "{m,n}" se ha doblado a 65534.
- Soporte a Unicode 12.1.
- Soporte parcial para uso de comodines en las especificaciones de valores de propiedades Unicode. r! \p{nv= /(?x) \A [0-5] \z / }! coincide con todos los puntos de código Unicode cuyo valor numérico está entre 0 y 5 inclusives. Así que coincidirá con los dígitos Thai o Bengalí cuyos valores numéricos son 0, 1, 2, 3, 4 o 5.
- Soporte para qr'\N{nombre}' (evaluar un carácter por medio de \N en una expresión regular entrecomillada simple).
- Soporte previo para el Turco en UTF-8.
- Ahora es posible compilar perl para que sea siempre use operaciones de localización seguras multihilo.
- Es fatal asignar a un valor no verdadero a $[.
- Los delimitadores ahora deben ser grafemas.
- Ahora es ilegal algunos usos obsoletos de la llave de apertura en patrones de expresiones regulares.
- Ahora es fatal usar sysread()/syswrite() obsoletos sobre identificadores :utf8.
- Prohibido usar my() en una condición falsa. Ya no es posible escribir my $x if 0
- Fatal usar $* y $#
- Fatal usar dump() sin cualificar. Ahora hay que escribirlo así: CORE::dump()
- Eliminada la función File::Glob::glob(). Usar en su lugar File::Glob::bsd_glob()
- pack() ya no devuelve una cadena UTF-8 mal formada
- Cualquier conjunto de dígitos en el conjunto completo de caracteres son legales en la ejecución de otro script. Aparte de los dígitos conocidos ([0-9]) existen muchos otros en el estándar Unicode. Ahora, todos los dígitos en una ejecución deben ser del mismo conjunto de diez dígitos.
- JSON::PP tiene activa la opción allow_nonref por defecto
- En código XS, el uso de varias macros que gestionan UTF-8.
- La traducción de UTF-8 al punto de código que representa se realiza ahora por medio de un autómata de estados finito, aumentando la velocidad.
- Eliminada la recursión de finalize_op().
- Un puñado de pequeñas optimizaciones relacionadas con el plegado de caracteres y clases de caracteres en expresiones regulares.
- Optimización de conversiones de IV a UV.
- Aumento de velocidad de la conversión en texto de un entero procesando dos dígitos cada vez en lugar de uno.
- Mejoras basadas en análisis y recomendación del LGTM.
- Optimizaciones de código en regcomp.c, regcomp.h, regexec.c.
- Coincidencia de patrones en exp. reg. de cosas como qr/[^a]/ ahora es significativamente más rápida, donde a es cualquier carácter ASCII.
- B::Debug
- Locale::Codes