Fidèle à sa tradition légendaire, l’équipe principale de Ruby a publié la version 4.0.0 fin décembre. Ce passage à une nouvelle version majeure n’est pas qu’un simple changement de chiffre : c’est une déclaration d’intention. Alors que certains prédisaient le déclin des langages interprétés, Ruby 4.0.0 prouve sa vitalité en s’attaquant de front aux deux plus grands défis du développement moderne : la gestion de l’isolation du code et la vitesse d’exécution sur les architectures multicœurs.
Avec plus de 230 000 lignes de nouveau code et près de 4 000 fichiers modifiés, Ruby 4.0.0 est sans doute la mise à jour la plus ambitieuse de cette décennie. L‘annonce complète est à retrouver sur le site officiel de Ruby 4.0.0 released. Pour les détails techniques sur le compilateur, consultez le blog de ZJIT. Enfin, la documentation sur l’isolation est disponible via Ruby Box. Que retenir de cette annonce ?
ZJIT : l’héritier de YJIT prend son envol
La grande star technique de cette mouture est ZJIT, un compilateur Juste-à-Temps (JIT) de nouvelle génération conçu pour succéder au déjà très performant YJIT. Développé en Rust, ZJIT utilise une approche de compilation basée sur les méthodes avec une représentation intermédiaire SSA (Static Single Assignment) pour optimiser le code au plus près du processeur.
Bien que déjà plus rapide que l’interpréteur classique, l’équipe précise que ZJIT n’a pas encore atteint la vélocité maximale de YJIT. Il s’agit d’une fondation robuste, dont la pleine puissance pour la production est attendue avec Ruby 4.1 l’année prochaine.
Ruby Box : la fin du chaos des dépendances ?
L’autre révolution s’appelle Ruby Box, une fonctionnalité expérimentale qui permet d’isoler totalement les définitions au sein d’un même processus. En activant la variable d’environnement RUBY_BOX=1, les développeurs peuvent désormais faire coexister plusieurs versions d’une même bibliothèque ou isoler des « monkey patches » sans qu’ils ne polluent l’ensemble de l’application.
Cette innovation ouvre la porte à des déploiements « Blue-Green » directement au sein d’un seul processus Ruby ou à des tests unitaires parfaitement étanches, résolvant ainsi des conflits de dépendances qui empoisonnaient la vie des développeurs depuis des décennies.
Le parallélisme Ractor devient (enfin) mature
Introduits avec Ruby 3.0, les Ractors reçoivent une mise à jour majeure pour faciliter l’exécution parallèle réelle. L’introduction de la classe Ractor::Port vient corriger les problèmes historiques de communication entre acteurs, tandis que de nouvelles méthodes comme Ractor.shareable_proc facilitent le partage d’objets.
Sous le capot, le travail a été colossal : des centaines de structures de données internes ont été revues pour réduire drastiquement la contention du verrou global, permettant à Ruby de tirer pleinement profit des processeurs modernes. L’objectif est clair : retirer le statut « expérimental » des Ractors dès l’année prochaine.
Pour télécharger tout cela, direction cette page.
