Hello!

Jan Nieuwenhuizen <jann...@gnu.org> skribis:

> 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.

Very nice!

> 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

[...]

> 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)

Ouch.  :-)

At some point people were wondering whether using tcc as a base was the
best course of action, after all, given that it needs to be heavily
patched and that MesCC is making good progress.  What’s your take on
this now?

Also, does M1 support all the architectures Guix currently supports?

> 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.

Definitely.  I think we can improve things incrementally, we don’t have
to go straight to the ultimate solution.  So if we can make small
changes to our bootstrap graph and already remove 10MB out of these
250MB, let’s just do that.

> 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.

Exciting.

Thanks for the status update and for all the great work!

Ludo’.

Reply via email to