f68b169feb
* ChangeLog: Add copyright header. * build-aux/GNUmakefile.in (generate-ChangeLog): Append it as copyright footer. * BOOTSTRAP: Add copyright header. * scaffold/boot/2f-define-second-lambda.scm: Likewise. * scaffold/boot/39-global-define-override.scm: Likewise. * scaffold/boot/3a-global-define-lambda-override.scm: Likewise. * scaffold/boot/4f-string-split.scm: Likewise. * scaffold/boot/numbers.scm: Likewise. * scaffold/gc.scm: Likewise. * scaffold/b-0.mes: Remove. * doc/GNU-EVAL-APPLY: Remove. * doc/announce/README: New file. * doc/announce/ANNOUNCE: Move from doc/ANNOUNCE. * doc/announce/ANNOUNCE-0.10: Likewise. * doc/announce/ANNOUNCE-0.11: Likewise. * doc/announce/ANNOUNCE-0.12: Likewise. * doc/announce/ANNOUNCE-0.13: Likewise. * doc/announce/ANNOUNCE-0.14: Likewise. * doc/announce/ANNOUNCE-0.15: Likewise. * doc/announce/ANNOUNCE-0.16: Likewise. * doc/announce/ANNOUNCE-0.3: Likewise. * doc/announce/ANNOUNCE-0.4: Likewise. * doc/announce/ANNOUNCE-0.5: Likewise. * doc/announce/ANNOUNCE-0.6: Likewise. * doc/announce/ANNOUNCE-0.7: Likewise. * doc/announce/ANNOUNCE-0.8: Likewise. * doc/announce/ANNOUNCE-0.9: Likewise. * doc/announce/ANNOUNCE-2: Likewise. * doc/announce/UPDATE-0.13: Likewise. * doc/fosdem/README: New file. * doc/fosdem/fosdem.org: Add legalese. * doc/fosdem/fosdem.pdf: Regenerate. * doc/images/README: New file. * mes/module/mes/psyntax.pp.header: New file. * mes/module/mes/psyntax.pp: Add it to generated file.
88 lines
3.5 KiB
Plaintext
88 lines
3.5 KiB
Plaintext
Subject: wip-bootstrap updated
|
|
|
|
I've updated the wip-bootstrap branch[0] for Mes[1] 0.13. It has new
|
|
mes-boot and tcc-boot packages. mes-boot is a bootstrap version of
|
|
Mes; it only depends on mescc-tools and a previously compiled mes.M1
|
|
seed. Likewise, tcc-boot depends on a precompiled tcc-seed. Also,
|
|
tcc-boot uses a heavily patched version of the tcc sources.
|
|
|
|
Mes 0.13 is the first release that can bootstrap a fairly functional
|
|
tcc-boot. This bootstrapped tcc passes 67/68 C tests that were created
|
|
for MesCC. It can compile a version if itself where float, long long
|
|
and bitfield are patched out...but linking fails. This amazing
|
|
compiler can now be played with by doing something like
|
|
|
|
--8<---------------cut here---------------start------------->8---
|
|
git checkout wip-bootstrap
|
|
make
|
|
./pre-inst-env guix build tcc-boot # may take ~2h
|
|
./pre-inst-env guix environment --ad-hoc tcc-boot
|
|
mes-tcc --help #duck and run
|
|
--8<---------------cut here---------------end--------------->8---
|
|
|
|
The next big effort will be to make this mes-tcc fully functional and
|
|
integrate this with GuixSD. To give you a taste of that,
|
|
here's latest bug I'm currently looking at (pretty printed comments
|
|
are only added when Guile runs MesCC, the problem is in LEA)
|
|
|
|
--8<---------------cut here---------------start------------->8---
|
|
$ diff -u ../mes-seed/mes.M1 src/mes.M1
|
|
--- ../mes-seed/mes.M1 2018-05-01 18:49:37.312162270 +0200
|
|
+++ src/mes.M1 2018-05-01 19:49:40.774770406 +0200
|
|
@@ -35805,12 +33091,11 @@
|
|
call32 %strcpy
|
|
add____$i8,%esp !0x8
|
|
test___%eax,%eax
|
|
- # strcpy(buf + strlen(buf), "/mes/");
|
|
- push___$i32 &_string_reader_read_list_266
|
|
+ push___$i32 &_string_reader_read_list_265
|
|
mov____%ebp,%eax
|
|
- add____$i32,%eax %0x-200
|
|
+ add____$i32,%eax %0x-800
|
|
push___%eax
|
|
- lea____0x32(%ebp),%eax %0x-200
|
|
+ lea____0x32(%ebp),%eax %0x-800
|
|
push___%eax
|
|
call32 %strlen
|
|
add____$i8,%esp !0x4
|
|
--8<---------------cut here---------------end--------------->8---
|
|
|
|
We also need to remove some shortcuts that we took, most notably:
|
|
mes-seed[3]. This seed consists of 1MB of M1 code. mes.M1 is
|
|
produced by compiling mes.c using MesCC, the C compiler written in
|
|
(Guile) Scheme that comes with Mes. Although that's really terrible,
|
|
it's probably a big step forward: currently GuixSD uses ~250MB of
|
|
binary seed: the bootstrap binaries.
|
|
|
|
The plan is to replace the mes.M1 seed with mes.M2 and compile this
|
|
new mes.M2 seed using the brand new M2-Planet[2]. M2 is basically
|
|
simple C with structs, without preprocessor. This will reduce the
|
|
seed size by a factor of 10 while making it much more readable.
|
|
|
|
An excerpt of the TODO I keep in Mes' BOOTSTRAP document
|
|
|
|
--8<---------------cut here---------------start------------->8---
|
|
* TODO
|
|
** have tcc-boot's mes-tcc compile a fully functional tcc
|
|
*** mescc: fix unknown bug.
|
|
*** mescc: support function-static.
|
|
*** mescc: support/grok global static.
|
|
*** mescc: support unsigned comparison, arithmetic.
|
|
*** mescc: support long long (do we need long long to get long long in tcc)?
|
|
*** mescc: support bitfield (do we need bitfield to get bitfield in tcc)?
|
|
*** mescc: support float (do we need float to get float in tcc)?
|
|
** have bootstrapped tcc compile gcc-4.7
|
|
** remove or upstream patches from tcc-boot
|
|
** prepare src/mes.c for M2-Planet[2] transpiler
|
|
** integrate with GuixSD
|
|
** x86_64, arm, the Hurd
|
|
--8<---------------cut here---------------end--------------->8---
|
|
|
|
Greetings,
|
|
janneke
|
|
|
|
[0] http://git.savannah.gnu.org/cgit/guix.git/log/?h=wip-bootstrap
|
|
[1] https://gitlab.com/janneke/mes
|
|
[2] https://github.com/oriansj/m2-planet
|
|
[3] https://gitlab.com/janneke/mes-seed
|