Andy Wingo <wi...@pobox.com> writes:
> We are delighted to announce GNU Guile release 3.0.0, the first in the > new 3.0 stable release series. … > The Guile web page is located at http://gnu.org/software/guile/ That’s awesome! Thank you for your work! > Changes in 3.0.0 (since the stable 2.2 series): … > ** Just-in-time code generation > > Guile programs now run up to 4 times faster, relative to Guile 2.2, > thanks to just-in-time (JIT) native code generation. Notably, this > brings the performance of "eval" as written in Scheme back to the level > of "eval" written in C, as in the days of Guile 1.8. This is awesome! I hope it finally alleviates the problems faced by Lilypond! > ** Interleaved internal definitions and expressions allowed I love that! It removes one of the early stumbling points I had with Guile which pushed me to avoid inner defines. I only realized later how much more readable code gets with inner defines. Can we get this into the Scheme standard, too? > ** `guard' no longer unwinds the stack for clause tests > > SRFI-34, and then R6RS and R7RS, defines a `guard' form that is a > shorthand for `with-exception-handler'. The cond-like clauses for the > exception handling are specified to run with the continuation of the > `guard', while any re-propagation of the exception happens with the > continuation of the original `raise'. … > Guile now works around these issues by running the test portion of the > guard expressions within the original `raise' continuation, and only > unwinding once a test matches. This is an incompatible semantic change > but we think the situation is globally much better, and we expect that > very few people will be affected by the change. Is this semantic change a change from previous Guile or a deviation from the Scheme standard? Best wishes, Arne -- Unpolitisch sein heißt politisch sein ohne es zu merken