Important interface changes
- There are several changes in the binary interface. ABI version is bumped to 0.98. Extension modules that require compilation needs to be recompiled.
- with-exception-handler used to be SRFI-18 semantics, now it is R7RS/SRFI-34 semantics. The difference is the dynamic environment where the handler
is called; in SRFI-18 semantics, it is called in the same dynamic environment where
raise is invoked, including the handler settings; that is, if you call
raise inside the handler, it invokes the same handler again,
unless you explicitly change the dynamic environment.
In R7RS, the dynamic environment where the handler is invoked is modified so that the ``outer'' exception handler is active; invoking
raise invokes the outer
SRFI-18 semantics is more primitive and R7RS semantics can be implemented
on top of it. However, R7RS semantics is almost always wanted,
and the user is prone to write the explicit dynamic environment handling and cause
infinite recursion into the handler.
The existing code that swaps handlers within exception handlers keep working.
The code that assumes
raise within an exception handler reenters the
same handler breaks, but we hope there's little code that needs the feature.
- If you're writing extensions and using
<real> in the type notation
define-cproc to receive C
double argument, change them to
<double>. We're consolidating stub-types and Gauche types, but
<real> as a stub-type and
<real> as a Gauche type
have different meanings.
- For those who have written Gauche extensions in C:
gauche/bignum.h becomes a private header and no longer accessible
from extentions. The
ScmBignum internals are never meant to be
accessed directly. You can use generic numeric interface in
- rfc.tls: If you're using this module directly,
note that the old interface of tls-connect
and tls-accept no longer
work with the new MbedTLS 3.0, because of their API change. You can
create a client TLS connection with the new
- Stub generator (
genstub) is undergoing major change. Although
it has never been documented, if you're using
in your stub file, now it is called
declare-stub-type. The old directive
still works for a while.
Enhancement of types
Now we can have types that can describe certain nature of the values,
separate from the class the value is instantiated from. Such types
include a union type (e.g. "integer or symbol"), an optional type,
or a procedure type that describes argument types and return types.
At this moment, this information isn't much useful. You can use
such types in assume-type or of-type?
but that's all. Eventually we'll enhance use of type information.
See Types and classes, for the details.
Better test reporting
- gauche.test: Test reporting can now be customized.
One of its applications is to show the unified diff of multiline texts
between expected and actual results
(see the blog entry).
- Line-editing is enabled by default on REPL, if the terminal is capable.
If you encounter an issue of line-editing, you can turn it off with
,edit off"" from REPL, giving -fno-read-edit"" to the command-line
argument, or set the
GAUCHE_NO_READ_EDIT environment variable.
- rfc.uuid: Make the random source a parameter
(uuid-random-source). Note that uuid-random-source-set! is deprecated, for it has global effect.
- parser.peg: New parser constructors
$raise, $cut, $list,
- data.priority-map: Added
- data.queue: Now you can 'close' an mtqueue
when you add an element to the queue. Once a queue is closed, no new eleemt
can be added. See enqueue/wait! and
the blog entry].
- gauche.unicode: Grapheme/Word break support is updated
to Unicode 13.
- Windows console handling is improved https://github.com/shirok/Gauche/pull/756
- data.heap: The argument order of binary-heap-find
is changed to align to other *-find procedures. The old interface still works,
but the new code must use the new interface.
- tree-map->generator/key-range: Added.
- srfi-42: Supports range objects with
- describe: Some more objects got specialized description;
try describing time object (after srfi-19 is loaded), a flonum, and a rational.
- gauche.test: New utility procedures for tests:
Last modified : 2021/12/24 03:39:49 UTC