Ruby
Ruby 2.6
Ruby 2.6 es la última versión estable de Ruby. Están incluidas muchas características y mejoras nuevas para las demandas de diversidad y expansión incremental para Ruby. Con esta actualización mayor desde la versión 2.5 de Ruby en Fedora 29 a Ruby 2.6 en Fedora 30, Fedora se convierte en la plataforma superior de desarrollo de Ruby.
Los cambios notables incluyen:
-
Ya está disponible una implementación inicial de un compilador Just-In-Time (JIT). El compilador JIT tiene como objetivo mejorar el rendimiento de la ejecución de cualquier programa Ruby. A diferencia de los compiladores JIT convencionales para otros lenguajes, el compilador JIT de Ruby realiza la compilación JIT de una manera singular: imprime el código C en un disco y ejecuta un proceso de compilación C común para generar código nativo.
El objetivo principal de esta versión JIT es brindar la oportunidad de comprobar su funcionamiento en su plataforma e identificar riesgos de seguridad antes del lanzamiento de la versión 2.6. El compilador JIT es compatible cuando Ruby se compila con GCC, Clang o Microsoft VC++, que deben estar disponibles en tiempo de ejecución. De lo contrario, no podrá usarlo por ahora.
Como la prevista 3 de Ruby 2.6.0, logramos que 1.7.x tenga rendimiento más rápido que Ruby 2.5 en las CPU intensivas con rendimiento no trivial de carga llamado Optcarrot. El rendimiento sobre carga de memoria intensa como aplicaciones de Rails también van a mejorar.
-
Ya está disponible el módulo experimental
RubyVM::ASTnuevo. Este módulo incluye un métodoparseque analiza una cadena de código Ruby y devuelve nodos AST (Árbol de Sintaxis Abstracta), y un métodoparse_fileque analiza un archivo de código Ruby y devuelve nodos AST. También se ha introducido la claseRubyVM::AST::Node. Permite obtener información de lugar y nodos secundarios de objetos Node. Esta función es experimental. No se garantiza la compatibilidad de la estructura de los nodos AST. -
Características nuevas:
-
Añade un alias nuevo
thenparaKernel#yield_self. -
Agregar
Random.bytes. -
Agregar
Binding#source_location. Este método devuelve el lugar origen del vínculo, una matriz de 2 elementos deFILEyLINE. -
Agregue la opción
:exceptionpara permitir queKernel.#systemgenere un error en lugar de devolver falso. -
elsesinrescueahora provoca un error de sintaxis. [EXPERIMENTAL] -
Los nombres constantes pueden comenzar con una letra capitalina que no sea ASCII.
-
Se introduce un intervalo infinito,
(1..). Funciona como si no tuviera fin.
-
Han sido realizadas las siguientes mejoras de rendimiento:
-
Se acelera
Proc#callporque ya no necesitamos preocuparnos por$SAFE. El benchmarklc_fizzbuzzmuestra una mejora del 40% en la velocidad. -
Se aceleró la invocación a bloque,
block.call, donde se pasa el parámetro de bloque. Ruby 2.6 mejora el rendimiento de la invocación a bloque. Se observó una mejora de 2,6 veces con micro-puntos de referencia. -
Se ha introducido el montículo transitorio (
theap).theapes un montículo administrado para objetos de memoria de corta duración, apuntados por clases específicas. Por ejemplo, crear un objeto hash pequeño y de corta duración es el doble de rápido. Con la prueba de rendimientordoc, se observa una mejora del rendimiento del 6-7%.
Otros cambios notables desde la versión 2.5:
-
$SAFEes un estado global de proceso y podemos establecer 0 de nuevo. -
Pasar
safe_levelaERB.newestá obsoleto. Los argumentostrim_modeyeoutvarahora son argumentos de palabras clave. -
RubyGems 3.0.0.beta2 unido.
-
Une Bundler como gem por defecto.
Consulte el anuncio de último lanzamiento para más información detallada sobre este lanzamiento.
Want to help? Learn how to contribute to Fedora Docs ›