Foros del Web » Programación para mayores de 30 ;) » Programación General »

Salió Perl v5.36

Estas en el tema de Salió Perl v5.36 en el foro de Programación General en Foros del Web. Ya tenemos nueva versión de Perl, la v5.36 . Perl 5.36.0 representa aproximadamente un año de desarrollo desde Perl 5.34.0 y contiene aproximadamente 250 000 ...
  #1 (permalink)  
Antiguo 30/05/2022, 06:43
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 523
Antigüedad: 16 años, 1 mes
Puntos: 11
De acuerdo Salió Perl v5.36

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

Perl 5.36.0 representa aproximadamente un año de desarrollo desde Perl 5.34.0 y contiene aproximadamente 250 000 líneas modificadas a lo largo de 200 archivos por parte de 82 autores.

Excluyendo los archivos autogenerados, documentación y herramientas de publicación, fueron aproximadamente 190 000 líneas modificadas en 1300 archivos .pm, .t, .c y .h.

Las novedades que trae (entre otras):

Cambios principales
  • signatures deja de ser experimental (desde v5.20) y se activa por defecto
    Código:
    use v5.36;
    sub add($x, $y) {
        return $x + $y;
    }
    
    Pero algunos elementos de las firmas de subrutina aún quedan como experimentales.
  • isa considerado característica estable (desde v5.32), por lo que se activa por defecto. Consultar perlop.
  • se desactivan las características indirect y multidimensional.
    Ya no se puede escribir $x = new Class; ni $x = $hash{3,5,42};
    Consultar feature.
  • la característica experimental switch (desde v5.10) se ha quitado de use v5.36. Se puede seguir usando (no recomendado), pero hay que activarla explícitamente.
  • nueva opción en línea de comandos, -g, es un alias de -0777. Consultar perlrun.
  • soporte para Unicode 14.0.
  • los "conjuntos regex" ya no se consideran experimentales (desde v5.18). Ejemplo: /(?[ ( \p{Thai} + \p{Lao} ) & \p{Digit} ])/
    Esta expresión casa con dígitos que son tanto Thai como Laosianos. Consultar perlrecharclass.
  • los vistazos hacia atrás de longitud variable en patrones de exp. reg. ya no se consideran experimentales. Ahora, en "aaz"=~/(?=z)(?<=(a|aa))/, $1 contendrá "aa" (la coincidencia de mayor longitud).
  • seguimiento estable de los valores booleanos. Ahora, los valores booleanos resultado de expresiones como !!0 y !!1 así como los de los resultados de funciones y operadores incorporados, mantienen su naturaleza como valor booleano. Hay una nueva función, is_bool() que puede servir para comprobar si un valor es booleano.
  • (experimental) iterar sobre múltiples valores al mismo tiempo:
    Código:
    for my ($key, $value) (%hash) { ... }
    for my ($left, $right, $gripping) (@moties) { ... }
    
    Consultar perlsyn.
  • (experimental) nuevo módulo builtin.
    Ofrece información y acceso a nuevas funciones o a las nuevas funciones incorporadas experimentales. Las de v5.36 son:
    • builtin::trim Elimina los espacios en blanco que haya al principio y final de la cadena de texto
      · builtin::indexed Devuelve una lista el doble de grande que la lista argumento, con cada elemento precedido por el índice de ese elemento. Esto es útil para recorrer arrays.
    Código:
    use builtin 'indexed';
    foreach my ($index, $val) (indexed @array) {
    
    • builtin:true, builtin::false, builtin::is_bool Valores de verdad y función para comprobar si un valor es booleano.
    • builtin::weaken, builtin::unweaken, builtin::is_weak Cambio en el tratamiento de referencias a una variable, para ser eliminada o no por el recolector de basura.
    • builtin::blessed, builtin::refaddr, builtin::reftype Más información sobre referencias (incluso si no lo son).
    • builtin::ceil, builtin::floor Redondeo al entero igual o inferior, o al igual o superior del valor dado.
  • (experimental) bloques defer. Definen secciones de código que se ejecutarán durante la salida del ámbito en que se encuentren esos bloques.
    Código:
    use feature 'defer';
    {
        say "This happens first";
        defer {
           say "This happens last";
        } 
        say "And this happens inbetween";
    }
    
  • (experimental) try/catch ahora tiene un bloque finally. Proporciona código que se ejecutará al final de la construcción.
  • (experimental) delimitadores no ASCII para entrecomillar. Ahora se podrá escribir $text = qw« hola adios »;
  • (experimental) @_ experimental en firmas de subrutinas. Ejemplo:
    Código:
    use v5.36;
    sub f ($x, $y = 123) {
      say "The first argument is $_[0]";
    }
    
    provocará una advertencia.
Cambios incompatibles
  • un sort vacío (sin argumentos), ahora es un fallo en tiempo de compilación.
    @a = sort;
Obsolescencias
  • use VERSION (con VERSION inferior a 5.11) después de un use v5.11 (rebajar de versión), ahora es obsoleto. Ejemplo:
    Código:
    use v5.14;
    say "say está permitido";
    use v5.8;   # genera una advertencia
    print "Debemos usar print\n";
    
Plataformas obsoletas
  • AT&T UWIN
  • DOS/DJGPP
  • NetWare
__________________
JF^D Perl Programming en Español



La zona horaria es GMT -6. Ahora son las 11:44.