136 lines
3.8 KiB
Plaintext
136 lines
3.8 KiB
Plaintext
|
* 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
|