La version 0.26 de l'outil GNU Mes a été publiée, assurant le processus de bootstrap pour GCC et permettant d'atteindre un cycle de reconstruction fermé à partir des sources. Cet outil s'attaque à la tâche de la construction vérifiée initiale du compilateur dans les distributions, rompant la chaîne de reconstruction cyclique (la construction du compilateur nécessitant des exécutables déjà construits, les builds binaires du compilateur étant une source potentielle de portes dérobées, ce qui empêche de garantir complètement l'intégrité des builds à partir des sources de référence).
GNU Mes propose un interpréteur autonome pour le langage Scheme, écrit en C, ainsi qu'un compilateur simple pour le langage C (MesCC), écrit en Scheme. Les deux composants sont mutuellement assemblables. L'interpréteur Scheme permet de compiler le compilateur C MesCC, qui à son tour permet de compiler une version allégée du compilateur TinyCC (tcc), dont les fonctionnalités sont suffisantes pour compiler GCC.
L'interpréteur du langage Scheme est très compact, comptant environ 5000 lignes de code utilisant un sous-ensemble simple du langage C, et peut être transformé en un fichier exécutable à l'aide du traducteur universel M2-Planet ou d'un compilateur C simple, assemblé avec un assembleur auto-assemblant hex0, ne nécessitant pas de dépendances externes. L'interpréteur inclut également un ramasse-miettes complet et fournit une bibliothèque de modules chargés. Le projet développe également la bibliothèque C Mes, suffisante pour assembler glibc 2.2.5, binutils 2.20.1 et gcc 2.95.3, nécessaires pour déployer la distribution Guix sur les plateformes i686-linux, x86_64-linux, armhf-linux et aarch64-linux, en utilisant uniquement les sources (Full Source Bootstrap).
La nouvelle version a ajouté la prise en charge de modules entièrement compatibles avec Guile, ainsi que la possibilité de lancer Gash et Gash-Utils. Migration d'assertions vers l'utilisation d'exceptions. Ajout de la prise en charge des expressions régulières. Neuf nouveaux modules ont été réalisés (ftw, i18n, receive, regex, io ports, bytevectors, srfi-2, srfi-11 et srfi-37). 46 nouvelles fonctions ont été ajoutées, parmi lesquelles chdir, clone-port, closedir, concatenate, drop, environ, execle, mkdir, opendir, partition, pipe, readdir, reduce, rmdir, seek, span, sleep, umask, uname et utimes. Les prochaines versions devraient intégrer la prise en charge du bootstrap de NixOS uniquement à partir des sources, la possibilité de bootstrap de gcc 4.6.4, ainsi que le support d'une construction complète de l'ensemble du système à partir des sources dans des environnements Linux basés sur les architectures armhf et riscv64.
Source : opennet.ru
