a publié un ensemble d'outils , fournissant le processus de bootstrap pour GCC et permettant d'atteindre un cycle de reconstruction complet à partir des sources.
Cet outil résout le problème de la construction initiale vérifiée du compilateur dans les distributions, rompant la chaîne de reconstruction cyclique (pour compiler le compilateur, des fichiers exécutables d'un compilateur déjà construit sont nécessaires, et les assemblages binaires du compilateur peuvent être des sources potentielles de portes cachées, ce qui ne permet pas de garantir entièrement l'intégrité des assemblages provenant des sources de référence).
Dans GNU Mes un interpréteur autonome pour le langage Scheme, écrit en C, et le compilateur le plus simple pour le langage C (MesCC), écrit en Scheme. Les deux composants sont capables de se reconstruire mutuellement. L'interpréteur Scheme permet de compiler le compilateur C MesCC, qui permet ensuite de construire une version allégée du compilateur (tcc), dont les capacités sont déjà suffisantes pour compiler GCC.
L'interpréteur du langage Scheme est suffisamment compact, occupant environ 5000 lignes de code dans le sous-ensemble le plus simple du langage C et peut être transformé en un fichier exécutable en utilisant un traducteur universel ou le compilateur C le plus simple, construit à l'aide d'un assembleur auto-reconstruisant , ne nécessitant pas de dépendances externes. Parallèlement, l'interpréteur comprend un ramasse-miettes complet et fournit une bibliothèque de modules chargés.
La nouvelle version assure le support des reconstructions répétables en utilisant les combinaisons mes+mescc ou guile+mescc dans les distributions GNU Guix, Debian GNU/Linux et NixOS. La possibilité de lancer l'interpréteur Scheme Mes dans GNU Hurd a été ajoutée, mais le compilateur C mescc ne fonctionne pas encore en raison du manque de prise en charge des appels système nécessaires (par exemple, fork/exec). Un support initial pour la création de fichiers exécutables FreeBSD a été ajouté. Le support du bootstrap du distributif Guix a été amélioré en n'utilisant que des composants en Scheme (le shell Gash (Guile as Shell) au lieu de bash et Gash Core Utils au lieu de coreutils, grep, sed, gzip, make, awk et tar).
Les prochaines versions devraient inclure le support du bootstrapping pour NixOS, l'activation du bootstrapping uniquement avec des composants en langage Scheme dans la branche wip-bootstrap, le support de l'architecture ARM, la possibilité de compiler Mes.c avec M2-Planet, un support complet des modules Guile, et la compatibilité de mescc avec le noyau Hurd.
Source : opennet.ru
