Se ha publicado la versión 0.26 de la herramienta GNU Mes, que proporciona el proceso de arranque (bootstrap) para GCC y permite lograr un ciclo cerrado de reconstrucción a partir de los textos fuente. Esta herramienta aborda la tarea de la construcción inicial verificada del compilador en distribuciones, rompiendo la cadena de reconstrucción cíclica (para construir el compilador se requieren archivos ejecutables de un compilador ya construido, y las compilaciones binarias del compilador son una fuente potencial de puertas traseras ocultas, lo que impide garantizar completamente la integridad de las compilaciones a partir de los textos fuente de referencia).
GNU Mes ofrece un intérprete autosuficiente (self-hosting) para el lenguaje Scheme, escrito en C, y un compilador básico para C (MesCC), escrito en Scheme. Ambos componentes son mutuamente ensamblables. El intérprete de Scheme permite compilar el compilador C MesCC, que luego permite compilar una versión reducida del compilador TinyCC (tcc), cuyas capacidades ya son suficientes para compilar GCC.
El intérprete del lenguaje Scheme es muy compacto, ocupando alrededor de 5000 líneas de código en un subconjunto básico del lenguaje C y puede ser convertido en un archivo ejecutable utilizando el traductor universal M2-Planet o un compilador C básico ensamblado utilizando el ensamblador autosuficiente hex0, que no requiere dependencias externas. Al mismo tiempo, el intérprete incluye un recolector de basura completo y proporciona una biblioteca de módulos cargables. El proyecto también desarrolla la biblioteca C de Mes, que es suficiente para compilar glibc 2.2.5, binutils 2.20.1 y gcc 2.95.3, necesarios para desplegar la distribución Guix para plataformas i686-linux, x86_64-linux, armhf-linux y aarch64-linux, utilizando solo textos fuente (Full Source Bootstrap).
En esta nueva versión se ha añadido soporte para módulos completamente compatibles con Guile y se ha proporcionado la posibilidad de ejecutar Gash y Gash-Utils. Se ha realizado la transición de assert a excepciones. Se ha añadido soporte para expresiones regulares. Se han implementado nueve nuevos módulos (ftw, i18n, receive, regex, io ports, bytevectors, srfi-2, srfi-11 y srfi-37). Se han añadido 46 nuevas funciones, entre las que se encuentran chdir, clone-port, closedir, concatenate, drop, environ, execle, mkdir, opendir, partition, pipe, readdir, reduce, rmdir, seek, span, sleep, umask, uname y utimes. En próximas versiones se espera soporte para el arranque de NixOS únicamente a partir de textos fuente, la posibilidad de arranque de gcc 4.6.4, así como soporte para la construcción completa de todo el sistema a partir de textos fuente en entornos Linux basados en arquitecturas armhf y riscv64.
Fuente: opennet.ru
