lançamento do conjunto de ferramentas , que fornece o processo de bootstrapping para GCC e permite alcançar um ciclo de recompilação a partir de códigos-fonte.
A ferramenta resolve a tarefa de verificação da construção inicial do compilador em distribuições, interrompendo a cadeia de recompilação cíclica (para a construção do compilador, são necessários arquivos executáveis já construídos, e as compilações binárias do compilador podem ser fontes potenciais de backdoors ocultos, o que não garante totalmente a integridade das compilações a partir de códigos-fonte de referência).
No GNU Mes um interpretador autossuficiente para a linguagem Scheme, escrito em C, e um compilador simples para a linguagem C (MesCC), escrito em Scheme. Ambos os componentes são mutuamente compiláveis. O interpretador Scheme permite compilar o compilador C MesCC, que por sua vez permite compilar uma versão reduzida do compilador (tcc), cujas capacidades são suficientes para compilar o GCC.
O interpretador da linguagem Scheme é bastante compacto, ocupando cerca de 5000 linhas de código em um subconjunto simples da linguagem C e pode ser transformado em um arquivo executável utilizando um tradutor universal ou um compilador C simples, compilado utilizando um montador autossuficiente , que não requer dependências externas. O interpretador inclui um coletor de lixo completo e fornece uma biblioteca de módulos carregáveis.
Na nova versão, foi adicionada a suporte para compilações repetíveis usando combinações mes+mescc ou guile+mescc nas distribuições GNU Guix, Debian GNU/Linux e NixOS. Foi incluída a capacidade de executar o interpretador Scheme Mes no GNU Hurd, mas o compilador C mescc ainda não funciona devido à falta de suporte para as chamadas de sistema necessárias (por exemplo, fork/exec). Foi adicionada a suporte inicial para a criação de arquivos executáveis FreeBSD. Melhorias foram feitas no suporte ao bootstrapping da distribuição Guix utilizando apenas componentes em Scheme (o shell Gash (Guile as Shell) em vez de bash e Gash Core Utils em vez de coreutils, grep, sed, gzip, make, awk e tar).
Nas próximas versões, espera-se a inclusão do suporte a bootstrapping para NixOS, a adição de bootstrapping exclusivamente com componentes em Scheme na ramificação wip-bootstrap, suporte à arquitetura ARM, a capacidade de compilar o Mes.c usando M2-Planet, suporte total a módulos Guile e garantir o funcionamento do mescc com o núcleo Hurd.
Fonte: opennet.ru
