È stato pubblicato il rilascio degli strumenti GNU Mes 0.26, che forniscono il processo di bootstrap per GCC e consentono di ottenere un ciclo di ricompilazione chiuso dai codici sorgente. Gli strumenti risolvono il problema della compilazione iniziale verificata del compilatore nelle distribuzioni, interrompendo la catena di ricompilazione ciclica (per compilare il compilatore sono necessari file eseguibili di un compilatore già compilato, e le compilazioni binarie del compilatore sono potenziali fonti di backdoor nascoste, il che non consente di garantire completamente l'integrità delle compilazioni dai codici sorgente 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).
In questo nuovo rilascio è stata aggiunta la supporto per moduli completamente compatibili con Guile e sono state fornite le possibilità di avvio di Gash e Gash-Utils. È avvenuto il passaggio da assert all'uso delle eccezioni. È stato aggiunto il supporto per le espressioni regolari. Sono stati implementati nove nuovi moduli (ftw, i18n, receive, regex, io ports, bytevectors, srfi-2, srfi-11 e srfi-37). Sono state aggiunte 46 nuove funzioni, tra cui chdir, clone-port, closedir, concatenate, drop, environ, execle, mkdir, opendir, partition, pipe, readdir, reduce, rmdir, seek, span, sleep, umask, uname e utimes. Nei prossimi rilasci è previsto il supporto per il bootstrap di NixOS solo dai codici sorgente, la possibilità di bootstrap gcc 4.6.4, così come il supporto per la compilazione completa dell'intero sistema dai codici sorgente in ambienti Linux basati su architetture armhf e riscv64.
Fonte: opennet.ru
