• Publicidad

Salió Perl v5.28.0

Novedades y noticias acerca de todo lo relacionado a Perl.

Salió Perl v5.28.0

Notapor explorer » 2018-06-23 11:45 @531

Ya tenemos nueva versión de Perl, la v5.28.0.

Perl 5.28.0 representa, aproximadamente, 13 meses de desarrollo desde Perl 5.26.0 y contiene aproximadamente 730 000 líneas modificadas en 2200 archivos por parte de 77 autores.

Las novedades que trae:

Cambios principales
  • Soporte para Unicode 10
  • delete sobre porciones hash de pares clave/valor
  • Experimentalmente, ahora tenemos sinónimos alfabéticos para algunas aserciones en expresiones regulares
  • Detectable la mezcla de tipos de letra Unicode
  • Más segura la edición in-situ con perl -i
  • Inicialización de agregados de variables estáticas
  • Soporte para tamaños de inodo más grandes
  • El modificador de formato %j de sprintf ahora está disponible con los compiladores pre-C99
  • El indicador close-on-exec se establece de forma atómica
  • Las operaciones de número y cadena de bits ya no son experimentales
  • Las configuraciones regionales son seguras a nivel de hilos de ejecución en los sistemas que los soporten
  • Nueva variable predefinida de solo lectura ${^SAFE_LOCALES}
Seguridad
  • [CVE-2017-12837] Sobrecarga de la pila en el compilador de expresiones regulares
  • [CVE-2017-12883] Sobrecarga del búfer en el intérprete de expresiones regulares
  • [CVE-2017-12814] Sobrecarga del búfer de pilas $ENV{$key} en Windows
  • Cambio de la función hash por defecto
Cambios incompatibles
  • Orden de los atributos y firma de las subrutinas
  • Ya no se permiten listas de variables sin comas en los formatos
  • Se han eliminado los atributos :locked y :unique
  • \N{} sin nada entre las llaves es ahora ilegal
  • Ya no se permite usar el mismo símbolo tanto como identificador de archivo como de directorio
  • Ya no se permite el uso de << como si fuera <<""
  • Ya no se permite establecer $/ a una referencia a un entero no positivo
  • Los puntos de código Unicode con valores que excedan IV_MAX ahora son fatales
  • Se ha eliminado el método B::OP::terse
  • Ya no se permite el uso de AUTOLOAD heredado para los no-métodos
  • Ya no se permite el uso de cadenas de caracteres con puntos de código por encima de 0xFF para los operadores de cadenas de bits
  • Establecer ${^ENCODING} a un valor definido ahora es ilegal
  • Las barras inversas ya no escapan los caracteres de dos puntos en PATH para la opción -S
  • Se ha eliminado la característica inexistente -DH (DEBUG_H)
  • Yada-yada ya es, estrictamente, una sentencia
  • Ya no se puede especificar el algoritmo para sort
  • Dígitos de distinta base en literales de punto flotante
  • Tipo de retorno de unpackstring()
Obsolescencias
  • El uso de vec en cadenas de caracteres con puntos de código por encima de 0xFF es obsoleto
  • Algunos usos de "{" no escapadas en exp. reg. ahora son fatales
  • El uso de una "{" no escapada inmediatamente después de un "(" en patrones de exp. reg. es obsoleto
  • La asignación a $[ será fatal en Perl v5.30
  • hostname() no aceptará argumentos en Perl v5.32
Módulos eliminados
  • B::Debug
Mejoras de rendimiento
  • Se ha reducido enormemente la sobrecarga en el arranque de la creación de patrones de exp. reg. con propiedades Unicode (\p{...})
  • Muchas expresiones de concatenación de cadenas de caracteres ahora son mucho más rápidas, debido a la introducción del código de operación interna multiconcat que combina múltiples concatenaciones, y opcionalmente un "=" o ".=", en una sola acción. Por ejemplo, aparte de recuperar $s, $a y $b, toda esta expresión se gestiona en una única operación:
    Sintáxis: [ Descargar ] [ Ocultar ]
    Using perl Syntax Highlighting
    1.     $s .= "a=$a b=$b\n"
    Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

    Como caso especial, si la parte izquierda de una asignación es una variable léxica, o my $s, la propia operación recupera la variable léxica, que es mucho más rápido.
    En general, cuanto más expresiones incluyan una mezcla de cadenas constantes y expresiones de variable, mayor sea la longitud, y más se mezclen juntos cadenas utf8 con otras que no, será más marcada la mejora. Por ejemplo, en un sistema x86_64, se ha medido que este código se ejecuta cuatro veces más rápido:
    Sintáxis: [ Descargar ] [ Ocultar ]
    Using perl Syntax Highlighting
    1.     my $s;
    2.     my $a = "ab\x{100}cde";
    3.     my $b = "fghij";
    4.     my $c = "\x{101}klmn";
    5.  
    6.     for my $i (1..10_000_000) {
    7.         $s = "\x{100}wxyz";
    8.         $s .= "foo=$a bar=$b baz=$c";
    9.     }
    Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

    Además, las expresiones sprintf que tengan un formato constante conteniendo solo elementos de formato %s y %%, y que tengan un número fijo de argumentos, ahora se optimizan en una operación multiconcat.
  • La función incorporada ref() es ahora mucho más rápida en contexto booleano, ya que no se preocupa en construir una cadena temporal como Foo=ARRAY(0x134af48).
  • keys() en contexto vacío y escalar es ahora más eficiente.
  • El modismo de comparar el resultado de index() con -1 se ha optimizado específicamente. Por ejemplo,
    Sintáxis: [ Descargar ] [ Ocultar ]
    Using perl Syntax Highlighting
    1.     if (index(...) != -1) { ... }
    Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
  • Bucles for() y construcciones similares ahora son más eficientes en la mayor parte de los casos.
  • File::Glob se ha modificado para eliminar innecesarios pasos atrás y recursiones, gracias a Russ Cox. Vea https://research.swtch.com/glob para más detalles.
  • La función de la API XS-level SvTRUE() API ahora es más eficiente.
  • Varias operaciones que devuelven enteros ahora son más eficientes en contexto escalar/booleano.
  • Las llamadas a require de un módulo que ya está cargado es ahora ligeramente más rápido. [perl #132171]
  • El rendimiento de la coincidencia de patrones con [[:ascii:]] y [[:^ascii:]] se ha mejorado ligeramente excepto en las plataformas EBCDIC.
  • Se han aplicado varias optimizaciones a la coincidencia con patrones de expresiones regulares, así que bajo ciertas circunstancias, se notarán ganancias de rendimiento significativas. Pero en una aplicación con muchos patrones distintos, se verá muy poca mejora.
  • Se han aplicado otras mejoras a la gestión de UTF-8, pero no son un factor principal en la mayor parte de las aplicaciones.
Módulos y Pragmas
  • Eliminación de use vars
  • El uso de DynaLoader se cambia por XSLoader en muchos módulos
Plataformas discontinuadas
  • PowerUX / Power MAX OS
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Publicidad

Volver a Noticias de Perl

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado