Hi Guix, Over the last year, I built Geesh <https://gitlab.com/samplet/geesh>, which is a simple Shell interpreter written in Guile Scheme. As of the other day, it is capable enough to build Bash!
(That’s the main point of this message. Everything that follows is just details.) Geesh is very simple, and is missing a lot of features. It does not even support all of POSIX. If you are looking for a new shell, Geesh is not for you! (It doesn’t even prompt for input!) However, thanks to the robustness of Autotools, Geesh is capable of being the shell used to run Bash’s “configure” script and do everything required (of a shell) to build Bash. (As an aside, “configure” scripts are amazing! Geesh does not support “$LINENO”, but the script works around this by running itself through “sed” and replacing every “$LINENO” with the current line number. It then restarts itself as this new script that doesn’t use “$LINENO”.) Actually, I’m only 99% sure of this, because I have not worked on actual bootstrapping yet (see the caveats below). Checkout “tests/bash-without-bash.scm” for how I’m currently testing this claim. Now, there are some caveats with respect to actual bootstrapping: • It does not have a non-Autotools build script; • It requires Guile 2.2, while (I assume) the current bootstrap Guile is version 2.0; • It still requires Core Utilities, though many of the utilities are available as Guile code in Gash. Of these, I think fixing the first two will be trivial, while fixing the third will require a bit of work (though hopefully not too much). Once these things are done, we will be pretty close to being able to retire the “coreutils&co” bootstrap binary. We certainly could make it a lot smaller. (AFAIK, we are still missing a few things, but Jan knows better than I do.) You may be thinking at this point, “what about Gash?” (For those who don’t know, Gash is also a Shell interpreter written in Guile <https://gitlab.com/janneke/gash>.) The Gash folks and I have been thinking for a while about the best way to share work and combine efforts. Finally, and I’m just putting this out there ;), if you’re new to Guile and want a simple project learn with, Geesh might be right for you! It was a Guile-learning project for me, and it served its purpose admirably. -- Tim