Foi lançado a versão 0.26 da ferramenta GNU Mes, que fornece o processo de bootstrap para GCC e permite alcançar um ciclo fechado de recompilação a partir de códigos-fonte. A ferramenta resolve o problema de uma construção inicial verificada do compilador em distribuições, quebrando a cadeia de recompilação cíclica (pois a construção do compilador requer arquivos executáveis de um compilador já construído, e as construções binárias do compilador podem ser uma fonte potencial de backdoors, o que não permite garantir totalmente a integridade das compilações a partir de códigos-fonte de referência).
O GNU Mes oferece um interpretador autocontido (self-hosting) 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 de Scheme permite a compilação do compilador C MesCC, que, por sua vez, permite compilar uma versão reduzida do compilador TinyCC (tcc), cujas funcionalidades já são suficientes para compilar o GCC.
O interpretador de Scheme é muito compacto, ocupando cerca de 5000 linhas de código em um subconjunto simples da linguagem C e pode ser convertido em um arquivo executável usando o tradutor universal M2-Planet ou um compilador C simples, que é compilado usando o montador autocontido hex0, que não requer dependências externas. O interpretador inclui um coletor de lixo completo e fornece uma biblioteca de módulos carregáveis. O projeto também desenvolve a biblioteca C Mes, que é suficiente para compilar o glibc 2.2.5, binutils 2.20.1 e gcc 2.95.3, necessários para o deployment do Guix nas plataformas i686-linux, x86_64-linux, armhf-linux e aarch64-linux, usando apenas os códigos-fonte (Bootstrap Completo).
A nova versão adiciona suporte para módulos totalmente compatíveis com Guile e fornece a capacidade de executar Gash e Gash-Utils. A transição foi realizada de assert para uso de exceções. Adicionado suporte para expressões regulares. Nove novos módulos foram implementados (ftw, i18n, receive, regex, io ports, bytevectors, srfi-2, srfi-11 e srfi-37). Foram adicionadas 46 novas funções, incluindo chdir, clone-port, closedir, concatenate, drop, environ, execle, mkdir, opendir, partition, pipe, readdir, reduce, rmdir, seek, span, sleep, umask, uname e utimes. Versões futuras devem esperar suporte para bootstrapping NixOS apenas a partir de códigos-fonte, possibilidade de bootstrapping do gcc 4.6.4, bem como suporte para construção completa de todo o sistema a partir de códigos-fonte em ambientes Linux baseados nas arquiteturas armhf e riscv64.
Fonte: opennet.ru
