bootstrappable/site/projects/mes.html

3.2 KiB

<head></head>
A boot pulled up by its straps.

Reduced binary seed bootstrap (current status)

Mes aims to create an entirely source-based bootstrapping path. The target is to have GuixSD bootstrap from a minimal, easily inspectable binary—that should be readable as source—into something close to R6RS Scheme.

As bootstrapping is presumably easiest and probably most fun with Scheme, the next step for Mes is mescc: a C compiler/linker to bootstrap into GNU GCC and GNU Guile, via Tiny-CC.

It currently has an interpreter written in C with garbage collector, a library of loadable Scheme modules and test suite just barely enough to support a simple REPL and a C compiler that can build TinyCC.

The following the graph shows how in GuixSD GCC is removed from the bootstrap binary seed:

This is the dependency graph of the bootstrap as implemented in GNU Guix:

dependency graph of the bootstrap in GNU Guix

--The nodes having elliptical shape are the static bootstrap binaries bundled into --a single tarball, we show them to make implicit dependencies clear. -- --The nodes having red text are development only dependecies, they can be safely --dropped once the bootstrap is stabilized.

It is also possible to create a similar bootstrap path for other distributions, as showcased by Nix on the Reproducible Build Summit.

Build GCC 4.7 with a smaller compiler

GCC is a complex beast and a binary of it is often used to bootstrap the whole system. Version 4.7 is the last version of GCC to not require a C++ compiler. This project aims to build GCC version 4.7 with a simple C compiler such as TinyCC.

← back to list of projects

Made with by humans and powered by GNU Guile. Source code under the GNU AGPL.