Annoncée le 11 décembre dernier, cette mise à jour planifiée 3.3.0 du langage dynamique Ruby a atteint le stade de version candidate. La RC1 de Ruby 3.3.0 comprend le nouvel analyseur Prism, présenté comme une gemme par défaut. Prism est décrit comme un analyseur syntaxique portable, tolérant aux erreurs, maintenable et à descente récursive pour le langage Ruby. Prism est une bibliothèque C qui peut être utilisée à la place de Ripper. Ruby 3.3.0 introduit également le générateur d'analyseur Lrama LALR, présenté comme analyseur tolérant aux erreurs pour CRuby avec des modifications minimales du fichier CRuby parse.y.

Autres points forts de Ruby 3.3.0 :

- Le pur compilateur Ruby RJIT Ruby JIT remplace MJIT. RJIT est actuellement expérimental ; YJIT devrait être utilisé en production ;

- YJIT bénéficie d'améliorations majeures en termes de performances par rapport à Ruby 3.2. L'utilisation de la mémoire a aussi été améliorée dans YJIT ;

- Introduction du planificateur de threads M:N ;

- Pour des raisons de performance, defined ?(@ivar) est optimisé avec Object Shapes ;

- Les performances du ramasse-miettes (Garbage Collector, GC) ont été améliorées ;

- La plupart des classes principales utilisent désormais l'allocation à largeur variable Variable Width Allocation, notamment Hash, Time, Thread::Backtrace, Thread::Backtrace::Location, File::Stat et Method. Ces classes sont ainsi plus rapides à allouer et à libérer, et réduisent l'utilisation de la mémoire et la fragmentation du tas.

Après la sortie de RC1, les concepteurs de Ruby éviteront d'introduire des incompatibilités ABI (application binary interface) dans la mesure du possible. La version précédente, Ruby 3.2.2, qui contient des correctifs de sécurité, a été publiée le 30 mars.

La RC1 de Ruby 3.3.0 est accessible sur le site ruby-lang.org