GNU Mes 0.19 released

December 16, 2018

We are pleased to announce the release of GNU Mes 0.19, representing 100 commits over 10 weeks.

Mes has now brought the Reduced Binary Seed bootstrap to Guix (bootstrap a GNU/Linux system without binary GNU toolchain or equivalent) and work is ongoing to audit and verify this bootstrap path in NixOS.

This release introduces strings as byte-array, hash-tables and native structs. While that does increase the footprint somewhat, it fixes our performance issue; tinycc is now compiled in ~8min (WAS: ~1h30).

Next targets:

Packages are available from Guix's core-updates branch.


GNU Mes brings a Reduced Binary Seed bootstrap to Guix and potentially to any other interested GNU/Linux distribution, and aims to help create a full source bootstrap as part of the bootstrappable builds effort.

It consists of a mutual self-hosting Scheme interpreter written in ~5,000 LOC of simple C and a Nyacc-based C compiler written in Scheme. This mes.c is being simplified to be transpiled by M2-Planet.

The Scheme interpreter (mes.c) has a Garbage Collector, a library of loadable Scheme modules-- notably Dominique Boucher's LALR, Pre-R6RS portable syntax-case with R7RS ellipsis, Matt Wette's Nyacc --and test suite just barely enough to support a simple REPL and simple C-compiler: MesCC.

Mes+MesCC can compile an only lightly patched TinyCC that is self-hosting. Using this tcc and the Mes C library we now have a Reduced Binary Seed bootstrap for the gnutools triplet: glibc-2.2.5, binutils-2.20.1, gcc-2.95.3. This is enough to bootstrap Guix for i686-linux and x86_64-linux.

Mes is inspired by The Maxwell Equations of Software: LISP-1.5 -- John McCarthy page 13, GNU Guix's source/binary packaging transparency and Jeremiah Orians's stage0 ~500 byte self-hosting hex assembler.


git clone git://

Here are the compressed sources and a GPG detached signature[*]:

Use a mirror for higher download bandwidth:

Here are the MD5 and SHA1 checksums:

99e134df87adc5fc5fd2c04941929c23  mes-0.19.tar.gz
c9781b3b6a814acc985c2ac68caa111a56583bca  mes-0.19.tar.gz

[*] Use a .sig file to verify that the corresponding file (without the .sig suffix) is intact. First, be sure to download both the .sig file and the corresponding tarball. Then, run a command like this:

gpg --verify mes-0.19.tar.gz.sig

If that command fails because you don't have the required public key, then run this command to import it:

gpg --keyserver --recv-keys 1A858392E331EAFDB8C27FFBF3C1A0D9C1D65273

and rerun the 'gpg --verify' command.

Mes runs from the source tree and can also be built, packaged and installed in Guix[SD] from a git checkout by running

guix package -f .guix.scm

Get informed, get involved

Join #bootstrappable on

Changes in 0.19 since 0.18

Greetings, janneke

  1. GNU Mes
  2. GuixSD
  3. bootstrappable builds
  4. being simplified
  5. M2-Planet
  6. LALR
  7. portable syntax-case
  8. Nyacc
  9. bootstrappable TinyCC
  10. LISP-1.5
  11. stage0