Release 0.9.8

Bug fixes and enhancements

Major changes

The syntax of quasirename is changed

The template was implicitly quasiquoted before, but it turned out it interferes when quasiquote and quasirename were nested. Now the template needs to be explicitly quasiquoted. The old syntax is also supported for the backward compatibility. You can change the supported compatibility level by an environment variable GAUCHE_QUASIRENAME_MODE . See the manual entry of quasirename and the blog post for more details.

Keywords are symbols by default.

There can be some corner cases that causes backward compatibility. You can revert to the old behavior by setting an environment variable GAUCHE_KEYWORD_DISJOINT . See the "Keyword" section of the manual for how to adapt to the new way.

Some support of R7RS-Large Tangerine Edition.

We have scheme.mapping , scheme.mapping.hash , scheme.generator , scheme.division , scheme.bitwise , scheme.fixnum , scheme.flonum . See Gauche:R7RS-large for which libraries in R7RS-Large have been supported.

Prettyprinting is now default on REPL.

If it bothers you, set an environment variable GAUCHE_REPL_NO_PPRINT .

Bug fixes

The identifiers _ and ... are bound to syntax, to be friendly to hygienic macros.

and are bound to syntax, to be friendly to hygienic macros. floor/ and ceiling/ returned incorrect values when remainder is zero.

and returned incorrect values when remainder is zero. During compilation, feature identifiers are considered according to the target platform, so that cross compilation work (#407).

A finite inexact number multiplied by an exact zero now yields an exact zero consistently.

Precompiled uniform vectors had lost infinities, NaNs and minus zeros. Now they are handled properly.

The record accessor accidentally leaked #<unbound> to the Scheme world.

Other notable changes

GC version is bumped to 8.0.4, thanks to @qykth-git.

Unicode support is bumped to 12.1.0, thanks to @qykth-git (#471).

Numerous enhancements on Windows/MinGW version, thanks to @Hamayama.

Now gauche-package compile command has --keep-c-files and --no-line options, for easier troubleshooting with generated C files (#427).

command has and options, for easier troubleshooting with generated C files (#427). gauche.cgen.cise : Enhanced support for C procedure declaration, C struct and union type definition, and function type notation.

: Enhanced support for C procedure declaration, C struct and union type definition, and function type notation. Default hash function works on uniform vector (#440)

The gauche.interactive module now doesn't load ~/.gaucherc ---that feature is splitted to gauche/interactive/init.scm . Thus, when you start gosh it still reads ~/.gaucherc , but if you use gauche.interactive as an ordinary module, it doesn't load .gaucherc (#448).

module now doesn't load ---that feature is splitted to . Thus, when you start it still reads , but if you use as an ordinary module, it doesn't load (#448). gauche.array : New procedures array-negate-elements! , array-reciprocate-elements! .

: New procedures , . disasm : Now it shows lifted closures as well.

: Now it shows lifted closures as well. When the number of arguments passed to apply is fixed at the compile time, the compiler now optimize apply away. For example, (apply f 'a '(b c)) now becomes exactly the same as (f 'a 'b 'c) . If this optimization somehow causes a problem, pass -fnodissolve-apply option to gosh .

is fixed at the compile time, the compiler now optimize away. For example, now becomes exactly the same as . If this optimization somehow causes a problem, pass option to . srfi-42 : Uniform vectors are supported just like vectors.

: Uniform vectors are supported just like vectors. Now we have predefined char-set for each of Unicode general category, e.g. char-set:Lu .

. New flonum procedures: approx=? , flonum-min-normalized , fronum-min-denormalized .

, , . gauche.vport : Virtual port constructors accept :name argument.

Last modified : 2019/06/16 04:24:36 UTC