[rb-general] Mes 0.14 released
janneke at gnu.org
Thu May 24 08:00:17 CEST 2018
I am pleased to announce the release of Mes 0.14, representing 98
commits over 4 weeks. Mes+MesCC now compiles a self-hosting TinyCC
that has only been slightly patched.
This means that we can now build a tcc that depends only on a 1MB
ASCII M1 seed. GuixSD currently uses a ~250MB binary seed to build
Next targets are: build gcc using this almost full-source bootstrapped
tcc, and reduce the 1MB ASCII M1 seed to ~100KB of M2 source, which is
a restricted subset of C.
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 project.
It currently consists of a mutual self-hosting Scheme interpreter
prototype in C and a Nyacc-based C compiler 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 (repl.mes) and simple C-compiler
Mes+MesCC can compile an only slightly patched TinyCC that is
self-hosting. A GNU Ccc-compiled tcc is known to compile GCC.
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 ~300 byte self-hosting
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
* Changes in 0.14 since 0.13
*** Bootstrapped Mes+MesCC now compiles a tcc that is self-hosting and only slightly patched.
*** The reader now supports binary numbers (previously: read as decimal).
*** String port support has been moved to C.
*** The build has been simplified, the Make-in-Scheme experiment has been removed.
*** 2 new functions
*** Mes now supports define-immutable-record-type and single set-field from srfi-9 gnu.
*** 12 new functions
basename, chmod, const, delete-duplicates, logxor, string-contains,
string-map, string-replace, string-trim, string-trim-both,
*** MesCC now supports standalone usage of nestedly defined enums, structs and unions.
*** MesCC now supports comparison of unsigned and promotion of signed/unsigned -> unsigned.
*** MesCC now supports sign extension for char, short.
*** MesCC now has stubbing for floats; compiling works, data is fu.
*** MesCC now has full suport for switch case, e.g. with default as first clause.
*** MesCC now supports destruction of casted expressions: ((struct foo*)p)->bar.
*** MesCC now has full support for pre/post, e.g.: (foo--)->bar and permutations.
*** MesCC now supports sizeof any expression or type.
*** MesCC now supports initialization of anonymous unions.
*** MesCC now supports bit fields.
*** MesCC now supports valued functions in expressions: destruction and dereferencing.
*** MesCC now supports function-static variables.
*** MesCC now supports initializer lists in structs and unions.
*** MesCC now has full support for heterogeneous variable declarations, e.g.: char p, *x = "foo", buf;
**** 4 new functions
__lshrdi3, __ashldi3, __ashrdi3, strncpy.
**** 9 new mlibc stubs
__fixdfdi, __fixsfdi, __fixunsxfdi, __fixxfdi, __floatundixf, ldexp,
strtod, strtof, strtold.
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