30 Mars 2024
Le 26 février dernier, la Maison Blanche invitait les développeurs, entre autres dispositions, à choisir des langages de programmation qui permettent de minimiser la surface d'attaque dans un contexte de menace croissante sur le cyberespace. La seconde partie du rapport énumère les trois caractéristiques que doit vérifier un langage sûr.
La suite du rapport s'intéresse aux langages les plus largement utilisés qui répondent à l'ensemble des caractéristiques, précisant: "The most widely used languages that meet all three properties are C and C++, which are not memory safe programming languages. Rust, one example of a memory safe programming language, has the three requisite properties above, but has not yet been proven in space systems." Il n'en fallait pas plus pour que de nombreux articles annoncent que la Maison Blanche invitait les développeurs à passer sous Rust. Notre culture française pourrait nous inviter à objecter que notre pays a œuvré depuis des années pour l'adoption de langages sûrs tels que Ada (dont on se souviendra qu'il a été proposé par Bull pour répondre aux exigences du département de la défense américaine) ou Esterel, langages qui n'ont eu de succès que dans des contextes où la sûreté de fonctionnement en environnement temps réel joue un rôle essentiel. Mais la proposition des autorités américaines est à considérer avec intérêt, le langage Rust présentant en effet de nombreux atouts.
Cela fait une dizaine d'années que certaines développeurs me recommandent d'utiliser ce langage créé par Graydon Hoare, employé de Mozilla, dans le cadre de la création de Servo, un moteur de rendu pour navigateur Web, passé depuis dans le giron de la fondation Linux. Au fil des années, le langage Rust s'est progressivement fait une place mais peine à entrer dans le haut du classement. En restant sous la barre des 13% d'adoption par la communauté des développeurs, Rust est loin de concurrencer les poids lourds du classement que sont JavaScript, Python et Java. Pourtant, Rust est depuis plusieurs années dans le haut du classement des langages les plus désirés et très souvent mentionné comme le langage le plus admiré.
L'écart entre ces deux statistiques tient certainement en partie à la barrière d'entrée pour se familiariser avec le langage. Le gouvernement américain ne s'est pas trompé en voyant en Rust un candidat de choix pour développer des programmes sûrs, mais cette sûreté à un un prix qui se paye dès la compilation. La syntaxe du langage exige du développeur une rigueur qui peut être parfois décourageante. Pour ma part, mes premières expériences avec le langage ont été difficiles sur ce plan. L'utilisant de manière très occasionnelle depuis 2019, j'ai plusieurs fois abandonné l'idée de développer un "side project" avec ce langage pour revenir sur des langages moins contraignants tels que Java ou Python. Pourtant, je ne me lasse pas de revenir vers ce langage régulièrement. Au delà des arguments avancées par la Maison Blanche que je partage, l'un des arguments qui m'a récemment convaincu qu'on ne pourrait par ignorer ce langage plus longtemps, est qu'il s'agit d'une alternative moderne au langage C pour développer des programmes frugaux. Même si ce classement a souvent été remis en cause depuis sa large diffusion, je ne peux pas m'empêcher de noter que Rust apparaît en excellente position sur le classement des langages les plus verts.
Voyant en Rust un langage de programmation de bas niveau destiné à la programmation des pilotes de périphériques ou des fonctions de base des systèmes d'exploitation (notons au passage que le noyau Linux a ouvert ses portes au langage il y a quelques mois), je m'étais résigné à penser que l'industrie rechignerait à s'appuyer sur un tel langage pour construire des applications complexes. Mais une série d'articles m'a invité à effectuer quelques recherches qui m'ont fait changer d'avis: l'écosystème Rust n'est pas aussi minimaliste qu'on pourrait le croire. Autour de ce langage, on trouve des frameworks qui permettent de s'interfacer avec des bases de données et des bus de communication, d'exposer des interfaces de Web Services, de construire des interfaces graphiques, et même de proposer des IHM Web via Web Assembly.
Sécure, Green et Full-Stack, le langage Rust mérite qu'on s'y intéresse et cet article devrait être le premier d'une série destinée à illustrer les possibilités offertes par ce langage.