Después de un año de desarrollo, se lanzó la herramienta GNU Mes 0.23, que proporciona el proceso de arranque (bootstrap) para GCC y permite lograr un ciclo cerrado de recompilación a partir de textos fuente. La herramienta aborda la tarea de compilación inicial verificada del compilador en distribuciones, rompiendo la cadena de recompilación cíclica (ya que para compilar un compilador se requieren archivos ejecutables de un compilador ya compilado, y las compilaciones binarias del compilador son una posible fuente de backdoors ocultos, lo que impide garantizar por completo 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 bastante compacto, ocupa alrededor de 5000 líneas de código en el subconjunto más simple del lenguaje C y puede convertirse en un archivo ejecutable utilizando el traductor universal M2-Planet o un compilador C simple, construido con el ensamblador autoconstruible hex0, que no requiere dependencias externas. Mientras tanto, el intérprete incluye un recolector de basura completo y proporciona una biblioteca de módulos cargables.
La nueva versión implementa soporte para la arquitectura ARM (armhf-linux y aarch-linux). Se ha añadido la posibilidad de usar Mes junto con un conjunto reducido de archivos bootstrap del proyecto GNU Guix (Semilla Binaria Reducida de GNU Guix). Se ha implementado soporte para la compilación de Mes y la biblioteca Mes C utilizando GCC 10.x. En el compilador MesCC, se incluye su propia biblioteca libmescc.a (-lmescc), y al compilar con GCC ahora se indica «-lgcc». Se ha garantizado el soporte para la compilación de MesCC con Guile 3.0.x.
Fuente: opennet.ru
