Dopo un anno e mezzo di sviluppo, è stata rilasciata la versione 0.25 degli strumenti GNU Mes, che forniscono il processo di bootstrapping per GCC e permettono di ottenere un ciclo di ricompilazione chiuso a partire dai sorgenti. Gli strumenti affrontano la questione della verifica dell'assemblaggio iniziale del compilatore nelle distribuzioni, rompendo la catena della ricompilazione ciclica (per costruire un compilatore sono necessari file eseguibili già compilati, e le build binarie del compilatore possono essere potenziali fonti di backdoor, il che non garantisce completamente l'integrità delle build dai sorgenti di riferimento).
In GNU Mes è presente un interprete autonomo (self-hosting) per il linguaggio Scheme, scritto in C, e un compilatore di base per il linguaggio C (MesCC), scritto in Scheme. Entrambi i componenti sono incapsulabili. L'interprete Scheme consente di costruire il compilatore C MesCC, che a sua volta permette di compilare una versione ridotta del compilatore TinyCC (tcc), le cui capacità sono già sufficienti per compilare GCC.
L'interprete del linguaggio Scheme è molto compatto, occupa circa 5000 righe di codice nel più semplice sottoinsieme del linguaggio C e può essere trasformato in un file eseguibile utilizzando il traduttore universale M2-Planet o un semplice compilatore C costruito con l'assembler auto-compilante hex0, che non richiede dipendenze esterne. Inoltre, l'interprete include un completo garbage collector e fornisce una libreria di moduli caricabili. Il progetto sviluppa anche la libreria C Mes, che è sufficiente per compilare glibc 2.2.5, binutils 2.20.1 e gcc 2.95.3, necessari per il deployment della distribuzione Guix su piattaforme i686-linux, x86_64-linux, armhf-linux e aarch64-linux, utilizzando solo i codici sorgente (Full Source Bootstrap).
La nuova versione implementa il supporto per l'architettura RISC-V (RISC-V64-linux) e aggiunge il supporto per la compilazione utilizzando il transpiler M2-Planet. È supportata la compilazione con la versione 1.11.0 di M2-Planet per la piattaforma target x86_64-linux. Non è più necessario specificare la modalità "—bootstrap-mode" durante l'uso di M2-Planet. In MesCC sono stati risolti problemi di compatibilità con le versioni GCC 10+, è stata garantita l'inizializzazione dei campi delle strutture a zero e ripristinata la possibilità di debug dei file binari a livello di singole funzioni.
Nei prossimi rilasci si prevede di introdurre il supporto per il bootstrapping di NixOS esclusivamente dai sorgenti, supporto per moduli completamente compatibili con Guile, possibilità di esecuzione di Gash e Gash-Utils, supporto per il bootstrapping di gcc 4.6.4, e la possibilità di costruire completamente l'intero sistema a partire dai sorgenti in ambienti Linux basati sulle architetture armhf e riscv64.
Fonte: opennet.ru
