After a year of development, the release of GNU Mes 0.23 has taken place, providing the bootstrapping process for GCC and enabling a closed-loop rebuild cycle from source texts. The tool addresses the challenge of a verified initial compiler build in distributions, breaking the chain of cyclical rebuilding (since compiling a compiler requires executables from an already built compiler, and binary builds can potentially harbor hidden backdoors, which does not allow for a complete guarantee of integrity from the reference source texts).
GNU Mes offers a self-hosting interpreter for the Scheme language, written in C, and a basic compiler for C (MesCC), written in Scheme. Both components are mutually buildable. The Scheme interpreter allows building the C compiler MesCC, which can then compile a stripped-down version of TinyCC (tcc), whose capabilities are sufficient for building GCC.
The Scheme language interpreter is quite compact, consisting of about 5000 lines of code in the simplest subset of the C language, and can be transformed into an executable file using the universal translator M2-Planet or a simple C compiler built with the self-hosting assembler hex0, which requires no external dependencies. Additionally, the interpreter includes a full garbage collector and provides a library of loadable modules.
The new release introduces support for the ARM architecture (armhf-linux and aarch-linux). It adds the option to use Mes alongside a reduced set of bootstrap files from the GNU Guix project (GNU Guix Reduced Binary Seed). Support for building Mes and the Mes C library with GCC 10.x has been implemented. The MesCC compiler includes its own library libmescc.a (-lmescc), and when built with GCC, it now specifies "-lgcc". Support for building MesCC with Guile 3.0.x has been ensured.
Source: opennet.ru
