Andrew Kelley, créateur du langage de programmation Zig, a accordé un entretien vidéo à JetBrains, revenant sur la philosophie qui guide le développement de ce langage système émergent. Il a souligné la volonté de maintenir une approche minimaliste et pragmatique, distincte des choix effectués par d'autres langages comme Rust.
Un langage sans « hidden control flow »
Kelley a expliqué que Zig cherche à éliminer ce qu'il appelle le « hidden control flow » (flux de contrôle caché). Dans des langages comme C++ ou Rust, les appels de fonction peuvent déclencher des opérations implicites (allocations mémoire, exceptions, surcharge d'opérateur), ce que Kelley juge problématique pour la programmation système de bas niveau. Zig, à l'inverse, vise une transparence totale : chaque action explicite est visible dans le code, ce qui facilite la compréhension du comportement exact du programme.
Zig face à Rust : des compromis différents
Interrogé sur la comparaison avec Rust, Kelley a affirmé que les deux langages poursuivent des objectifs similaires (sécurité mémoire, contrôle du matériel) mais avec des philosophies radicalement différentes. Là où Rust impose un vérificateur d'emprunt (borrow checker) complexe, Zig mise sur une analyse de flux simplifiée et encourage le programmeur à être plus explicite dans la gestion de la mémoire. « Avec Zig, nous ne prétendons pas pouvoir garantir la sécurité mémoire à 100 % ; nous donnons au développeur les outils pour écrire du code sûr s'il le souhaite, mais sans le contraindre », a résumé Kelley.
Un outillage encore en construction
L'entretien a également abordé l'écosystème d'outils autour de Zig. Kelley a reconnu que l'environnement de développement intégré (IDE) et le débogueur n'ont pas encore atteint la maturité de ceux disponibles pour Rust ou C++. Il a toutefois indiqué que des efforts significatifs sont en cours, notamment avec l'intégration de LSP (Language Server Protocol) et des améliorations du compilateur auto-hébergé (self-hosted). Il a salué le travail de la communauté et des contributeurs, tout en rappelant que le développement de Zig reste principalement porté par lui-même et un petit noyau dur.
La promesse de la compilation croisée simplifiée
Kelley a mis en avant la compilation croisée comme l'un des atouts majeurs de Zig. Contrairement à C ou Rust, où configurer une chaîne de compilation pour une architecture cible différente (ex. ARM depuis x86) peut être un véritable casse-tête, Zig embarque nativement les définitions des cibles et les bibliothèques de base. « Vous compilez pour n'importe quelle cible avec une seule commande, sans outil supplémentaire », a-t-il assuré.
Vers une version 1.0 ?
Interrogé sur le calendrier, Kelley s'est montré prudent. Il a rappelé que Zig est encore en phase de stabilisation et qu'aucune date de sortie pour la version 1.0 n'est fixée. Il préfère se concentrer sur la solidité du langage et de sa bibliothèque standard avant de geler les spécifications. « Nous préférons prendre le temps nécessaire plutôt que de livrer quelque chose d'incomplet », a-t-il déclaré.
Une communauté active mais modeste
L'entretien a également souligné la croissance de l'adoption de Zig, notamment dans les secteurs embarqués, du jeu vidéo et des outils système. Kelley a noté que la communauté reste petite comparée à C++ ou Rust, mais qu'elle est particulièrement engagée. Il a cité des projets comme Bun (runtime JavaScript) ou TigerBeetle (base de données transactionnelle) qui utilisent Zig en production comme des preuves de sa viabilité.
Conclusion
L'entretien avec JetBrains offre un aperçu rare et détaillé de la vision de Kelley pour Zig. Si le langage doit encore mûrir sur le plan de l'outillage et de la documentation, sa philosophie cohérente et ses avantages concrets (compilation croisée, transparence, performances) lui permettent de se tailler une place dans le paysage des langages systèmes modernes, en complément – plutôt qu'en remplacement – de Rust et C.