Dopo un anno e mezzo di sviluppo è stata rilasciata la GNU Mes 0.25, che garantisce il processo di bootstrap per GCC e consente di ottenere un ciclo di ricompilazione chiuso dai sorgenti. Questo strumento affronta la questione di una compilation iniziale verificata nei pacchetti, interrompendo la catena di ricompilazione ciclica (poiché per compilare il compilatore sono necessari file eseguibili già compilati, e le versioni binarie del compilatore rappresentano una fonte potenziale di backdoor, il che non consente di garantire completamente l'integrità delle versioni dai sorgenti ufficiali).
GNU Mes offre un interprete autonomo per il linguaggio Scheme, scritto in C, e un semplice compilatore per il linguaggio C (MesCC), scritto in Scheme. Entrambi i componenti sono reciprocamente compilabili. L'interprete Scheme consente di compilare il compilatore C MesCC, che a sua volta consente di costruire 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 nella sottosetta più semplice del linguaggio C e può essere convertito in un file eseguibile utilizzando il traduttore universale M2-Planet o un semplice compilatore C, costruito utilizzando l'assemblatore auto-costruibile 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, sufficiente per compilare glibc 2.2.5, binutils 2.20.1 e gcc 2.95.3, necessari per il dispiegamento della distribuzione Guix per piattaforme i686-linux, x86_64-linux, armhf-linux e aarch64-linux, utilizzando solo i sorgenti (Full Source Bootstrap).
Nella nuova versione è stata implementata la compatibilità con l'architettura RISC-V (RISC-V64-linux) ed è stata aggiunta la possibilità di compilare utilizzando il transpiler M2-Planet. È supportata la compilazione con la versione M2-Planet 1.11.0 per la piattaforma target x86_64-linux. L'indicazione della modalità «—bootstrap-mode» nell'uso di M2-Planet non è più necessaria. In MesCC sono stati risolti problemi di compatibilità con le versioni GCC 10+, è stata garantita l'inizializzazione dei campi delle strutture a 0 ed è stata ripristinata la possibilità di debug di file binari a livello di singole funzioni.
Nei prossimi rilasci ci si attende l'introduzione del supporto per il bootstrap di NixOS esclusivamente dai sorgenti, il supporto per moduli completamente compatibili con Guile, la possibilità di eseguire Gash e Gash-Utils, il supporto per il bootstrap di gcc 4.6.4, oltre alla possibilità di una ricompilazione completa dell'intero sistema dai sorgenti in ambienti Linux basati sulle architetture armhf e riscv64.
Fonte: opennet.ru
