È stato pubblicato il rilascio dello strumento GNU Mes 0.27, che supporta il processo di bootstrap per GCC e consente di raggiungere un ciclo chiuso di ricompilazione a partire dai sorgenti. Lo strumento affronta il problema della creazione iniziale verificata del compilatore nelle distribuzioni, interrompendo la catena di ricompilazione ciclica (per costruire il compilatore sono necessari file eseguibili già compilati, e le distribuzioni binarie del compilatore possono essere una fonte potenziale di backdoor, il che non consente di garantire completamente l'integrità delle compilazioni dai sorgenti di riferimento).
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).
Nel nuovo rilascio è stata ripristinata la compatibilità del lancio di Mes nell'ambiente GNU Hurd. Sono stati aggiunti nuovi moduli: rnrs (aritmetica bit a bit) e srfi (srfi-39). Per compatibilità con Guile, il modulo srfi viene caricato per impostazione predefinita. Sono state aggiunte nuove funzioni: pair-for-each e with-fluids*. Nel compilatore MesCC è stata implementata la possibilità di lavorare con moduli per la generazione di parser e analizzatori lessicali NYACC nelle versioni da 0.99.0 a 1.09.4. È stata rimossa la possibilità di utilizzare moduli obsoleti in stile mes per NYACC e MesCC.
Fonte: opennet.ru
