Introduction
Dans le monde de la tech, les réécritures de code ne sont pas rares, mais elles sont souvent synonymes de défis considérables. Aujourd'hui, nous allons plonger dans l'aventure qu'a été pour l'équipe de Roc la réécriture de leur compilateur de Rust à Zig, une initiative qui a nécessité un an et demi de travail acharné.
Pourquoi passer de Rust à Zig ?
Le choix de réécrire un projet aussi vaste que le compilateur Roc, fort de 300 000 lignes de code, n'est pas anodin. Rust est connu pour sa sécurité mémoire et sa performance, alors pourquoi changer ? La réponse réside dans les besoins spécifiques du projet Roc. Zig offre une gestion de la mémoire plus explicite et un contrôle plus granulaire, ce qui s'avère crucial pour certains projets de bas niveau. De plus, Zig est conçu pour être simple et lisible, ce qui facilite la maintenance à long terme du code.
Atteindre la parité des fonctionnalités
Récemment, l'équipe a atteint un jalon majeur : la parité des fonctionnalités avec l'ancien compilateur Rust. Cela signifie que chaque fonctionnalité présente dans l'ancien compilateur est désormais disponible dans la version Zig. Un exemple concret est la mise à jour du jeu Rocci Bird, écrit en Roc, qui a pu être recompilé avec succès en utilisant le nouveau compilateur. Le nouveau binaire WebAssembly ne fait que 31 ko, contre plus du double précédemment.
Les défis rencontrés
Réécrire un projet de cette envergure n'est pas sans obstacles. La collaboration a été essentielle, avec des contributions notables d'Anthony Bullard et Sam Mohr sur le nouveau parseur, et Jared Ramirez sur le vérificateur de types. Les erreurs de fuzzer et autres bogues ont été méthodiquement traités, grâce à des membres comme JRI98.
Zig offre une approche différente qui, bien que bénéfique à long terme, a nécessité de repenser certaines parties fondamentales du compilateur. L'équipe a dû gérer des différences architecturales profondes entre Rust et Zig, en particulier en termes de gestion de la mémoire et de typage statique.
Le futur de Roc
Avec la version 0.1.0 du nouveau compilateur prévue pour plus tard cette année, l'équipe est confiante dans le potentiel de Zig pour améliorer la performance et la maintenabilité du projet. Les retours des utilisateurs, tels que ceux de Niclas Åhdén, continuent de guider les améliorations futures.
Conclusion
La transition de Rust à Zig pour le compilateur Roc est un exemple inspirant de l'audace et de l'innovation nécessaires dans le développement logiciel moderne. Si tu es curieux de savoir comment une telle réécriture pourrait bénéficier à ton projet, discutons de ton projet en 15 minutes.