Se ha publicado la versión 0.27 de la herramienta GNU Mes, que proporciona el proceso de arranque (bootstrap) para GCC y permite lograr un ciclo cerrado de recompilación a partir de los fuentes. Esta herramienta aborda la tarea de una compilación inicial verificada del compilador en distribuciones, rompiendo la cadena de recompilación cíclica (para compilar el compilador se requieren archivos ejecutables de un compilador ya compilado, y las compilaciones binarias del compilador son una fuente potencial de puertas traseras ocultas, lo que no garantiza completamente la integridad de las compilaciones a partir de los fuentes 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 reactivado el soporte para ejecutar Mes en el entorno GNU Hurd. Se han añadido nuevos módulos: rnrs (aritmética de bits) y srfi (srfi-39). Para compatibilidad con Guile, el módulo srfi se carga por defecto. Se han introducido nuevas funciones: pair-for-each y with-fluids*. En el compilador MesCC se ha implementado la posibilidad de trabajar con módulos para la generación de analizadores sintácticos y léxicos NYACC de las versiones 0.99.0 a 1.09.4. Se ha eliminado la posibilidad de usar módulos obsoletos al estilo mes para NYACC y MesCC.
Fuente: opennet.ru
