Skip to content

GNU Mes - Official repo link below. Please read this organisation's pinned readme for info.

License

Notifications You must be signed in to change notification settings

gnu-mirror-unofficial/mes

Repository files navigation

About GNU Mes

GNU Mes is a Scheme interpreter and C compiler for bootstrapping the GNU System. Since version 0.22 it has again helped to halve the size of opaque, uninspectable binary seeds that are currently being used in the Reduced Binary Seed bootstrap of GNU Guix. The final goal is to help create a full source bootstrap as part of the bootstrappable builds effort for UNIX-like operating systems.

The Scheme interpreter is written in ~5,000 LOC of simple C, and the C compiler written in Scheme and these are mutual self-hosting. Mes can now be bootstrapped from M2-Planet and Mescc-Tools.

Mes 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 enough to support a REPL and a C99 compiler: mescc.

Mes + MesCC + Mes C Library can build a bootstrappable 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, x86_64-linux, armhf-linux and aarch64-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.

We are very grateful to NLNet for sponsoring the Reduced Binary Seed bootstrap, the ARM port, and the Full Source Bootstrap.

GNU Mes is free software, it is distributed under the terms of the GNU General Public Licence version 3 or later. See the file COPYING.

Get it

git clone git://git.savannah.gnu.org/mes.git

Build it (see INSTALL for full instructions)

./configure
make all
make check

REPL it

./pre-inst-env mes

MesCC compiler

./pre-inst-env mescc -c scaffold/main.c

Bugs

Please send Mes bug reports to bug-mes@gnu.org.

Links

[0] https://www.gnu.org/software/mes [1] https://guix.gnu.org/blog/2020/guix-further-reduces-bootstrap-seed-to-25 [2] https://www.gnu.org/software/guix [3] https://bootstrappable.org [4] https://github.com/oriansj/m2-planet [5] https://savannah.nongnu.org/projects/mescc-tools [6] https://github.com/schemeway/lalr-scm [7] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html [8] https://www.nongnu.org/nyacc [9] https://gitlab.com/janneke/tinycc [10] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf [11] https://savannah.nongnu.org/projects/stage0 [12] https://nlnet.nl/project/GNUMes [13] https://nlnet.nl/project/GNUMes-arm [14] https://nlnet.nl/project/GNUMes-ARM_RISC-V

Legalese

Copyright © 2016,2017,2018,2019,2020,2021,2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>

Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.

About

GNU Mes - Official repo link below. Please read this organisation's pinned readme for info.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published