- Se agrega el nuevo parser Prism: un parser descendente recursivo apto para uso en producción. Reemplaza a Ripper
- El generador de parsers cambia de Bison a Lrama: al ser tolerante a errores, tiene mejor usabilidad, es más fácil de mantener y ofrece un parser universal utilizable por otras herramientas
- Mejoras de rendimiento en YJIT: aumenta la velocidad y usa menos memoria
- Se introduce RJIT, un compilador JIT escrito en Ruby puro, que reemplaza a MJIT: solo es compatible con x86-64, pero a diferencia de MJIT no necesita un compilador de C en tiempo de ejecución. Por ahora sigue siendo experimental y en producción se debe usar YJIT
- Se agrega un scheduler de hilos M:N: administra M hilos de Ruby sobre N hilos nativos (hilos del sistema operativo), por lo que se reduce el costo de creación y administración de hilos
2 comentarios
Parece que
RUBY_GC_HEAP_INIT_SLOTStambién será reemplazado porRUBY_GC_HEAP_INIT_SIZE_%d_SLOTS. Los lugares donde se ajustó el GC tendrán que cambiarse.https://bugs.ruby-lang.org/issues/19785
Siguiendo la tradición de lanzarlo cada 25/12, este año también salió la versión 3.3.