Lanzamiento de Ruby 3.4.0
(ruby-lang.org)-
Al igual que en años anteriores, Ruby 3.4.0 se lanzó el 12/25.
-
Las actualizaciones principales incluyen la adición de la referencia al parámetro de bloque
it, el cambio a Prism como parser por defecto, la incorporación de soporte de Happy Eyeballs Version 2 en la librería socket, mejoras en YJIT y la adición del GC modular, entre otros cambios. -
Referencia al parámetro de bloque
it- Se introdujo
it, que permite hacer referencia a los parámetros de bloque sin un nombre de variable. Esto funciona de manera similar a_1y es cómodo de usar en bloques simples.
- Se introdujo
-
Cambio a Prism como parser por defecto
- El parser por defecto cambió de
parse.ya Prism. No debería haber cambios grandes para los usuarios, y si surge algún problema de compatibilidad se solicita reportarlo.
- El parser por defecto cambió de
-
Happy Eyeballs Version 2 en la librería socket
- Se agregó soporte de Happy Eyeballs Version 2 (RFC 8305) a la librería socket, lo que permite conexiones de red más eficientes y confiables para el entorno de internet moderno.
-
Mejora de YJIT
- Se mejoró el rendimiento en la mayoría de los benchmarks, se redujo el uso de memoria, se corrigieron diversos errores y se agregaron nuevas características.
-
GC modular
- Se agregó GC modular para permitir la carga dinámica de implementaciones alternativas del recolector de basura (GC). Requiere la toolchain de Rust.
-
Cambios en el lenguaje
- Se emitirá una advertencia cuando se modifique un literal de cadena en un archivo sin el comentario
frozen_string_literal. Incluye cambios diversos, como soporte para keyword splatting con**nil.
- Se emitirá una advertencia cuando se modifique un literal de cadena en un archivo sin el comentario
-
Actualización de clases núcleo
- Incluye varias actualizaciones de clases núcleo, como permitir que
Exception#set_backtraceacepte un arreglo deThread::Backtrace::Location.
- Incluye varias actualizaciones de clases núcleo, como permitir que
-
Actualización de la biblioteca estándar
- Mejoras de rendimiento y nuevas funcionalidades en varias bibliotecas estándar como RubyGems, Bundler, JSON y Tempfile.
-
Problemas de compatibilidad
- Incluye cambios relacionados con la compatibilidad, como cambios en la forma de mostrar mensajes de error y backtraces, y cambios en la representación de
Hash#inspect.
- Incluye cambios relacionados con la compatibilidad, como cambios en la forma de mostrar mensajes de error y backtraces, y cambios en la representación de
-
Actualización de la API de C
- Incluye actualizaciones de la API de C, como la eliminación de las funciones
rb_newobjyrb_newobj_of.
- Incluye actualizaciones de la API de C, como la eliminación de las funciones
-
Otros cambios
- Incluye varios cambios, como emitir una advertencia al pasar bloques no utilizados a métodos, entre otros.
2 comentarios
Opinión de Hacker News
Hay mucha expectación por el cambio en el parser de Ruby. Antes aprendimos que había que usar yacc, pero Ruby se suma a la lista de lenguajes que usan parsers escritos a mano.
Ruby 3.4.1 ya está desactualizado.
El rendimiento de Ruby mejoró bastante en los últimos años. Desde la versión 3.3, todos mis apps las ejecuto con la opción
--yjit, y la diferencia es grande.La estrategia de Shopify está alineada con la de YJIT: si no puedes refactorizar el servicio, hay que refactorizar Ruby.
Es un buen extra adicional que el rendimiento también mejore a nivel de JIT y GC.
Espero el lanzamiento de Ruby como en la tradición de Navidad de cada año.
Al final de cada año actualizo mi app de Rails, y últimamente esto se volvió más fácil porque es más estable y con mejor rendimiento.
Felicitaciones y agradecimiento al equipo de Ruby.
Desde que salió la noticia de Rails 8 quise probar Ruby, pero me rendí porque la instalación fue demasiado complicada.
html.erbde Rails quedaba completamente roto en VSCode y otros editores.Hay un script que facilita la instalación de Rails en macOS. => https://rails.new/