The release of GNU Mes 0.27 has been published, providing the bootstrapping process for GCC and allowing for a closed loop of recompilation from source code. The toolkit addresses the task of verified initial compiler builds in distributions, breaking the cycle of recursive recompilation (building a compiler requires executable files from an already built compiler, and binary compiler builds are potential sources of hidden backdoors, making it impossible to fully guarantee the integrity of builds from reference source code).
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 interpreter is very compact, consisting of about 5,000 lines of code in the simplest subset of C and can be transformed into an executable file using the universal translator M2-Planet or a basic C compiler built using the self-hosting assembler hex0, which does not require external dependencies. The interpreter includes a complete garbage collector and provides a library for loadable modules. The project is also developing the Mes C library, which is sufficient for building glibc 2.2.5, binutils 2.20.1, and gcc 2.95.3, necessary for deploying the Guix distribution for platforms i686-linux, x86_64-linux, armhf-linux, and aarch64-linux, using only source code (Full Source Bootstrap).
The new release restores support for running Mes in a GNU Hurd environment. New modules have been added: rnrs (bitwise arithmetic) and srfi (srfi-39). For compatibility with Guile, the srfi module is loaded by default. New functions added include pair-for-each and with-fluids*. The MesCC compiler has implemented modules for generating parsers and lexical analyzers for NYACC versions 0.99.0 through 1.09.4. The use of deprecated mes-style modules for NYACC and MesCC has been removed.
Source: opennet.ru
