From: Philip McGrath <philip@philipmcgrath.com>
To: zimoun <zimon.toutoune@gmail.com>, Sage Gerard <sage@sagegerard.com>
Cc: Guix Devel <guix-devel@gnu.org>
Subject: Re: How did you handle making a GNU/Linux distribution?
Date: Mon, 23 Aug 2021 13:30:18 -0400 [thread overview]
Message-ID: <e0fa34f4-6e41-7ceb-3a45-5605ecc8d632@philipmcgrath.com> (raw)
In-Reply-To: <CAJ3okZ0EyHhY9wLv9TceM=U-oxk-HjL8G=DczD5Bt3eHUCrscQ@mail.gmail.com>
Hi Simon,
On 8/23/21 11:38 AM, zimoun wrote:
> The bootstrap path of Racket in Guix is not clear to me. I miss if a
> Racket interpreter or compiler in its binary format is used (as
> Haskell for instance) or if all is compiled from source using tools
> already bootstrapped. Anyway, I miss what you would like bootstrap?
> If you mean a trusted seed in order to start a package collection, you
> could use the current Guix binaires---as a starting point.
I wrote a long comment at the top of gnu/packages/racket.scm that
explains the current state of affairs. (For anyone unfamiliar with the
Guix source tree:
<https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/racket.scm>)
In brief, Racket is bootstrapped from source using only a C
compiler---including bootstrapping Racket's fork of Chez Scheme without
an existing Chez Scheme compiler---with one exception: the "expander"
subsystem (which implements the reader, module system, and macro
expander) is implemented in Racket, and the older C implementation was
completely replaced as of Racket 7.0. (One of the motivations was to fix
many problems with the old implementation.) For bootstrapping, an
intermediate representation as a "schemified" linklet is checked into
the Racket source repository.
This impact is mitigated because, by design, the intermediate
representation is "human-readable and -editable Scheme code".
Anecdotally, when I read diffs of changes to the Racket repository, I
sometimes read tens of lines of code before I realize that I'm looking
at the generated version of the file, not the source. So the expander is
not bootstrappable in the most rigorous sense, but it is readily auditable.
If someone wanted to tie the knot, the task would be to use an existing
bootstappable language to write a minimal expander that can expand the
canonical Racket implementation: if your output is identical to the
checked-in generated files, you've succeeded. (Using Guile could avoid
the heavy maintenance burden of the old C expander implementation, and
indeed you could write just enough of an adapter to load the Racket
source files into Guile, which is the technique Racket uses to bootstrap
the Chez Scheme compiler.) I expect Racket would welcome a contribution
along those lines; it just hasn't been a priority for anyone yet.
-Philip
next prev parent reply other threads:[~2021-08-23 17:30 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-21 16:43 How did you handle making a GNU/Linux distribution? Sage Gerard
2021-08-21 21:18 ` Leo Famulari
2021-08-22 21:53 ` Sage Gerard
2021-08-22 22:54 ` Philip McGrath
2021-09-13 3:09 ` Christine Lemmer-Webber
2021-10-02 3:32 ` Philip McGrath
2021-10-02 12:59 ` Christine Lemmer-Webber
2021-08-23 10:43 ` Maxime Devos
2021-08-23 12:48 ` Sage Gerard
2021-08-23 15:38 ` zimoun
2021-08-23 17:30 ` Philip McGrath [this message]
2021-08-24 10:24 ` zimoun
2021-08-23 18:24 ` Sage Gerard
2021-08-23 19:23 ` Ryan Prior
2021-08-23 20:00 ` Sage Gerard
2021-08-24 16:42 ` Maxime Devos
2021-08-24 17:17 ` Sage Gerard
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
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e0fa34f4-6e41-7ceb-3a45-5605ecc8d632@philipmcgrath.com \
--to=philip@philipmcgrath.com \
--cc=guix-devel@gnu.org \
--cc=sage@sagegerard.com \
--cc=zimon.toutoune@gmail.com \
/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 public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).