PUBLICIDAD

Ruby 3.0.0 Preview 1 ya está disponible

La nueva versión introduce una serie de nuevas funciones y mejoras de rendimiento.

Ruby 3.0.0 Preview 1 ya está disponible

Ruby fue desarrollado por primera vez por Matz (Yukihiro Matsumoto) en 1993, y ahora se desarrolla como código abierto. Se ejecuta en múltiples plataformas y se utiliza en todo el mundo, especialmente para el desarrollo web.

Entre las novedades tenemos las siguientes:

RBS

RBS es un lenguaje para describir los tipos de programas Ruby. Los verificadores de tipos, incluido el generador de perfiles de tipos y otras herramientas compatibles con RBS, comprenderán mucho mejor los programas de Ruby con las definiciones de RBS.

Puede escribir la definición de clases y módulos: métodos definidos en la clase, variables de instancia y sus tipos, y relaciones de herencia mixta (inheritance/mix-in relations). El objetivo de RBS es admitir patrones que se ven comúnmente en programas Ruby y permite escribir tipos avanzados, incluidos tipos de unión, sobrecarga de métodos y genéricos. También admite la escritura de duck con tipos de interfaz (interface types).

Ruby 3.0 viene con rbsgem, que permite analizar y procesar definiciones de tipo escritas en RBS.

Ractor (experimental)

Ractor es una abstracción concurrente similar al modelo de actor (Actor-model) diseñada para proporcionar una función de ejecución paralela sin preocupaciones de seguridad de subprocesos.

Puedes hacer varios ractors y puedes ejecutarlos en paralelo. Ractor permite hacer programas paralelos seguros para subprocesos porque los ractors no pueden compartir objetos normales. La comunicación entre los actores se apoya en el paso de mensajes.

Para limitar el intercambio de objetos, Ractor introduce varias restricciones a la sintaxis de Ruby (sin múltiples Ractors, no hay cambios).

La especificación y la implementación no maduran ni cambian en el futuro, por lo que esta función se marca como experimental y muestra la advertencia de la función experimental si se crea Ractor.

El siguiente programa pequeño calcula prime? en paralelo con dos factores y aproximadamente x2 veces más rápido con dos o más núcleos que el programa secuencial.

Scheduler (Experimental)

Thread#schedulerse introduce para interceptar operaciones de bloqueo. Esto permite una simultaneidad ligera sin cambiar el código existente.

Clases/métodos soportados actualmente:

  • Mutex#lock, Mutex#unlock, Mutex#sleep
  • ConditionVariable#wait
  • Queue#pop, SizedQueue#push
  • Thread#join
  • Kernel#sleep
  • IO#wait, IO#read, IO#writeY métodos relacionados (por ejemplo #wait_readable, #gets, #putsy así sucesivamente).
  • IO#selectno es compatible.

Otras características nuevas notables:

  • Se agrega la declaración de asignación hacia la derecha.
  • Se agrega una definición de método Endless.
  • Se agrega el patrón de búsqueda.
  • Hash#except ahora está integrado.
  • La vista de memoria se agrega como una característica experimental.
  • Se implementaron mejoras de rendimiento en MJIT (MJIT son las siglas de “Method Based Just-in-Time Compiler”).

En su blog nos informan que están ya trabajando en la versión 3.0.0-preview2 de Ruby donde plantean incluir “type-profiler”, que es una función de análisis de tipos estáticos.


               

Más contenido

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

PUBLICIDAD