* General Information
** Do you agree to follow GNU policies?

Yes, of course.

** Package name and version:

Mes 0.16

** Author Full Name <Email>:

Jan (janneke) Nieuwenhuizen <janneke@gnu.org>

** URL to package home page (if any): https://gitlab.com/janneke/mes

I'm happy to move to savannah when Mes becomes a GNU package.

** URL to source tarball:

https://gitlab.com/janneke/mes/-/archive/v0.16/mes-0.16.tar.gz

or:  git clone https://gitlab.com/janneke/mes

** Brief description of the package:

Mes aims to help create full source bootstrapping for GuixSD as part of
the bootstrappable builds effort (See https://bootstrappable.org/).

It currently consists of a mutual self-hosting Scheme interpreter
prototype written in C and a Nyacc-based C compiler written in Scheme.
This C prototype is being simplified to be transpiled by M2-Planet.

Mes+MesCC can compile an only lighty 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-4.1.0.

* Code
** Dependencies:

Mes can be built as a regular package, or as part of the full source
(currently: reduced binary seed) bootstrap process.

*** Regular build

  - https://github.com/mescc-tools, 0.5 is known to work.
  - https://savannah.gnu.org/projects/nyacc, 0.80.42 is known to work.
  - GNU Gcc, 4.9.3 is known to work.
  - GNU Guile, version 2.0.12 or is know to work.
  - SH, /bin/sh, GNU Bash 4.3 is known to work.
  - GNU coreutils
  - sed, GNU sed 4.2 is known to work.
  - git, 2.10 is known to work.
  - Perl, 5.22 is known to work.

*** Bootstrap build

  - https://github.com/oriansj/mescc-tools, 0.5 is known to work.
  - https://savannah.gnu.org/projects/nyacc, 0.80.42 is known to work.
  - https://gitlab.com/janneke/mes-seed, 0.16 is known to work.

** Configuration, building, installation:

*** Guix build, install

    guix build mes, guix package --install mes

*** Regular build

    ./configure; make; make check; make install

*** Bootstrap build

    <set env vars>
    sh build.sh
    sh check.sh
    sh install.sh

** Documentation:

Mes does not yet have any documentation other than AUTHORS, HACKING,
INSTALL, NEWS, README.  When it does, it will be in Texinfo: I live in
Emacs.  I have initiated the GNU LilyPond documentation and website,
which are written in texinfo.

** Internationalization:

Mes does not have Internationalization.  As it's an early bootstrap
package, it's unsure if it will ever get that.  I do have experience
with adding Internationalization to GNU LilyPond.

** Accessibility:

None.

** Security:

Mes will be used as a critical link in our GNU bootstrapping chain.
It is essential for Mes to get a proper review before it is put in
place.

* Licensing:

GNU GPL 3, or later.

* Similar free software projects:

There are similarities with GNU Guile and to a lesser extent also with
MIT/GNU Scheme and SCM; in fact Mes' scheme tries to be compatible with
Guile Scheme.  GNU Guile is about 30x faster than Mes.

The main difference is that mes.c is ~5,000LOC of very simple C and can
can be bootstrapped almost entirely from source, without any binary
seed.  Currently, it needs a ~1MB ASSCI seed.

Guile is ~100,000LOC of full-blown C, not counting its dependencies
such as libgc.

Another difference with regular Scheme implementations, is that Mes does
not strive for RXRS compliance, instead it strives for minimalism and
Guile compatibility.

If in doubt, please contact the GuixSD or Guile maintainers.

* Any other information, comments, or questions:

I am an original author of GNU LilyPond and current GuixSD developer.  I
have regular discussions about Mes and GuixSD with GuixSD and Guile
maintainers.

Mes currently targets only x86-linux, I would like some help to look at
other architectures and esp. at targeting the Hurd.

Greetings,
janneke
