[rb-general] Mes 0.16 released
janneke at gnu.org
Tue Jun 26 19:58:14 CEST 2018
I am pleased to announce the release of Mes 0.16, representing 27
commits over 2 weeks.
A most annoying ELF header bug was fixed that suddenly had all Mes
binaries segfault before entering `_start' on Linux 4.17 and later.
We now have binutils-2.20.1 and gcc-4.1.0, both compiled with
gcc-2.95.3 and glibc-2.2.5.
This reduced-binary-seed bootstrap still depends on these bootstrap
binaries: BOOTSTRAP-GUILE, flex, bash, bzip2, coreutils, diffutils,
gawk, grep, gzip, make, sed, tar, on the small binary seeds:
tinycc-seed, mescc-seed and on the mes.M1 ASCII seed.
- build a Gcc 4.7 and Glibc 2.23
- upstream the x86 Mes bootstrap to GuixSD
- reduce the 1MB ASCII M1 seed to ~5000 LOC/~100KB of M2 source
- revive Gash: a posix shell for Guile to reduce the bootstrap binary
- and/or otherwise reduce the bootstrap binary dependencies
Packages are available from Guix's wip-bootstrap branch.
Mes aims to help create full source bootstrapping for GuixSD as
part of the bootstrappable builds effort.
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.
The Scheme interpreter prototype (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,
Guile's PEG --and test suite just barely enough to support a simple
REPL and simple C-compiler: MesCC.
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,
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 https://gitlab.com/janneke/mes
Mes runs from the source tree and can also be built, packaged and
installed in Guix[SD] by the usual
guix package -f guix.scm
* Get informed, get involved
Join #bootstrappable on irc.freenode.net.
* Changes in 0.16 since 0.15
*** Support building with tcc, including Mes Lib C in-line assembly.
*** core:execl now supports 1000 arguments.
*** Mes Lib C now bootstraps glibc-2.2.5, binutils-2.20.1, gcc-4.1.0.
*** MesCC binaries now run on Linux 4.17 too, i.e. survive Linus' new `sane mmap limits.'
*** MesCC now runs with mescc-tools 0.5 (no = in long options).
**** 3 new C test
88-strrchrc, 97-fopen.c, 98-fopen.c.
** Noteworthy bug fixes
*** strrchr now stops when it reaches start of string.
*** fopen now return 0 upon failure. Supports binutils' hack: fd=-2 means `cached'.
*** vfprintf, vsprintf now support precision and width on integers strings better.
*** fread now produces ungetc'd chars too.
*** memcmp now supports comparing 0 bytes, supporting binutils.
*** The unused ELF header data section, identical to the text section, has been removed.
Jan Nieuwenhuizen <janneke at gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com
More information about the rb-general