IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

GCC se dote d'un nouveau frontend pour le langage de programmation Rust,
Une version préliminaire de ce compilateur appelé "gccrs" devrait être incluse dans GCC 13

Le , par Bill Fassinou

15PARTAGES

4  0 
Le projet "gccrs", qui vise à fournir un frontend pour le langage Rust à GCC (GNU Compiler Collection), est en bonne voie pour être intégré à GCC 13. À la conférence des développeurs FOSDEM au début du mois, l'ingénieur Arthur Cohen a fait une présentation sur gccrs exposant l'état actuel des travaux. Bien que le frontend gccrs ait été fusionné pour la prochaine version GCC 13, il n'est pas encore dans un état qui sera vraiment utilisable par la plupart des développeurs Rust en tant qu'alternative au compilateur officiel LLVM de Rust. Il ne devrait pas l'être avant l'année prochaine, au moins avec GCC 14 au moins.

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

Une erreur dans cette actualité ? Signalez-nous-la !