Path to this page:
Subject: CVS commit: pkgsrc/lang/gauche
From: Aleksej Saushev
Date: 2010-12-16 04:42:09
Message id: 20101216034209.A178B175DD@cvs.netbsd.org
Log Message:
Update to Gauche 0.9.1
New in Gauche 0.9.1: Major Feature Enhancements
+ New Features
o Extended formals: Built-in lambda, define etc. can
recognize optional and keyword arguments, a la Common Lisp.
o Enhanced module mechanism: Now you can rename, choose,
or add prefix to the symbols when importing other modules.
o Efficient record types: A new module gauche.record provides
ERR5RS (srfi-99) compatible record types. It is also upper
compatible to srfi-9 records.
o More support for multithreaded applications: Thread-safe
queue is added to util.queue, and thread-pool feature is
provided by the new module control.thread-pool.
Continuations can be passed between threads.
o Partial continuations.
o Enhanced Windows support.
o New module: crypt.bcrypt: A module for Blowfish password hashing.
o New module: srfi-98: portable environment variable lookup support.
o New module: gauche.mop.propagate: Making object composition simpler.
o New module: rfc.json: JSON parsing and construction.
+ Changes
o The directory structure for Gauche installation has changed so
that we can keep binary compatibility for the extension
modules throughout 0.9.x releases.
o Now it is an error to pass a keyword argument that isn't
expected by the callee. It used to be a warning.
o Regular expression re{,M} now means the same as re{0,M},
which is compatible to Oniguruma.
+ Improvements
o The compiler and the runtime got optimized more.
The compiler now knows more about built-in procedures, and tries
compile-time constant folding and/or inlining more aggressively.
For example, sxml.ssax can parse XML document a lot faster.
o ^ can be used in place of lambda, allowing more concise code.
There's also convenience macros ^a, ^b, ... ^z and ^_ as
abbreviations of lambda (a) etc.
o ~ is added for universal accessing operator. (~ x y) is the same
as (ref x y), and (~ x y z) is the same as (ref (ref x y) z),
and so on. It can be used with generalized setter, e.g.
(set! (~ array i) x).
o define-syntax, let-syntax, and letrec-syntax are enhanced so that
they can take a general expression in rhs, as far as it yields
a syntactic transformer.
o gauche.process: I/O redirection handling in run-process becomes
more flexible.
o rfc.http module now supports https connection (unix platforms only).
Currently it relies on an external program (stunnel).
o A new procedure current-load-path allows the program to know
the file name it is being loaded from.
o A new procedure .$ is introduced as an alternative name of compose.
o Regular expressions now got read-write invariance. Some internal
regexp routines are made public, giving users an easy way
to construct and analyze regexp programatically.
o rfc.822: New procedure: rfc822-date->date.
o file.util: The procedure temporary-directory now became a parameter
so that you can switch it when necessary. The default value is taken
from (sys-tmpdir), which determines temporary directory in the
recommended way of the platform; esp., it works on Windows native
platforms. home-directory works on Windows, too.
Procedures null-device and console-device are added to make it easier
to write portable script across Unix and Windows platforms.
o util.queue: New proceduers: any-in-queue, every-in-queue.
o gauche.parseopt: When let-args encounters a command-line option
that doesn't match any spec, it now raises a condition of type
<parseopt-error> instead of <error>. The application can capture
the condition to handle invalid command-line arguments.
o gauche.uvector: New procedure uvector-size to obtain number of octets
actually to be written out when the given uvector is written out
by write-block.
o dbm: A new procedure dbm-type->class allows an application to load
appropriate dbm implementation at runtime. Utility scripts dbm/dump
and dbm/restore are provided for easier backup and migration.
o Procedure slot-pop! is added for the consistency with other
*-push!/pop! API pairs.
o When ref is used for object slot access, it can take default value
in case the slot is unbound.
o Made (set! (ref list k) value) work.
o New procedures delete-keywords, delete-keywords!, tree-map-map,
tree-map-for-each.
o unwind-protect allows multiple handlers, as in CL.
o sqrt now returns an exact number if the argument is exact and
the result can be computed exactly. Also, R6RS's exact-integer-sqrt
is added.
o gauche.parameter: Parameters can be used with generalized set!.
o The default-endian parameter is moved from binary.io module
to the core, so that this parameter controls default endian
of binary I/O in general. For example, read-block! and write-block
of the gauche.uvector module now uses the value of this parameter
as the default. A new procedure native-endian is added to retrieve
the platform's native endianness.
o More R6RS procedures: inexact, exact, real-valued?, rational-valued?,
integer-valued?, div, mod, div0, mod0.
A number of bug fixes.
Files: