release of the toolkit , which facilitates the bootstrapping process for GCC and allows achieving a closed loop of rebuilding from source texts.
The toolkit addresses the task of verified initial compiler builds in distributions, breaking the cycle of circular rebuilding (to build a compiler, executable files from an already built compiler are required, and binary compiler builds can be a potential source of hidden backdoors, which does not allow fully guaranteeing the integrity of builds from reference source texts).
In GNU Mes a self-hosting interpreter for the Scheme language, written in C, and a simple compiler for C (MesCC), written in Scheme. Both components are mutually buildable. The Scheme interpreter allows building the C compiler MesCC, which in turn enables building a stripped version of the compiler (tcc), whose capabilities are already sufficient for building GCC.
The Scheme language interpreter is quite compact, occupying about 5000 lines of code in the simplest subset of C and can be transformed into an executable file using a universal translator or a simple C compiler built using a self-building assembler , which does not require external dependencies. Meanwhile, the interpreter includes a full garbage collector and provides a library of loadable modules.
The new release provides support for reproducible builds using bundles mes+mescc or guile+mescc in GNU Guix, Debian GNU/Linux, and NixOS distributions. The ability to run the Scheme interpreter Mes in GNU Hurd has been added, but the C compiler mescc still does not work due to lack of support for necessary system calls (e.g., fork/exec). Initial support for creating executable files for FreeBSD has been added. Improved bootstrapping support for the Guix distribution using only Scheme language components (Gash shell (Guile as Shell) instead of bash and Gash Core Utils instead of coreutils, grep, sed, gzip, make, awk, and tar).
Upcoming releases are expected to include support for bootstrapping for NixOS, the inclusion of bootstrapping using only Scheme language components in the wip-bootstrap branch, support for the ARM architecture, the ability to compile Mes.c using M2-Planet, full support for Guile modules, and ensuring mescc works with the Hurd kernel.
Source: opennet.ru
