Le projet gccrs est une implémentation alternative complète du langage Rust au-dessus de GCC avec l'objectif de devenir complètement en amont de la chaîne d'outils GNU. L'origine de ce projet est un effort de la communauté il y a plusieurs années, alors que Rust était encore à la version 0.9 ; le langage créé par Mozilla était sujet à tant de changements qu'il devenait difficile pour un effort de la communauté de rattraper le retard. Maintenant que le langage est stable, c'est le moment pour créer des compilateurs alternatifs. Le développement est dirigé par des "Rustaceans" enthousiastes et a connu une accélération au cours des trois dernières années.
« Commencé en 2014 (et relancé en 2019), l'effort est en cours depuis 2020 et nous avons fait beaucoup d'efforts et beaucoup de progrès. Nous avons mis en amont la première version de gccrs au sein de GCC. Ainsi, la prochaine fois que vous installerez GCC 13, vous aurez gccrs à l'intérieur. Vous pouvez l'utiliser et vous pouvez commencer à pirater dessus, vous pouvez s'il vous plaît signaler les problèmes quand il se plante inévitablement et meurt horriblement. Une grande chose que nous faisons est un travail pour faire fonctionner la suite de tests rustc », a déclaré Arthur Cohen lors de sa présentation à la conférence FOSDEM au début du mois.
« Nous voulons que gccrs soit un vrai compilateur Rust et non un projet jouet ou quelque chose qui compile un langage qui ressemble à Rust, mais qui n'est pas Rust ; nous essayons vraiment de faire fonctionner cette suite de tests », a-t-il ajouté. Lors de la présentation, Cohen a également déclaré que, bien que le frontend Rust de GCC 13 ait pris un bon départ, il y a encore beaucoup de travail à faire. Le code de vérification des emprunts est notablement absent pour le moment, le support des modules intégrés et des intrinsèques est toujours en cours, et l'étape importante de la compilation du code Rust for Linux n'a pas encore été franchie.
La capacité à exécuter avec succès la suite de tests du compilateur rustc reste également un objectif à atteindre. Selon Cohen, l'interface GCC de Rust vise également l'ancienne version 1.49 de Rust libcore. La FAQ du projet gccrs note que l'ensemble des technologies de compilation de LLVM - que Rust utilise - "manque de certains backends que GCC supporte, donc une implémentation de gccrs peut combler les lacunes pour une utilisation dans le développement embarqué". Cependant, veuillez noter que le compilateur Rust-GCC (gccrs) est encore à un stade très précoce et qu'il n'est pas encore utilisable pour compiler de vrais programmes Rust.
L'équipe de GCC a voté en juillet dernier pour approuver l'intégration de gccrs à la suite de compilateurs. L'importance de ce projet réside dans sa signification pour le noyau Linux. En effet, le noyau Linux est généralement construit avec GCC, mais les plans visant à permettre l'utilisation du langage Rust aux côtés de C pour le code du noyau, pour des raisons de sécurité de la mémoire, progressent régulièrement. Le projet "Rust for Linux" a été officiellement fusionné dans l'arbre Git principal de Linux 6.1 en octobre dernier, faisant de Rust le deuxième langage dédié au développement de Linux, après 31 ans de développement exclusivement en C.
Pour rappel, le projet "Rust for Linux" vise à introduire un nouveau langage de programmation système dans le noyau Linux. Selon les experts, le langage Rust a une propriété clé qui le rend très intéressant à considérer comme le deuxième langage du noyau Linux : il garantit qu'aucun comportement indéfini n'a lieu (tant que le code non sécurisé est sain). Cela inclut l'absence d'erreurs de type use after-free, double frees, data races, etc. Les débats y relatifs tournent au tour de la possibilité d’une mise au rebut du C au profit du langage Rust. Mais Linus Torvalds, le créateur de Linux, a déclaré que ce n'est pas l'objectif déclaré du projet Rust for Linux.
Dans un communiqué en juillet dernier, David Edelsohn, membre fondateur du comité directeur de GCC, a déclaré : « nous sommes impatients d'inclure une version préliminaire et bêta de GCC Rust dans GCC 13 ». GCC a un calendrier de publication annuel. La version 12.1 a été publiée en mai 2022. Ainsi, on peut s'attendre à ce que GCC 13 soit disponible vers le mois de mai de cette année. Notons que GCC possède déjà un backend pour Rust, un projet appelé "rustc_codegen_gcc" fondé par Antoni Boucher. Il est toujours décrit comme un travail en cours, mais a été fusionné dans le dépôt principal de Rust en septembre 2021.
Cela signifie que le compilateur rustc peut être utilisé avec le backend GCC, le backend étant le générateur de code qui supporte plus d'architectures CPU que LLVM, le compilateur backend habituel de Rust, bien qu'il y ait des limitations telles que la nécessité d'une version patchée de GCC. Le projet gccrs consiste à développer une chaîne d'outils GCC complète.
Sources : présentation d'Arthur Cohen à la conférence FOSDEM de février 2023, gccrs
Et vous ?
Quel est votre avis sur le sujet ?
Voir aussi
Rust for Linux est officiellement fusionné, le support initial de Rust for Linux fournit l'infrastructure de base et une intégration élémentaire
L'inclusion de Rust for Linux à la version 6.1 du noyau est désormais en cours comme souhaité par Linus Torvalds et va rendre possible le développement de pilotes dans un autre langage que le C
Après 31 ans, un deuxième langage sera admis pour le développement du noyau Linux : c'est le Rust, considéré par plusieurs comme candidat idéal pour la mise au rebut du langage C
GCC 13 prend désormais en charge Modula-2, le descendant de Pascal ; il supporte également le langage Rust