4 ms·
It appears that this project is in competition with Mes[1], which is also running under the http://bootstrappable.org/ http://bootstrappable.org/ 'umbrella', an
by pflanze 4y ago
It appears that this project is in competition with Mes[1], which is also running under the http://bootstrappable.org/ http://bootstrappable.org/ 'umbrella', and which implements both a Scheme interpreter (in C) and a C compiler (in Scheme) it is designed to run.
The C compiler that Mes was written for, MesCC, appears to be using some 600 lines of code excluding libraries, which I haven't checked how large they are. It might be smaller than cc_x86.s[2] posted here (or it might not when including the libs), but if concerned about bootstrapping size, the size of the Scheme interpreter would have to be included as well and then the size is surely larger than cc_x86.s; also, I'm unclear about how Mes solves the mutual dependency issue of Scheme <-> C.
Mes is authored primarily by Jan (janneke) Nieuwenhuizen. Judging from a comment by Janneke on IRC[3] collaboration seems amicable, if I'm not mis-attributing this quote:
<janneke> some routes we try just are a dead end...
Not having any ties to either project I welcome corrections of any mistakes I may have made here.
[1] https://www.gnu.org/software/mes/ https://www.gnu.org/software/mes/
[2] https://github.com/oriansj/stage0/blob/master/stage2/cc_x86.s https://github.com/oriansj/stage0/blob/master/stage2/cc_x86....
[3] http://logs.guix.gnu.org/bootstrappable/2022-05-01.log http://logs.guix.gnu.org/bootstrappable/2022-05-01.log
- janneke 4y agoAh no, there is no competition, at least not yet ;) Stage0---of with cc_x86.c is a part---as a project started off from the bottom (hex0) and is working up. When stage0 just started, I created GNU Mes soon to be folowed by MesCC, which aimed to build a version of TinyCC and the remaining bootstrap for GNU Guix. The first versions of mescc had its own linker, which was later in a joint effortt replaced by M1 and hex2 from MesCC-Tools (also part of Stage0. My initial idea for Mes was to translate it by hand to assembly, so the M1 assembler would come in handy. As it turned out, cc_x86.c and its next step M2-Planet were developed as part of Stage0. Starting from an 357-byte hex0 provided by the bootstrap-seeds, Stage0-posix builds hex0, kaem, hex1, catm, hex2, M0, cc_x86, M1, M2, get_machine, (mescc-tools), and M2-Planet. M2-Planet in turn builds Mes, which builds a bootstrappable TinyCC, etc.
- pflanze 4y agoThanks for your answer! I'll try out some bootstrapping paths and will make an effort of getting a full understanding of the whole picture, and am hoping to write something up about what I find out. (BTW I did ask on IRC, some further details might be found from the answers I got here: http://logs.guix.gnu.org/bootstrappable/2022-05-03.log#144953 http://logs.guix.gnu.org/bootstrappable/2022-05-03.log#14495...)