GNU Mes 0.20 released

September 09, 2019

We are pleased to announce the release of GNU Mes 0.20, representing 147 commits over 38 weeks.

Mes has now brought the Reduced Binary Seed bootstrap to Guix (bootstrap a GNU/Linux system without binary GNU toolchain or equivalent). It should land in Guix master any day now: a big thank you to everyone who helped, notably Ludovic and Mark.

This release is a step towards the upcoming Scheme-only bootstrap and bringing Mes into NixOS and Debian. This effort is now sponsored by NLnet[12].

Next targets:

Packages are available in Guix master.


GNU Mes brings a Reduced Binary Seed bootstrap to GNU Guix. This bootstrap has halved the size of opaque, uninspectable binaries that were needed to bootstrap Guix. The final goal is to help create a full source bootstrap as part of the bootstrappable builds effort for any interested UNIX-like operating system.

Mes 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:

df839a83e4a2ad6c2a4accc5bf17b1a7 mes-0.20.tar.gz 38d4cb3fa28fa1f5fc57fea9e046d4d8052bbb8c mes-0.20.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.20.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.

Get informed, get involved

Join #bootstrappable on

Changes in 0.20 since 0.19

Greetings, janneke and Danny.

  1. GNU Mes
  2. Reduced Binary Seed bootstrap
  3. Guix
  4. bootstrappable builds
  5. Mes-M2
  6. M2-Planet
  7. LALR
  8. portable syntax-case
  9. Nyacc
  10. bootstrappable TinyCC
  11. LISP-1.5
  12. stage0
  13. NLnet