Release 0.9.6
Major feature upgrade
Notable feature enhancement:
- Static linking and standalone executable support: Now you can
create a standalone executable from Gauche program.
See blog entry
and "Building standalone executables" section.
- Single shell-script installer (blog entry).
- REPL enhancement: Pretty printing (blog entry),
online document display (blog entry) and search (blog entry).
- Method dispatch optimizations (1, 2).
- Procedure inlining optimizations (1, 2)
- Windows console Japanese handling: Thanks to @hamayama, numerous fixes to use Japanese on Windows command prompt is incorporated.
- Bump to Boehm gc 7.6.6, thanks to @qykth-git.
- Support mbedTLS as an additional TLS support, thanks to @qykth-git.
See rfc.tls for the details.
- format finally supports floating number formatting
~f
. It also supports a subtle rounding mode switch regarding
binary to decimal conversion (blog post).
- Support of using multiple versions of Gauche in parallel---from 0.9.6 and
after, you can invoke a different version of Gauche by
gosh -vVERSION
,
as far as VERSION
of Gauche is also installed. This isn't much
useful now (VERSION
must be 0.9.6 or later), but will be handy
with future releases.
- Sampling profiler now works on Windows, thanks to Saito Atsushi and @hamayama (although it can only sample
the attached thread).
New modules and procedures
12 libraries (out of 17) are supported:
Those are still accessible as srfi-*
names, but new code is recommended
to use the scheme.*
names.
New srfi support:
Other new modules and procedures:
- pprint - pretty printer.
- assume-type macro and type-error procedure.
- define-inline is now official.
- hash-table-compare-as-sets,
tree-map-compare-as-sets - compare those mappings as sets
- let-values, let*-values: now built-in.
- In gauche.process:
do-process!, do-pipeline,
run-pipeline!.
- In gauche.unicode:
char-east-asian-width
- In gauche.uvector:
uvector-binary-search,
u8vector=? ..., u8vector-compare ....
- In gauche.charconv: Conversion routines
accepts u8vector as well as strings.
- In gauche.sequence:
delete-neighbor-dups,
delete-neighbor-dups!,
delete-neighbor-dups-squeeze!,
group-contiguous-sequence
- In gauche.threads:
atomic and atomic-update!
allows more than one timeout values.
- text.template: Simple template expander, based on
built-in string interpolation feature.
- Char-set can be immutable. char-set-freeze and
char-set-freeze! are used to make a char set immutable.
Literal char-sets are immutable, as other literal objects.
- rfc.http: You can now use
stunnel
process
to do https connection instead of Gauche's rfc.tls
module.
Note that it only works with command mode of stunnel
---which isn't
available on Windows.
- rfc.tls: Now that we support mbedTLS and
server certificate authentication, a minimal document is added.
- binary.io: get-uint,
get-sint, put-uint!,
put-sint!.
- gauche.generator:
generator->uvector,
generator->uvector!,
generator->bytevector,
generator->bytevector!.
- data.random: regular-string$ - creates
a generator that generates random strings that match the given regexp.
- string-incomplete->complete: Add
:escape
mode
to escape illegal bytes in lossless way.
Incompatible changes
Some change undocumented behaviors; others change because of bug fix.
- Literal character sets (
#[chars]
) are now immutable, as
other literal objects; it will raise an error if you try to mutate it.
- getter-with-setter now associates the setter to
the getter in immutable way ('locked');
it will raise an error if you try to change it.
It is the way specified in srfi-17. It also allows Gauche to inline
setters. (NB: Many predefined setters are now locked. If your existing
code alters them it will cause an error.)
- list*, cons* - Requires at least
one arg, as specified in srfi-1. Zero argument doesn't make sense, although
previous versions of Gauche allowed it.
- append, append! - Now it is an
error if the arguments except the last one is a dotted list.
We've tolerated it before, but it's rather error prone.
- util.match: The way to match record instance
with positional variables are changed for more reasonable way.
We hope no code depends on the previous way, which was broken anyway.
See the blog entry for the details.
- twos-complement-factor: We fix the behavior when 0 is
passed; it used to return 0, now it returns -1. The latter is consistent
with srfi-60. Unfortunately we documented the former behavior, so it breaks
compatibility.
- string-split: Splitting an empty string now yields an empty list instead of (""), as srfi-152 specifies
Other bug fixes
There are too many; we list up some notable ones.
Last modified : 2018/07/03 18:37:15 UTC