Release 0.9.7

Major C API/ABI overhaul

Changes of C API/ABI

This release includes several C API/ABI changes that breaks the backward compatibilities, in order to have clean API towards 1.0. Although we haven't officially defined C API/ABI, we kept the de facto backward compatible as much as possible. Some turned out to be design shortcomings. We don't want them to hinder future developments, so we decided to change them now.

In most cases, all you need to do is to recompile the extensions. We checked existing extensions being compilable with the new version as much as possible. If you find an extension breaks, let us know. See API Changes in 0.9.7 for the details. We bumped ABI version from 0.9 to 0.97, so the extensions compiled up to 0.9.6 won't be linked with the new version of Gauche. If necessary, you can install 0.9.6 and 0.9.7 Gauche in parallel, and switch them using -v VERSION option.

If you're not sure what extensions you've installed, check the directory ${prefix}/share/gauche-0.9/site/lib/.packages/ . It contains gpd (Gauche Package Description) files of the extensions you've installed for 0.9.6 and before.

New modules and procedures

srfi-154 : First-class dynamic extents

: First-class dynamic extents gauche.connection : An interface that handles connection-based full-dupex communication channel. The <socket> ( gauche.net ) class implements it, as well as a couple of other classes. It allows to write a communication code (e.g. server request handlers) without knowing the underlying connection implementation.

: An interface that handles connection-based full-dupex communication channel. The ( ) class implements it, as well as a couple of other classes. It allows to write a communication code (e.g. server request handlers) without knowing the underlying connection implementation. text.edn : Parse and write Clojure's EDN representation.

: Parse and write Clojure's EDN representation. compat.chibi-test : A small adapter module to run tests written for Chibi Scheme (some srfi reference implementations use it) within gauche.test .

: A small adapter module to run tests written for Chibi Scheme (some srfi reference implementations use it) within . text.html-lite : HTML5 elements are added. https://github.com/shirok/Gauche/pull/363

: HTML5 elements are added. https://github.com/shirok/Gauche/pull/363 gauche.array : Export array-copy .

: Export . gauche.configure : Add more feature tests: cf-check-lib , cf-check-libs , cf-check-type , cf-check-types , cf-check-func , cf-check-funcs , cf-check-decl , cf-check-decls , cf-check-member , cf-check-members . Also added cf-init-gauche-extension and cf-output-default , which takes care of common task of Gauche extensions so that the configure script can now be very terse.

: Add more feature tests: , , , , , , , , , . Also added and , which takes care of common task of Gauche extensions so that the script can now be very terse. gauche-package make-tarball is updated to read package.scm . Used with gauche.configure , this eliminates the need of DIST script for the extensions.

is updated to read . Used with , this eliminates the need of script for the extensions. file.util : Added call-with-temporary-file , call-with-temporary-directory .

: Added , . assoc-adjoin , assoc-update-in : A couple of new assoc-list procedures.

Bug fixes and improvements

rfc.tls : If CA bundle path is set, axTLS connection also validates server certificates (mbedTLS rejects connection when CA bundle path is not set). https://github.com/shirok/Gauche/pull/362

: If CA bundle path is set, axTLS connection also validates server certificates (mbedTLS rejects connection when CA bundle path is not set). https://github.com/shirok/Gauche/pull/362 rfc.tls : On Windows, you can specify system as CA bundle path to use the system certificate store. https://github.com/shirok/Gauche/pull/395 , https://github.com/shirok/Gauche/pull/398

: On Windows, you can specify as CA bundle path to use the system certificate store. https://github.com/shirok/Gauche/pull/395 , https://github.com/shirok/Gauche/pull/398 rfc.tls : If Gauche is configured with mbed-tls but without axtls, the default tls class is set to <mbed-tls> .

: If Gauche is configured with mbed-tls but without axtls, the default tls class is set to . Bumped to bdwgc 7.6.8. https://github.com/shirok/Gauche/pull/373

Experimentally turned on generic function dispatcher optimization for ref and object-apply by default. It could boost the performance of these generic function calls up to 5x. We keep monitoring the effect of optimization and will enhance it in future.

and by default. It could boost the performance of these generic function calls up to 5x. We keep monitoring the effect of optimization and will enhance it in future. Now glob sorts the result by default (consistent of glob(3) . To avoid sorting, or supply alternative sort procedure, use :sorter argument.

sorts the result by default (consistent of . To avoid sorting, or supply alternative sort procedure, use argument. REPL's info uses the value of the PAGER environemnt variable for paging. Now you can put command-line arguments in it (not only the command name). https://github.com/shirok/Gauche/pull/358

uses the value of the environemnt variable for paging. Now you can put command-line arguments in it (not only the command name). https://github.com/shirok/Gauche/pull/358 REPL's info failed to work when Gauche is built without zlib support.

failed to work when Gauche is built without zlib support. sxml.serializer : If the attribute value is the same as attribute name, we took it as a boolean attribute and just rendered with attribute name only. It interferes with an attribute with the value that happens to be the same as the name, so we changed it. This is backward-compatible change. https://github.com/shirok/Gauche/pull/359

: If the attribute value is the same as attribute name, we took it as a boolean attribute and just rendered with attribute name only. It interferes with an attribute with the value that happens to be the same as the name, so we changed it. This is backward-compatible change. https://github.com/shirok/Gauche/pull/359 sxml.ssax : Fix whitespace handling. https://github.com/shirok/Gauche/pull/360

: Fix whitespace handling. https://github.com/shirok/Gauche/pull/360 We had a kludge to handle a setter of a slot accessor method, that causes confusion when you use the module that implements a base class then define slot accessor in the derived class. It is fixed. See the thread https://sourceforge.net/p/gauche/mailman/message/36363814/ for the details.

Now we handle utf-8 source file that has BOM at the beginning.

open-input-file , open-output-file , etc.: We now honor element-type keyword arguments (it was ignored before). It only makes difference on Windows.

, , etc.: We now honor keyword arguments (it was ignored before). It only makes difference on Windows. scheme.set : Fix set<? etc.

: Fix etc. util.digest : digest-hexify can now take u8vector as well.

: can now take as well. A bug in hash-table-copy caused inconsistent hash table state. https://github.com/shirok/Gauche/issues/400

Incompatible changes in unofficial module

parser.peg : Removed pre-defined character parsers ( anychar , upper , lower , letter , alphanum , digit , hexdigit , newline , tab , space , spaces , and eof ) and shorthands ( $s , $c , and $y ). Those names are easy to conflict (esp. 'newline') yet not so much useful, for it's quite easy to define. If existing code relies on these procedures, say (use parser.peg.deprecated) .

Last modified : 2018/12/22 02:48:19 UTC