elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Temas
Páginas: [1] 2 3
1  Programación / Scripting / Última versión de Rakudo del 2023 en: 2 Enero 2024, 23:48 pm
Salió la última versión de la distribución Rakudo (Raku+módulos) del 2023:

Esta publicación tiene 46 productos:

    rakudo-pkg-Alpine3.16_2023.12-01_x86_64.apk
    rakudo-pkg-Alpine3.16_2023.12-01_x86_64.apk.sha512
    rakudo-pkg-Alpine3.17_2023.12-01_x86_64.apk
    rakudo-pkg-Alpine3.17_2023.12-01_x86_64.apk.sha512
    rakudo-pkg-Alpine3.18_2023.12-01_x86_64.apk
    rakudo-pkg-Alpine3.18_2023.12-01_x86_64.apk.sha512
    rakudo-pkg-Alpineedge_2023.12-01_x86_64.apk
    rakudo-pkg-Alpineedge_2023.12-01_x86_64.apk.sha512
    rakudo-pkg-Debian11_2023.12-01_amd64.deb
    rakudo-pkg-Debian11_2023.12-01_amd64.deb.sha512
    rakudo-pkg-Debian12_2023.12-01_amd64.deb
    rakudo-pkg-Debian12_2023.12-01_amd64.deb.sha512
    rakudo-pkg-Debiantesting_2023.12-01_amd64.deb
    rakudo-pkg-Debiantesting_2023.12-01_amd64.deb.sha512
    rakudo-pkg-EL7-2023.12-01.x86_64.rpm
    rakudo-pkg-EL7-2023.12-01.x86_64.rpm.sha512
    rakudo-pkg-EL8-2023.12-01.x86_64.rpm
    rakudo-pkg-EL8-2023.12-01.x86_64.rpm.sha512
    rakudo-pkg-EL9-2023.12-01.x86_64.rpm
    rakudo-pkg-EL9-2023.12-01.x86_64.rpm.sha512
    rakudo-pkg-Fedora37-2023.12-01.x86_64.rpm
    rakudo-pkg-Fedora37-2023.12-01.x86_64.rpm.sha512
    rakudo-pkg-Fedora38-2023.12-01.x86_64.rpm
    rakudo-pkg-Fedora38-2023.12-01.x86_64.rpm.sha512
    rakudo-pkg-Fedora39-2023.12-01.x86_64.rpm
    rakudo-pkg-Fedora39-2023.12-01.x86_64.rpm.sha512
    rakudo-pkg-linux-relocable-2023.12-01_amd64.tar.gz
    rakudo-pkg-linux-relocable-2023.12-01_amd64.tar.gz.sha512
    rakudo-pkg-openSUSE15.4-2023.12-01.x86_64.rpm
    rakudo-pkg-openSUSE15.4-2023.12-01.x86_64.rpm.sha512
    rakudo-pkg-openSUSE15.5-2023.12-01.x86_64.rpm
    rakudo-pkg-openSUSE15.5-2023.12-01.x86_64.rpm.sha512
    rakudo-pkg-openSUSEtumbleweed-2023.12-01.x86_64.rpm
    rakudo-pkg-openSUSEtumbleweed-2023.12-01.x86_64.rpm.sha512
    rakudo-pkg-Ubuntu20.04_2023.12-01_amd64.deb
    rakudo-pkg-Ubuntu20.04_2023.12-01_amd64.deb.sha512
    rakudo-pkg-Ubuntu22.04_2023.12-01_amd64.deb
    rakudo-pkg-Ubuntu22.04_2023.12-01_amd64.deb.sha512
    rakudo-pkg-Ubuntu23.04_2023.12-01_amd64.deb
    rakudo-pkg-Ubuntu23.04_2023.12-01_amd64.deb.sha512
    rakudo-pkg-Ubuntu23.10_2023.12-01_amd64.deb
    rakudo-pkg-Ubuntu23.10_2023.12-01_amd64.deb.sha512
    rakudo-pkg-Ubuntudevel_2023.12-01_amd64.deb
    rakudo-pkg-Ubuntudevel_2023.12-01_amd64.deb.sha512
    Source code (zip)
    Source code (tar.gz)
2  Programación / Scripting / Perl v5.38 en: 4 Agosto 2023, 03:47 am
Estos son los cambios que trae la versión v5.38, del 2 de julio de 2023.

Perl 5.38.0 representa aproximadamente 12 meses de desarrollo desde Perl 5.36.0 y contiene aproximadamente 290 000 líneas modificadas a lo largo de 1500 archivos por parte de 100 autores.

Las novedades que trae (entre otras):

Cambios principales

  • class
    Ahora está disponible una nueva sintaxis experimental para definir clases de objetos, donde los datos de cada instancia se almacenan en variables "field" (campo) que se comportan como variables léxicas.
Código
  1. use feature 'class';
  2.  
  3. class Punto
  4. {
  5.    field $x;
  6.    field $y;
  7.  
  8.    method cero { $x = $y = 0; }
  9. }
Se describe con más detalle en perlclass. Las notas sobre detalles internos de su implementación y otros detalles relacionados se pueden encontrar en perlclassguts.

Se queda como característica nueva y experimental, y sigue estando en desarrollo. Será sujeto de más adiciones, refinamientos y alteraciones en versiones futuras. Como es experimental, lanza advertencias en la categoría experimental::class. Se pueden silencias con una sentencia no warnings:
Código
  1. use feature 'class';
  2. no warnings 'experimental::class';

  • Unicode 15.0
  • Las advertencias de obsolescencia tienen ahora subcategorías específicas

Todas las advertencias de obsolescencia tienen ahora su propia categoría de obsolescencia que se puede desactivar individualmente. Puede ver una lista de las características obsoletas en perldeprecation, y en warnings. La siguiente lista es de warnings:
+- deprecated ----+
|                 |
|                 +- deprecated::apostrophe_as_package_separator
|                 |
|                 +- deprecated::delimiter_will_be_paired
|                 |
|                 +- deprecated::dot_in_inc
|                 |
|                 +- deprecated::goto_construct
|                 |
|                 +- deprecated::smartmatch
|                 |
|                 +- deprecated::unicode_property_name
|                 |
|                 +- deprecated::version_downgrade

Sigue siendo posible desactivar todas las advertencias de obsolescencia con una única sentencia
Código
  1. no warnings 'deprecated';
pero ahora es posible tener un control más fino. Como ha sido siempre, estas advertencias se activan automáticamente con
Código
  1. use warnings;

  • Nueva API %{^HOOK}

Por distintas razonas puede ser dificultoso crear envoltorios de subrutinas para algunos palabra clave de perl. Cualquier palabra clave que tenga un prototipo indefinido, simplemente no se puede envolver con una subrutina, y algunas palabras clave que permiten ese envoltorio, lo hacen mediante trucos muy sucios. Por ejemplo, require es complicado de envolver; es posible hacerlo cambiando la profundidad de la pila, y los métodos estándares de exportación asumen que exportarán a un paquete a una cierta profundidad de la pila, y entonces el envoltorio cambiará esas funciones pero con una implementación muy cuidada. Esto puede ser muy complicado de gestionar.

De acuerdo con todo esto, presentamos un nuevo hash llamado %{^HOOK} cuya intención es facilitar tales casos. Cuando una palabra clave soporte cualquier enganche especial entonces el gancho vivirá en este nuevo hash. Los ganchos se nombrarán como la función desde donde se les llama, seguidos por dos guiones bajos y luego por la fase en donde se ejecutan, actualmente puede ser antes o después de ejecutarse la palabra clave.

En esta publicación inicial soportamos los ganchos require__before y require__after. Se proporcionan para hacer más fácil la realización de tareas antes y después de una sentencia require.

Vea perlvar para más detalles.

  • PERL_RAND_SEED

Se añadió una nueva variable de entorno: PERL_RAND_SEED, que se puede usar para que un programa perl sea repetible, tanto si usa rand sin srand() explícitamente o use srand() sin argumentos. Vea perlrun. Esta característica se puede desactivar en tiempo de compilación pasando -Accflags=-DNO_PERL_RAND_SEED a Configure.

  • Expresiones de asignación por defecto con defined-or y logical-or en firmas de subrutinas

Se puede asignar ahora la expresión por defecto para el parámetro de una firma de subrutina utilizando los operadores //= y ||=, para aplicar valores por defecto tanto si el llamador proporciona un valor indefinido o falso (respectivamente), en los casos cuando el parámetro no se indica. Para más detalles vea la documentación en perlsub.

  • @INC Hook Enhancements and $INC and INCDIR

Las internas de los ganchos @INC se han reforzado para manejar varios casos límite y no deberían provocar fallos de segmentación o fallos de aserción cuando los ganchos modifican @INC durante una operación require. Ahora aseguramos que cualquier gancho proporcionado se ejecuta al menos una vez durante una llamada a require, y que cualquier directorio duplicado no dispara pruebas de directorio adicionales.

Ahora se da soporte a un nuevo método de enganche llamado INCDIR para proporcionar a los desarrolladores más control sobre la búsqueda de módulos dinámicos. Se puede inyectar un objeto que admita este método en la matriz @INC, y cuando se encuentra en el proceso de búsqueda del módulo, se ejecutará, al igual que se ejecutan los ganchos de INC, y su valor de retorno se usa como una lista de directorios para buscar ese módulo. Devolver una lista vacía actúa como un NO-OP. Tenga en cuenta que dado que cualquier referencia devuelta por este gancho se convertirá y se usará como cadena de caracteres, no puede devolver un gancho para ejecutarse más adelante a través de esta API.

Cuando se llama a un gancho @INC (ya sea INC o INCDIR) durante el require, la variable $INC se localizará para ser el valor del índice de @INC del que proviene el gancho. Si el gancho desea anular cuál debería ser el "próximo" índice en @INC, puede actualizar $INC para ser uno menos que el índice deseado (undef es equivalente a -1). Esto permite que un gancho @INC reescribe por completo la matriz @INC y haga que Perl reinicie sus sondas de directorio desde el comienzo de @INC.

Las referencias de CODE bendecidas en @INC que no admiten los métodos INC o INCDIR ya no dispararán una excepción, y en su lugar se tratarán de la misma manera que coderefs sin bendecir, y se ejecutarán como si fueran un gancho de INC.

  • Ahora se detecta en tiempo de compilación el uso de control de flujo prohibido fuera de defer o finally

    Está prohibido intentar dejar un bloque defer o finally por medio de un control de flujo tales como return o goto. Versiones anteriores de perl sólo podría detectarlo cuando se intenta ejecutar en tiempo de ejecución.

    Esta versión de perl añade detección en tiempo de compilación para muchos casos que se pueden determinar estáticamente. Esto puede significar que el código que se puede compilar exitosamente en una versión anterior de perl ahora se reporta como un error en tiemp de compilación. Esto sólo sucede en los casos donde ocurriría un error al ejecutar código de todas maneras; ahora el error sucede antes.

  • Evaluación optimista en patrones

El uso de (?{ ... }) y (??{ ... }) en un patrón desactiva varias optimizaciones en ese patrón, de forma global. Esto puede ser deseable o no por el programador. Esta publicación añade el equivalente (*{ ... }). La única diferencia es que no desactiva ni desactivará ninguna optimización en el motor regex. Esto puede hacerlo más inestable en el sentido de que puede llamarse más o menos veces en el futuro, sin embargo el número de veces que se ejecuta coincidirá exactamente con el funcinamiento del motor regex. Por ejemplo, ciertos tipos de optimización se desactivan cuando se incluye (?{ ... }) en un patrón, así que los patrones que son O(N) en un uso normal se convierten en O(N*N). Cambiar a (*{ ... }) significa que el patrón se mantendrá en O(N).

  • REG_INF se ha elevado desde 65 536 a 2 147 483 647

Muchos cuantificadores regex que estaban limitados en el pasado a U16_MAX, ahora están limitados a I32_MAX, así que ahora es posible escribir por ejemplo /(?:word){1000000}/. Note que hacerlo así puede provocar que el motor de regex se ejecute durante más tiempo y usar más memoria.

  • Ahora se permite algunos goto en bloques defer y finally

    Perl versión 5.36.0 añadió bloques defer y permitió que la palabra clave finally añade un comportamiento similar para la sintaxis try/catch. Estos no permiten ninguna expresión goto dentro del cuerpo, ya que podría provocar un salto del control de flujo fuera del bloque. Ahora, se permiten a algunas expresiones goto, si se trata de un destino con una etiqueta constante, y que la etiqueta se encuentre dentro del bloque.
    Código
    1. use feature 'defer';
    2.  
    3. defer {
    4.    goto LABEL;
    5.    print "This does not execute\n";
    6.    LABEL: print "This does\n";
    7. }

  • Nueva variable de expresiones regulares ${^LAST_SUCCESSFUL_PATTERN}
Permite acceder al último patrón que coincidió de forma exitosa, en el ámbito actual. Muchos aspectos del motor de regex se refieren al "último patrón exitoso". El patrón vacío lo rechaza, y todas las variables regex mágicas se relacionan con él. Esto permite acceder a ese patrón. El código siguiente
Código
  1. if (m/foo/ || m/bar/) {
  2.    s//PQR/;
  3. }
se puede reescribir como
Código
  1. if (m/foo/ || m/bar/) {
  2.    s/${^LAST_SUCCESSFUL_PATTERN}/PQR/;
  3. }
    haciendo lo mismo.


Cambios incompatibles

  • readline() ya no limpia los indicadores de error y eof
  • los bloques INIT ya no se ejecutan después de un exit() en un BEGIN
Obsolescencias

  • El uso de ' como separador de los nombres del paquete

  • switch y el operador Smart Match (coincidencia inteligente)

La característica "switch" y el operador smartmatch ~~, se presentaron en v5.10. Su comportamiento se cambió significativamente en v5.10.1. Cuando el sistema "experiment" se añadió en v5.18.0, switch y smartmatch se declararon experimentales, de forma retroactiva. Durante estos años, se han propuesto y desechado propuestas para arreglarlos o suplementarlos.

En v5.38.0, declaramos el experimento como un fallo. Algunos otros sistemas futuros pueden tomar el lugar conceptual de smartmatch, pero no se han diseñado ni construido, todavía.

Estas características se eliminarán completamente en Perl v5.42.0.[/list]


Plataformas obsoletas
  • Ultrix
3  Programación / Scripting / Perl v5.36, liberado en: 30 Mayo 2022, 14:13 pm
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
  1. use v5.36;
  2. sub add($x, $y) {
  3.    return $x + $y;
  4. }
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
  1. for my ($key, $value) (%hash) { ... }
  2. 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
    1. use builtin 'indexed';
    2. 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
    1. use feature 'defer';
    2. {
    3.    say "This happens first";
    4.    defer {
    5.       say "This happens last";
    6.    }
    7.    say "And this happens inbetween";
    8. }
  • (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
    1. use v5.36;
    2. sub f ($x, $y = 123) {
    3.  say "The first argument is $_[0]";
    4. }
    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
    1. use v5.14;
    2. say "say está permitido";
    3. use v5.8;   # genera una advertencia
    4. print "Debemos usar print\n";

      Plataformas obsoletas
      • AT&T UWIN
      • DOS/DJGPP
      • NetWare
    4  Programación / Scripting / Rakudo: última versión estable de este año en: 25 Diciembre 2021, 01:48 am
    Última versión estable del año, la versión 2021.12, del compilador Rakudo, la principal implementación del lenguaje Raku, con un montón de cambios.

    https://raku.org/

    · Descargar
    · Imágenes docker

    5  Programación / Scripting / Salió Perl v5.34 en: 22 Mayo 2021, 22:10 pm
    Ya tenemos nueva versión de Perl, la v5.34.

    Perl 5.34.0 representa aproximadamente 11 meses de desarrollo desde Perl 5.32.0 y contiene aproximadamente 280 000 líneas modificadas a lo largo de 2100 archivos por parte de 78 autores.

    Las novedades que trae (entre otras):

    Cambios principales
    • Sintaxis experimental para try/catch
    Código
    1. use feature 'try';
    2.  
    3. try {
    4.    a_function();
    5. }
    6. catch ($e) {
    7.    warn "An error occurred: $e";
    8. }
      Para más información, mira "
    Try Catch Exception Handling" en perlsyn.

    • ahora se acepta qr/{,n}/

    Ahora se acepta un límite inferior vacío para los cuantificadores de exp. reg., como {,3}. Se permite blancos permitidos dentro pero adyacentes a llaves (en contextos doblemente comillas y patrones de exp. reg.).

    Esto significa que puede escribir cosas como \x{ FFFC } si quieres. Esto aplica a todas las construcciones, como \b{}, \g{}, \k{}, \N{}, \o{} y \x{}; así como los cuantificadores de exp. reg. {m,n}. \p{} y \P{} retienen sus actuales, incluso pobres, reglas impuestas por el estándar Unicode (vea "Properties accessible through \p{} and \P{}" en perluniprops).

    Esta habilidad está en efecto sin importar la presencia del modificador de patrones de exp. reg. /x.

    Adicionalmente, la coma en el cuantificador de exp. reg. con llaves puede tener blancos (tabuladores o espacios) antes o después de la coman, como qr/a{ 5, 7 }/.

    • Nueva sintaxis octal 0oddddd

    Ahora es posible especificar literales octales con el prefijo 0o, como en 0o123_456, paralelo a las construcciones actuales para especificar literales en hexadecimal 0xddddd y literal binario 0bddddd. También, la función oct() acepta ahora esta nueva sintaxis.

    Vea "Scalar value constructors" en perldata y "oct EXPR" en perlfunc.[/list]

    Nuevas plataformas
    • 9front, que es un derivado de Plan9 en plataformas i386.
    Plataformas actualizadas
    • Plan 9
    • Mac OS (Darwin)
    Plataformas obsoletas
    • Symbian
    6  Programación / Scripting / Disponible Rakudo 2021.02 en: 21 Febrero 2021, 18:16 pm
    Acaba de salir la versión 2021.02 de Rakudo, la principal implementación del lenguaje Raku, con un montón de cambios.

    https://raku.org/

    7  Programación / Scripting / Nueva versión de Rakudo, la 2020.10 en: 25 Octubre 2020, 02:29 am
    Acaba de salir la versión 2020.10 de Rakudo, la principal implementación del lenguaje Raku (anteriormente conocido como Perl 6).

    https://raku.org/

    8  Programación / Scripting / Anunciado el desarrollo de Perl 7 en: 27 Junio 2020, 00:26 am
    Bueno, en realidad se trata de renombrar Perl 5.32 a Perl 7, y aprovechar para hacer unos pequeños cambios en la parte de los "pragmas" que se cargan por defecto en la ejecución de los programas.

    Announcing Perl 7

    ¿Perl 6? Pues que existió desde diciembre 2015 a octubre del 2019, y en ese momento se le cambió de nombre a Raku.
    9  Programación / Scripting / Perl 6 ahora es Raku en: 22 Junio 2020, 20:31 pm
    En octubre del 2019, la comunidad Perl hizo algo impensable: cambiar de nombre a su nuevo lenguaje Perl 6, para que quedase claro que no se trataba de una evolución de Perl 5, sino de un lenguaje completamente nuevo.

    El nombre elegido fue Raku, nombre con el que se conoce a una técnica de alfarería japonesa. Para distinguir entre los dos en Twitter, se eligió la marca #rakulang .

    La última versión estable del compilador (llamado Rakudo) salió el pasado día 21 de junio. Se puede bajar e instalar para los principales sistemas operativos o probarlo en una imagen Docker.

    10  Programación / Scripting / Nueva versión de Perl, la v5.32 en: 22 Junio 2020, 20:20 pm
    Aparte de las nuevas versiones de mantenimiento de Perl v5.28 y Perl 5.30, ya tenemos nueva versión estable de Perl, la v5.32.

    Perl 5.32.0 representa aproximadamente 13 meses de desarrollo desde Perl 5.30.0 y contiene aproximadamente 220 000 líneas modificadas a lo largo de en 1800 archivos por parte de 89 autores.

    Novedades principales:
    • El operador isa. un nuevo operador infijo experimental llamado isa que comprueba si un objeto dado es una instancia de una clase dada o de una clase derivada de ella.
    • Soporte para el estándar Unicode 13.
    • Comparaciones encadenadas.
    Resto de novedades
    Páginas: [1] 2 3
    WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines