Andy Wingo <address@hidden> 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