Hello Timothy & Jan! You folks are amazing!
Jan Nieuwenhuizen <jann...@gnu.org> skribis: >> 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 is just amazing, congrats! Indeed, that’s a major achievement! >> • It requires Guile 2.2, while (I assume) the current bootstrap >> Guile is version 2.0; > > That should be OK too, I'll leave Ludo' to comment on this, but Gash > also needs Guile 2.2; on my Guix wip-bootstrap branch I already upgraded > Guile. Which parts of 2.2 that 2.0 lacks does it need? PEG? Overall I’m in favor of changing the bootstrap seeds as rarely as possible. Also, if our horizon is a full Scheme bootstrap has Jan proposed (and I think that’s a great plan!), then perhaps we’ll have to arrange to not rely on fancy Guile features in build-side code meant to run early on during bootstrap. So far it was easy to keep (guix build …) valid for both 2.2 and 2.0, but these are simple modules; I don’t know whether that’s reasonably feasible for more complex pieces of software like Geesh and Gash. All that said, the benefit of removing Bash from the seeds may well outweigh the “cost” of upgrading to Guile 2.2. >> 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.) > > Just yesterday, I managed to build a minimal bash and make using Gash > and a very simple boot script, so without coreutils&co. A Scheme-only > bootstrap is coming closer... Woohoo! >> 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. > > Yeah...Gash has an option to use the Geesh LALR parser, however it's not > very well integrated (in fact I fear that the integration may have > bitrotted). > > I think we should either cherry-pick eachother's goodies for a while, or > somehow merge into one project that has two parsers (LALR and PEG), or > spawn a new Guile library that provides the backend (the core-utils and > co). It's a real interesting puzzle. WDYT? It’d be great if both projects could converge; there’ll still be plenty of challenges to satisfy your playfulness anyway. :-) (Like, say, a shell→tree-il front-end, hint hint ;-)). That said I can imagine it’s not that easy and maybe also less fun but it would help the longer-term goal of building a solid foundation for bootstrapped distros. Anyway, kudos on these achievements! I guess we at least need Geesh and Gash packages now! :-) Ludo’.