guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Can Guile be bootstrapped from source without psyntax-pp.scm?


From: Michael Schierl
Subject: Re: Can Guile be bootstrapped from source without psyntax-pp.scm?
Date: Sat, 13 Mar 2021 23:42:05 +0100
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.23) Gecko/20090812 Thunderbird/2.0.0.23 Mnenhy/0.7.5.0


Hello,


Jan Nieuwenhuizen wrote to guile-user@gnu.org[1] on 07 Jul 2017:
Mark H Weaver writes:

Does this mean Guile is not bootstrappable from source only?

That's correct.  psyntax-pp.scm is not source code, and it is needed to
bootstrap Guile.

I'm facing the same problem with Mes.  I have an implemenation of
syntax-rules that is just about 200 lines of define-macro source code,
but not syntax case.

Having said this, I agree that it would be better if psyntax.scm were
written in such a way that it could be bootstrapped without the use of
itself.  Maybe some day we'll rewrite it to make it so.

That could be essential to our full source bootstrapping efforts so I'm
very much interested!


For the record, I have written a psyntax implementation that can be used
by Guile (3.0.2) and does not require an expanded version of itself. It
is not ideal (not fully hygienic and does not support with-ellipsis),
but it works well enough to bootstrap a slightly patched version of
psyntax.scm, which then can be used to bootstrap "the real thing" and
then regenerate psyntax-pp.scm (resulting in a bit-for-bit identical
version if you run the bootstrap on 64-bit Linux).

The project is at
<https://github.com/schierlm/guile-psyntax-bootstrapping/>.

It may still contain some unnecessary code, and the patch for the
patched vesion is definitely not minimal, but for now I'm glad that it
works.

I may improve it later. Contributions are welcome as well.


Regards,


Michael


[1]: https://mail.gnu.org/archive/html/guile-user/2017-07/msg00011.html



reply via email to

[Prev in Thread] Current Thread [Next in Thread]