Slashdot Reader Sleeping Cat partage un récente conférence FOSDEM par un ingénieur compilateur sur l’équipe de construction Rust-GCC“une implémentation alternative du compilateur pour le langage de programmation Rust.”
“Si gccrs interprète un programme différemment de rouillercela est considéré comme un bogue”, explique le FAQ du projet sur GitHub.
La FAQ note également que l’ensemble de technologies de compilateur de LLVM – que Rust utilise – “manque certains backends pris en charge par GCC, donc un gccrs l’implémentation peut combler les lacunes pour une utilisation dans le développement embarqué.” Mais la FAQ met également en évidence un autre avantage potentiel :
Avec l’annonce récente de l’autorisation de Rust dans la base de code du noyau Linuxune implication sécuritaire intéressante a été mise en évidence par Open Source Security, inc.. Lorsque le code est compilé et utilise l’optimisation du temps de liaison (LTO), GCC émet GIMPLE [an intermediate representation] directement dans une section de chaque fichier objet, et LLVM fait quelque chose de similaire avec son propre bytecode. Si mélange rouiller-code compilé et code construit par GCC dans le noyau Linux, les compilateurs seront incapables d’effectuer une passe d’optimisation complète du temps de liaison sur tout le code compilé, ce qui entraînera une absence de CFI (intégrité du flux de contrôle).
Si Rust est disponible dans la chaîne d’outils GNU, les versions peuvent être construites sur le noyau Linux (par exemple) avec CFI en utilisant LLVM ou GCC.
Commencé en 2014 (et relancé en 2019), “L’effort se poursuit depuis 2020… et nous avons fait beaucoup d’efforts et beaucoup de progrès”, a déclaré l’ingénieur compilateur Arthur Cohen dans la conférence. “Nous avons mis en amont la première version de gccrs au sein du CCG. Ainsi, la prochaine fois que vous installerez GCC 13, vous aurez gccrs dedans. Vous pouvez l’utiliser, vous pouvez commencer à le pirater, vous pouvez signaler les problèmes lorsqu’il se bloque inévitablement et meurt horriblement.”
“L’une des grandes choses que nous faisons est de travailler à la gestion du rouiller suite de tests. Parce que nous voulons gccrs être un véritable 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.”
Lisez la suite pour quelques notes de la conférence…
- Il réutilise la chaîne d’outils GNU — la gdb débogueur, le comme l’assembleur et l’éditeur de liens ld – tout en réutilisant les bibliothèques Rust officielles comme libcore,libstdet libproc.
- “En raison de la façon dont GCC est architecturé, une fois que vous arrivez à ce backend GCC commun et à cette représentation intermédiaire GCC commune, vous pouvez essentiellement réutiliser tous les plugins qui ont été écrits pour GCC. Et cela signifie beaucoup de plugins – plugins de sécurité, des trucs comme les analyseurs statiques, le LTO (optimisation du temps de liaison), le CFI, les plugins de sécurité, etc.”
- “Nous espérons également que parce que nous l’avons écrit en C++, cela signifie que nous pourrons le rétroporter vers les versions précédentes de GCC. Et j’espère que cela aidera certains systèmes à obtenir Rust.”
- “Parce que GCC est beaucoup plus ancien que LLVM, il prend en charge plus d’architectures et plus de cibles que LLVM. Donc, techniquement, grâce à gccrsvous pourrez désormais exécuter Rust sur votre satellite soviétique préféré et ainsi de suite.”