Introduction
Récemment, une expérience menée par Anthropic a consisté à lancer un essaim d'agents pour écrire un compilateur C fonctionnel. Cela m'a inspiré pour réaliser un projet que j'avais en tête depuis 15 ans : réécrire Git à partir de zéro en tant que bibliothèque. Le résultat est Grit, une implémentation Rust de Git qui passe plus de 99% de la suite de tests Git.
Contexte Technique
Git est un logiciel complexe, composé de nombreuses commandes et fonctionnalités. Il a été créé par des milliers de personnes au fil des 20 dernières années. Cependant, il n'a jamais été conçu comme une bibliothèque réutilisable, mais plutôt comme un ensemble de commandes qui peuvent être chaînées ensemble. Cela rend difficile son utilisation dans des processus longs sans surcoût de fork/exec. Heureusement, la suite de tests Git comprend plus de 42 000 tests qui définissent clairement le comportement attendu.
En utilisant la même approche qu'Anthropic, j'ai lancé un essaim d'agents pour réécrire Git en Rust. Le résultat est Grit, une bibliothèque Rust qui peut interagir de manière fidèle avec les référentiels Git.
Analyse et Implications
Grit n'est pas parfait, mais il est intéressant et potentiellement utile. Il peut être utilisé pour intégrer des fonctionnalités Git complexes dans des outils autonomes comme GitButler ou Jujutsu. De plus, une version WASM de Grit pourrait être utilisée pour exécuter des commandes Git dans des fonctions edge ou des applications web.
La sécurité est également un aspect important de Grit, car il est écrit en Rust, ce qui signifie que la plupart du code est sûr en termes de mémoire. Seul un module doit utiliser des appels de fonction C via FFI pour des raisons de compatibilité.
Perspective
Il est important de noter que Grit n'est pas encore prêt pour une utilisation en production. Cependant, il constitue un point de départ intéressant pour des développements futurs. Les prochaines étapes pourraient inclure l'amélioration des performances, la mise en œuvre de fonctionnalités manquantes et la création d'une version WASM.
En résumé, Grit est une implémentation Rust de Git qui offre des possibilités intéressantes pour l'intégration de fonctionnalités Git dans des applications et des outils autonomes. Bien qu'il ne soit pas encore parfait, il constitue un point de départ prometteur pour des développements futurs.