Como todos los años, Papá Noel nos ha traído una nueva versión de Ruby, la 2.6, vamos a destriparla bien para ver todos los nuevos juguetitos que nos trae Ruby para este 2019.
Aquí os voy a dejar por escrito todas las novedades que explico en este episodio de full stack podcast, algunas referencias a las principales actualizaciones.
De hecho, aquí tienes la web oficial de ruby-lang.org donde se describen de forma detalladas los cambios que comento y muchos más en esta nueva versión 2.6 de Ruby.
De todas formas, aquí os dejo unas cuantas notas rápidas:
Novedades de Ruby 2.6:
- Nuevo compilador JIT (Experimental
- RubyVM::AbstractSyntaxTree (Experimental)
- Alias Para Kernel#yield_self -> #then
- Los nombres de las constantes pueden empezar con un carácter que no sea una mayúscula ASCII
- Se introducen los rangos sin fin (1..
- Añade ‘Enumerable#chain’ y ‘Enumerator#+’
- Añade operadores compuestos ‘<<‘ y ‘>>’ a Proc y Method
- Añade ‘Binding#source_location’ – Devuelve la fuente del binding, tecnicamente devuelve un ‘eval(«[__FILE__, __LINE__]», binding) A partir de ahora se recomienda usar Binding#source_location en lugar de Kernel#eval
- Se ha añadido una opción de excepción a Kernel#system que hace que salte una excepción en lugar de devolver un false
- Se añade un «oneshot mode to ‘Coverage’»
- Se añade ‘FileUtils#cp_lr’ – Funciona como cp_r pero enlaza en lugar de copiar
- In exception handling blocks, `else` without `rescue` now causes a
syntax error. (experimental - Unicode support is updated to version 11. We have plans to add
support Unicode version 12 and 12.1 in a future TEENY release of Ruby
2.6. This will include support for the [new Japenese
era - [Bundler](https://github.com/bundler/bundler) Ahora es una gema estándar.
Mejoras en el rendimiento
- Se ha acelerado ‘Proc#call’ eliminando el almacenamiento temporal de la vaiable de entorno ‘$SAFE’ Se ha observado una mejora x1.4
- Se acelera block.call cuando block se pasa como un parámetro de bloque. En Ruby 2.6 la evaluación de bloques es hasta 2.6x más rápida, se han mejorado las rutinas de manejo de bloques introducidas en Ruby 2.5
- Se ha introducido ’theap’ (Transient heap) `theap` is managed heap for short-living memory objects which are pointed by specific classes (`Array`, `Hash`, `Object`, and `Struct`).
- Ejecucion de hilos. Implementación nativa (`arm32`, `arm64`, `ppc64le`, `win32`, `win64`, `x86`, `amd64`) de corutinas para mejorar el context mejorando significativamente el rendimiento de hilos de proceso
Además, también os dejo el enlace a la herramienta de la semana, la gema Rubocop, la cual revisa cómo estamos escribiendo nuestro código y nos ayuda a respetar la guía de estilo y escribir mejor código Ruby.
Deja una respuesta