[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Building Bash with Geesh
Re: Building Bash with Geesh
Fri, 07 Dec 2018 23:21:24 +0100
Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)
Hello Timothy & Jan!
You folks are amazing!
Jan Nieuwenhuizen <address@hidden> 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
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...
>> 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
> 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
> 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
Anyway, kudos on these achievements! I guess we at least need Geesh and
Gash packages now! :-)