all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Ludovic Courtès" <ludo@gnu.org>
To: Jan Nieuwenhuizen <janneke@gnu.org>
Cc: guix-devel@gnu.org
Subject: Re: Building Bash with Geesh
Date: Fri, 07 Dec 2018 23:21:24 +0100	[thread overview]
Message-ID: <87sgz9asgr.fsf@gnu.org> (raw)
In-Reply-To: <87o99xp8mh.fsf@gnu.org> (Jan Nieuwenhuizen's message of "Fri, 07 Dec 2018 18:08:38 +0100")

Hello Timothy & Jan!

You folks are amazing!

Jan Nieuwenhuizen <janneke@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’.

  reply	other threads:[~2018-12-07 22:21 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-07 15:44 Building Bash with Geesh Timothy Sample
2018-12-07 17:08 ` Jan Nieuwenhuizen
2018-12-07 22:21   ` Ludovic Courtès [this message]
2018-12-08  0:33     ` Timothy Sample
2018-12-08  6:47     ` Jan Nieuwenhuizen
2018-12-08  1:01   ` Timothy Sample
2018-12-09  4:17 ` Chris Marusich
2018-12-09  6:58 ` Jan Nieuwenhuizen
2018-12-09 15:20   ` Timothy Sample

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87sgz9asgr.fsf@gnu.org \
    --to=ludo@gnu.org \
    --cc=guix-devel@gnu.org \
    --cc=janneke@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.