Después de un año y medio de desarrollo, se ha lanzado la herramienta GNU Mes 0.25, que proporciona el proceso de arranque (bootstrap) para GCC y permite lograr un ciclo de reensamblaje cerrado a partir de fuentes. La herramienta resuelve el problema de la construcción verificada inicial del compilador en distribuciones, rompiendo la cadena de reensamblaje cíclica (la construcción del compilador requiere archivos ejecutables de un compilador ya ensamblado, y las compilaciones binarizadas del compilador son fuentes potenciales de trampas ocultas, lo que no permite 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 implementado soporte para la arquitectura RISC-V (RISC-V64-linux) y se ha añadido soporte para la compilación con el transpiler M2-Planet. Se admite la construcción con la versión M2-Planet 1.11.0 para la plataforma de destino x86_64-linux. No es necesario especificar el modo «—bootstrap-mode» al usar M2-Planet. En MesCC se han resuelto problemas de compatibilidad con versiones de GCC 10+, se ha asegurado la inicialización de los campos de las estructuras a un valor de 0 y se ha restaurado la capacidad de depurar archivos binarios a nivel de funciones individuales.
En las próximas versiones se espera la aparición del soporte de arranque (bootstrapping) de NixOS solo a partir de los códigos fuente, soporte de módulos totalmente compatibles con Guile, la capacidad de ejecutar Gash y Gash-Utils, soporte de arranque para gcc 4.6.4, así como la posibilidad de compilar todo el sistema desde los códigos fuente en entornos Linux basados en arquitecturas armhf y riscv64.
Fuente: opennet.ru
