12553 lines (9058 with data), 478.1 kB
2010-05-12 Shiro Kawai <shiro@acm.org>
* ext/net/netaux.scm (make-server-sockets): If the system defaults
v6 sockets to be dual-stack (i.e. IPV6_V6ONLY is off by default),
the current strategy fails since v6 socket tries to bind both
v4 and v6 addresses. The default is system-dependent, so we
adopt a heuristic: First we bind v6 addresses, and then we try
v4 ones; if v4 one fails with EADDRINUSE, we just ignore it.
2010-05-11 Shiro Kawai <shiro@acm.org>
* src/vm.c (POP_CONT): fixed a bug that refers wrong pointer.
* src/port.c (register_buffered_port): Fixed a race condition
accessing the active port vector. Pointed by enami.
* src/vm.c (user_eval_inner, Scm_VMCallPC):
src/intlib.stub (%call/pc):
lib/gauche/partcont.scm: Experimentally added partial (delimited)
continuation support. A partial continuation is marked by
ep->cstack == NULL. Its 'root' is cut by %call/pc. It is
executed on the cstack where it is invoked. When execution of
a partial continuation ends, popping continuation frame yields
vm->cont == NULL, which caused run_loop() to return to
user_eval_inner, which in turn hands the control over the latest
continuation delimited by reset(). Note that reset() operator
is simply Scm_VMApplyRec0---user_eval_inner implicitly delimits
the continuation. No partial continuation frames should include
c stack frames in it.
2010-05-10 Shiro Kawai <shiro@acm.org>
* src/vm.c (user_eval_inner, throw_continuation): Allow execution
of "ghost continuations", the continuations whose dynamic extent
of C stack is effectively expired. For example, if a
continuation is captured within the callback function from C,
and the callback has already returned to C, then the continuation
becomes a ghost. Ghost continuation cannot return to C at its
bottom, for it is not allowed in C to return from already expired
stack frame. We used to raise an error when ghost continuation
is invoked. However, the Scheme portion of a ghost continuation
is still effective and executable. This change allows a ghost
continuation to be executed on the current C stack. If the
continuation tries to return to C, an error is signalled.
2010-05-04 Shiro Kawai <shiro@acm.org>
* src/char.c (Scm_CharSetComplement): Fixed to handle complement
correctly for the cases that the range touches the lower bound,
or the range has one-character gap.
2010-05-03 Shiro Kawai <shiro@acm.org>
* ext/util/queue.scm (any-in-queue, every-in-queue): added.
* lib/gauche/common-macros.scm (unwind-protect): Allow multiple
handlers, as in CL.
* src/module.h (origin, prefix): Added these slots to support
wrapper module with prefix. Modules are not statically allocated,
so this shouldn't affect ABI.
* src/module.c (Scm__MakeWrapperModule): An implicit module inserted
to support prefixed symbols. This obsoletes the change on
2009-09-23, using module and prefix pair in the import list.
(Scm_FindBinding): Consider prefix from the wrapper module
Dropped support of (#<module> . prefix) in the import list.
(Scm__InitModulePost): Made module information visible as slots.
We should call Scm_InitStatiClassWithMeta in module.c, but
that needs to be done after the class system is initialized.
Scm__InitModule needs to be called before Scm__InitClass,
so we need another initialize function, which is called
after Scm__InitClass.
* src/core.c (Scm_Init), src/class.c (Scm__InitClass): Changed
accordingly.
* src/compile.scm (process-import): Support :rename. Rewrote
:only and :except support to use wrapper modules.
2010-05-02 Shiro Kawai <shiro@acm.org>
* lib/control/job.scm, lib/control/thread-pool.scm: Added.
* test/TESTS2, Makefile.in, src/Makefile.in: Set up some tests
to be run after ext/* tests.
* test/control.scm: Added.
* ext/util/queue.scm (mtqueue-room): Added.
2010-05-01 Shiro Kawai <shiro@acm.org>
* ext/net/test.scm: Fix test failure on ipv6 enabled host.
* src/gauche-init.scm (use): Allow options that can be passed
to import.
* doc/modgauche.tex (gauche.mop.propagate): Made it officially
documented.
* lib/gauche/mop/propagate.scm: Enable initialization of propagated
slot via init-keyword.
2010-04-30 Shiro Kawai <shiro@acm.org>
* src/compile.scm (pass1/define, pass1/lambda): Defines R5RS version
and Gauche version of define and lambda separately; Gauche version
supports extended formals, R5RS version not. For those who want
vanilla versions for whatever reason, say (extend scheme).
2010-04-25 Shiro Kawai <shiro@acm.org>
* src/compile.scm (pass1/define-inline): Revamp inlining mechanism
of lambdas with closed environment. The new scheme doesn't
require separate form such as %inlinable-lambda. I check in the
current state, which works on basic cases but needs more refinement
for the practical cases. This change shouldn't affect the existing
valid code (that is, the path to inline lambdas with no closed
enviornment isn't changed).
Also reverting the change on 2010-03-28 about the packed information
of inlinable procedure (the info in $lambda-flag). With this new
scheme we can just use packed IForm; no need to keep extra info.
* src/intlib.stub (%insert-binding): Allow optional flags.
2010-04-21 Shiro Kawai <shiro@acm.org>
* ext/bcrypt: Change module name from gauche.bcrypt to crypt.bcrypt,
for it represents the module better.
2010-04-20 Shiro Kawai <shiro@acm.org>
* src/Makefile.in: Re-adding $(LIBS) to link gauche-config, for
it is needed on mingw.
2010-04-19 Shiro Kawai <shiro@acm.org>
* configure.ac, src/gauche/config.h.in: Added GNU/kfreebsd and
GNU/Hurd support. Patch from NIIBE Yutaka.
* lib/gauche/treeutil.scm (tree-map-map, tree-map-for-each): Added.
* src/autoloads.scm, doc/corelib.texi: Modified accordingly.
* src/Makefile.in: Fix linking gauche-config; patch from Debian build,
by YAEGASHI Takeshi.
* configure.ac: Support for arm-unknown-linux-gnueabi and
arm-unknown-linux-gnulp architecture. Patch from NIIBE Yutaka.
* src/number.c (Scm_NumLE, Scm_NumLT, Scm_NumGE, Scm_NumGT):
Added these APIs that handles NaN properly. Scm_NumCmp alone
is not suitable to handle comparison involving NaNs.
* src/number.h: ditto.
* src/vminsn.scm ($w/numcmp): Use above APIs to handle NaNs.
* src/stdlib.stub (=, <, <=, >, >=): Use above APIs to handle NaNs.
* test/number.scm: Added tests of numeric comparison involving NaNs.
* src/gauche/float.h (SCM_HALF_FLOAT_IS_NAN, SCM_HALF_FLOAT_CMP):
Recognizes and handles NaN bitpattern of ScmHalfFloat.
* src/vector.c (compare_f16vector): ditto.
* ext/uvector/test.scm: Added tests for uvector comparison.
2010-04-18 Shiro Kawai <shiro@acm.org>
* src/gauche/vector.h (struct ScmVectorRec): The 'size' field
must have the same length as ScmObj, otherwise vector literals
allocated in ScmObj[] by precompiler doesn't work on big-endian
machines. Patch from Stephen Lewis.
2010-04-13 Shiro Kawai <shiro@acm.org>
* lib/srfi-98.scm, lib/Makefile.in: Added srfi-98 support.
* src/core.c: Made cond-expand aware of srfi-98, srfi-99.
* doc/concepts.texi, doc/corelib.texi, doc/modsrfi.texi: srfi-98.
2010-04-11 Shiro Kawai <shiro@acm.org>
* src/compile.scm (dynamic-wind): Fixed a bug that leaves lvar's
refcounts wrong after inline transformation.
2010-04-08 Shiro Kawai <shiro@acm.org>
* src/vm.c (save_env): Revised the previous fix to make it
clearer, based on the analysis of NIIBE Yutaka.
2010-04-07 Shiro Kawai <shiro@acm.org>
* src/vm.c (save_env): Avoid copying ScmEnvFrame header as an
array of ScmObj*. Doing so apparently violates the strict
aliasing rule and results unintended compilation on some
architectures (gcc on ia64 confirmed). Patch contribution
from NIIBE Yutaka.
2010-03-30 Shiro Kawai <shiro@acm.org>
* doc/*.texi: Moved 'coding: utf-8' to the end of the file,
since texinfo-multiple-files-update seems to blindly assume
the first line of a file is a node command.
2010-03-28 Shiro Kawai <shiro@acm.org>
* src/compile.scm (pass1/inlinable-lambda, pass1/expand-inliner etc):
Changed inlining info in $LAMBDA node to allow closed lvars
plus future extensions, from a simple vector of packed IForm.
Changed places that uses info, though currently they only deal
with the case that no lvars are closed.
This affects the dumped format of precompilation; the old format
is still recognized and supported, but will be dropped in the
next major release.
2010-03-25 Shiro Kawai <shiro@acm.org>
* lib/gauche/record.scm: Added support of vector-backed pseudo record.
The procedure returned by rtd-accessor has a setter if the field
is mutable.
2010-03-22 Shiro Kawai <shiro@acm.org>
* libsrc/util/match.scm: Fixed a bug that caused match-let* fail
(required identifiers are not defined).
2010-03-09 Shiro Kawai <shiro@acm.org>
* src/compile.scm (iform-copy): Fixed a bug that yielded a wrong
optimization when flagged closure is inlined. Thanks to the
Michael Campbell for the detailed report.
2010-02-27 Shiro Kawai <shiro@acm.org>
* lib/www/cgi.scm (get-mime-parts): Fixed a bug that didn't parse
option values in content-disposition header are unquoted.
* ext/threads/threads.scm, ext/threads/Makefile.in:
Integrated thrlib.stub into threads.scm.
2010-02-24 Shiro Kawai <shiro@acm.org>
* src/gauche/vm.h, src/vm.c, src/gauche/pthread.h, src/gauche/uthread.h:
Abstract thread handle type as ScmInternalThread.
2010-02-23 Shiro Kawai <shiro@acm.org>
* src/gauche/win-compat.h (struct timespec), src/system.c (nanosleep):
Added nanosleep emulation on Windows.
* src/syslib.stub (sys-nanosleep): Enable on windows as well.
2010-02-23 Shiro Kawai <shiro@acm.org>
* most sources: Removed $Id...$ from most of the sources. We have
moved away from CVS, so it is no longer relevant. It may even
cause confusion, since it's not updated anymore. (It is left
to the source taken from outside; in which case the line shows
which version we've taken from).
* ext/util/queue.scm (with-mtq-mutex-lock): Made mutex locking
cancellation safe.
2010-02-22 Shiro Kawai <shiro@acm.org>
* src/regexp.c (rc1_lex_minmax): Changed to treat re{,M} as re{0,M}
in the regexp parser, which is compatible to Oniguruma.
This is, strictly speaking, an INCOMPATIBILE CHANGE; the previous
version is compatible to Perl, which makes {,M} to match the
string literally. It should be written \{,M} now.
* lib/gauche/fileutil.scm (make-glob-fs-fold): Fixed a bug in glob
that fails if an intermediate directory in the fully-specified
path is searchable but unreadable.
* src/gauche/regexp.h, src/regexp.c: Added 'ast' field in ScmRegexp
to save parsed AST.
* lib/gauche/regexp.scm (regexp-unparse): An utility to reconstruct
string representation of regexp from AST.
* src/extlib.stub, src/scmlib.scm (regexp->string): Changed
regexp->string so that if the 'pattern' field of ScmRegexp is
#f (i.e. the regexp is directly created from AST), it uses
regexp-unparse to reconsturct the string representation. The
constructed string is set to the 'pattern' field so that the
subsequent call of regexp->string will use it.
* src/autoloads.scm: Mark regexp-unparse autoload.
2010-02-21 Shiro Kawai <shiro@acm.org>
* lib/rfc/http.scm (request-response): Exclude keyword arguments
for the receiver from request headers.
* src/scmlib.scm (delete-keywords, delete-keywords!): Added.
2010-02-20 Shiro Kawai <shiro@acm.org>
* src/char.c (charset_print): Fixed char-set writer that violated
read/write invariance if the set includes '^' as the first
character.
2010-02-19 Shiro Kawai <shiro@acm.org>
* test/system.scm: Exclude sys-wait test on cygwin, since sigmask
doesn't seem to work reliably on cygwin 1.7.
* INSTALL.in: switched to utf-8.
2010-02-12 Shiro Kawai <shiro@acm.org>
* src/system.c: Do not treat '\\' as a directory separator on
non-windows platforms (On GAUCHE_WINDOWS, we still treat both
'/' and '\\' as a separator.)
2010-02-06 Shiro Kawai <shiro@acm.org>
* src/objlib.scm (slot-pop!): Added for the consistency with other
*-push!/pop! API pairs.
* src/treemap.c (core_bound), test/treemap.scm: Fixed a bug that
tree-map-pop-min! didn't update num_entries. Patch from
Masatake YAMATO.
2010-02-05 Shiro Kawai <shiro@acm.org>
* doc/*.texi: Switched from euc-jp to utf-8.
* doc/extract: Changed accordingly.
* doc/gauche-install.1.in, doc/gauche-package.1.in,
doc/gauche-cesconv.1.in: Added these manpages based on the ones
provided by Jens Thiele.
* doc/gosh.1.in, doc/gauche-config.1.in: Updated.
* configure.ac: Changed to process the added manpages.
2010-02-02 Shiro Kawai <shiro@acm.org>
* ext/util/queue.scm (enqueue/wait! etc.): Implemented synchronizing
operations.
* ext/threads/test.scm: Added tests of interacting between threads
using mtqueue.
* doc/modutil.texi: Extended descriptions of util.queue.
2010-01-21 Shiro Kawai <shiro@acm.org>
* libsrc/gauche/collection.scm, lib/gauche/mop/instance-pool.scm:
Remove dependency to util.queue; it caused build problem.
* ext/util/queue.scm, lib/util/queue.scm: Rewrote util.queue
partly using C, in order to support thread-safe queue efficiently.
* ext/util/Makefile.in, ext/Makefile.in, test/util.scm,
ext/util/test.scm: Changed accordingly.
2010-01-18 Shiro Kawai <shiro@acm.org>
* lib/rfc/http.scm: Experimentally added https support, using
stunnel as an external agent to handle SSL. Pass :secure #t
to http-get etc. Needs more test to become 'official'.
(Current problem: There seems to be no way to get erroneous
condition in stunnel side).
2010-01-17 Shiro Kawai <shiro@acm.org>
* src/objlib.scm, lib/gauche/procedure.scm, src/autoloads.scm,
lib/gauche/experimental/ref.scm (~): Integrated '~' into the
core (currently autoloaded from gauche/procedure.scm). Now
it's officially supported. 'ref*' became an alias of '~', but
it's only for the backward compatibility and will fade out.
* doc/corelib.texi (Combinators): formally account '.$' as an
altenative name of 'compose'.
2010-01-16 Shiro Kawai <shiro@acm.org>
* src/compile.scm (transparent?/rec): Treat $GREF of inlinable
bindings as referentially trasparent.
2010-01-15 Shiro Kawai <shiro@acm.org>
* src/link-dylib: Adjust install_name according to the ABI version
(patch from Tatsuya BIZENN).
* src/compile.scm (pass1/define-inline, pass1/inlinable-lambda):
Factored out the part to save intermediate IForm to $lambda node.
This is to prepare for further aggressive inlining.
* lib/gauche/record.scm: Added srfi-99/srfi-9 compatible record type.
* src/class.c (Scm__AllocateAndInitializeInstance),
src/objlib.scm (%make-record,%make-recordv,%record-ref,%record-set!):
Auxiliary internal procedures to support record type efficiently.
* lib/srfi-9.scm: Just extend gauche.record.
2010-01-10 Shiro Kawai <shiro@acm.org>
* ext/Makefile.ext.in (GAUCHE_ARCHDIR etc): Reverted not to use
gauche-config, for it caused problem on MinGW, on which gauche-config
returns a pathname relative to the executable.
2010-01-09 Shiro Kawai <shiro@acm.org>
* doc/coresyn.texi: officially document extended lambda formals, ^,
and ^c.
* src/compile.scm (pass1/extended-lambda): If :optional spec is given
but not :key nor :rest, and given arguments exceeds maximum number
of optional arguments, signals an error. It is consistent to
SUBR with :optional args, and also to Common Lisp.
NB: The error message needs to be improved. Thinking to change that
when we adopt better compilation strategy for optiona arguments.
2010-01-08 Shiro Kawai <shiro@acm.org>
* src/scmlib.scm (let-keywords*): Grace period expires; raises an error
if unknown keyword is given (see 2007-01-21).
2010-01-07 Shiro Kawai <shiro@acm.org>
* src/scmlib.scm (let-keywords, let-keywords*): Allow single variable
without default value, for the consistency with let-optionals*.
* lib/gauche/common-macros.scm (^ ^a ...),
lib/gauche/experimental/lamb.scm,
src/autoloads.scm:
Moved ^ and ^x macro from experimental to built-in.
* src/autoloads.scm: Allow multiple symbols in :macro entry, for
conciseness.
2010-01-05 Shiro Kawai <shiro@acm.org>
* libsrc/file/util.scm (temporary-directory): Make this parameter,
for sometimes it is useful to change the temporary directory.
* src/compile.scm (pass1/open-include-file): Check the platform at
run-time instead of compile-time, since compile.scm is likely to be
pre-compiled on a machine different from the one actually runs it.
* src/genconfig.in: Use unique name for temporary file to avoid
race condition when make is run in parallel.
2010-01-04 Shiro Kawai <shiro@acm.org>
* configure.ac, */Makefile.in, src/genconfig.in, src/makeverslink.in,
src/gauche/config.h.in: Adopted the new installation directory
strcture to keep binary compatibility for the same ABI version.
Bumped to 0.9.1_pre1.
* src/scmlib.scm: Added a temporary workaround to use extension
modules compiled for 0.9 to work with 0.9.x series.
* Gauche.spec: Fix rpm build problem caused by missing micro version.
This is peculiar to the new minor version up; remember to revert it
upon 0.9.1 release.
2010-01-03 Shiro Kawai <shiro@acm.org>
* ext/bcrypt: Added crypt_blowfish binding. We chose to include it
in the main distribution instead of providing it as an external
package, in order to encourage users to use a modern password
hashing scheme rather than relying on crypt(3) or rolling their own.
2009-12-30 Shiro Kawai <shiro@acm.org>
* src/compile.scm: (id->bound-gloc): Refactored.
(cenv): Added 'source-path' slot to support include.
(pass1/body): Factored out the recursive parts as pass1/body-rec.
(syntax/include): Added 'include'.
2009-12-29 Shiro Kawai <shiro@acm.org>
* src/scmlib.scm (current-load-path): Added. It is going to be more
reliable and convenient to obtain the path than via current-load-port.
* src/compile.scm (dynamic-wind): Added builtin inliner for
dynamic-wind. This expansion uses PUSH-HANDLERS and POP-HANDLERS
instructions.
2009-12-28 Shiro Kawai <shiro@acm.org>
* src/compile.scm (pass2p/precompute-constant): Support the case
when the precomputation procedure returns multiple values
(for now, we give up optimization if the proc returns more than
one value. will be fixed in future.)
2009-12-22 Shiro Kawai <shiro@acm.org>
* src/vminsn.scm (PUSH-HANDLERS): Fixed: the order of arguments is
reversed; "before" comes first (hence in the stack) and "after"
follows (hence in VAL0).
2009-12-21 Shiro Kawai <shiro@acm.org>
* src/compile.scm (pass1/call): Expand immediate lambda here, too,
for such a form can appear as a result of macro expansion.
Elimiating lambda here helps later pass to optimize clsures.
2009-12-16 Shiro Kawai <shiro@acm.org>
* src/vmcall.c: Pass the actual # of args in the stack via VAL0
to Scheme-defined procedures/methods. This info will be used
for efficient optional argument handling.
* src/intlib.stub (gloc-ref, gloc-bound?): Fix a bug that gloc-ref
potentially leaks out #<unbound> to the Scheme world. Now gloc-ref
raises an error if it doesn't have a binding. You can give a
fallback value to avoid an error. Also provides gloc-bound? to
check if the gloc has a value.
* src/compile.scm: Changed accordingly to avoid dereferincing unbound
glocs.
* src/compile.scm (pass2p/optimize-call): Added some heuristics
to deduce result of built-in predicate from what we know about
its argument.
(lvar-const-value): Factored out the common usage to get initval
of lvar if it is a constant binding.
2009-12-15 Shiro Kawai <shiro@acm.org>
* lib/text/parse.scm: Rewritten to take advantage of the new
compiler optimization.
* libsrc/srfi-13.scm: Avoid creation of closure by %get-char-pred.
* ext/sxml/sxml-ssax.scm.in, ext/sxml/trans.scm, ext/sxml/adaptor.scm:
Make some global bindings constant so that the compiler can perform
more optimization.
* src/gauche.h (ScmProcedure): Added 'constant' bit. See the
comment for the details.
(SCM_DEFINE_SUBRX): A new macro to specify 'constant' bit. This
macro is mainly for autogenerated C code. Other procedure
initializer macros are adjusted accordingly.
* src/proc.c (proc-constant): Added accessor for 'constant' bit.
* lib/gauche/cgen/stub.scm (define-cproc): Added a support for
flag :constant, that turn on the constant bit of SUBR and
make the SUBR inlinable. This allows the compiler to precalculate
constant values using buiting procedures.
* src/stdlib.stub, src/extlib.stub: Added :constant flags to
cprocs when applicable.
* src/compile.scm (pass2p/optimize-call): Enables constant folding
involving procedures marked as 'constant'.
(pass2, pass2p/$IF, pass2p/optimize-call): If IForm structure
is changed significantly during pass2 post, repeat pass2 post again
for further optimization.
(pass2, compile-p2): Added dump? argument for troubleshooting.
(initval-list-cdr): Fixed a bug that creates invalid $LIST node.
(%attach-inline-er-transformer): Preserve inliner info attached
by define-inline, so that we can set a compiler macro on
procedures defined by define-inline.
(pp-iform): Include identifier's module info.
* src/intlib.stub (identifier-module): Removed after all. Speed is
no so critical, so we can use (slot-ref id 'module) instead.
2009-12-14 Shiro Kawai <shiro@acm.org>
* src/scmlib.scm (let-optionals*): Improved not to emit unnecessary
code to advance a pointer in the last of optional argument.
* src/compile.scm (pp-iform): Slightly changed output format for
better readability.
(pass2/$IF, pass2p/$IF): Moved $if-$it optimization to the pass2p,
for it won't affect main pass2 optimization, but it introduces
shared node and makes later pass cumbersome.
(pass2/$ASM, pass2p/$ASM, pass2/check-constant-asm): Perform
$ASM-node constant folding in pass2 main as well. This benefits
other pass2 main optimization.
(reset-lvars): Re-adjust lvar reference count after pass2 main,
for the pass may prune subtree from IForm.
(pass2p/$CALL): Another call optimization. At this point we know
a lot about $CALL node, so we can perform some more optimization.
(pass2p/$SEQ): Eliminate dead code if we know it is safe to do so.
* src/intlib.stub (identifier-module): Added to be used in
pass2p/inlinable-gref? in compile.scm.
2009-12-13 Shiro Kawai <shiro@acm.org>
* src/compile.scm (unpack-iform): Recover lvar's initvals after
unpacking. Missing initvals prevented some optimizations.
(transparent?): Check circular/shared reference of $LABEL node.
(pass2p): Passing labels table to avoid recursing into circular/
shared $LABEL node.
* src/main.c (-fno-post-inline-pass),
src/gauche/vm.h (SCM_COMPILE_NO_PASS2POST),
src/intlib.stub (vm-compiler-flag-no-pass2-post?),
src/compile.scm (pass2): Added a new compiler flag to skip post-pass2
optimization, mainly for troubleshooting.
* src/intlib.stub (vm-compiler-flag-noinline-locals?): Bug fix:
Missing 'result' caused this function always return false.
* src/compile.scm (transparent?): More sophisticated check to see if
we can safely move around or eliminate subtree of IForm.
(pass2/remove-unused-lvars): If an lvar became unused and its initval
is transparent, we eliminate the initval expr (previously we only
eliminate if initval is $const or $lambda).
(pass2p/$IF): If the test becomes a constant due to prior optimization,
expands then or else node directly.
(pass2p/$ASM): Partially evaluate some assemblers if we know enough
about the arguments.
2009-12-12 Shiro Kawai <shiro@acm.org>
* src/compile.scm (pass2/local-call-embedder): Bug fix: It could
generate an embed $call node without inserting $label node in its
child's $lambda. Pass3 assumes there's always a $label node, thus
fails in such a case. This bug has been covered by the another bug
fixed below:
(pass2/remove-unused-lvars): Bug fix: It didn't decrement lvar ref
count when $lref is removed from the inits of the $let. This didn't
cause a malfunction but caused slightly inefficient code, and covered
up the aforementioned bug.
($const?, $lref?, $it?): Added for conciseness.
(pass2p/$CALL): Do not recurse if the call is marked 'jump, since
its body is shared by other call nodes.
* src/scmlib.scm (every), libsrc/srfi-1.scm: Make 'every' built-in,
for it is used in compile.scm now.
* src/compile.scm (adjust-arglist): Emit ($CONST ()) for the restarg
instead of ($LIST). This allows further constant elimination.
(pp-iform): Fix missing close paren in $LIST, $LIST* and $VECTOR
branch. Also replaced ';' by ':' for Emacs-friendliness.
(pass2): Introduced extra pass after pass2 to do further optimizations
that are made available by closure optimization.
When closures are inlined, we have a good chance to partially evaluate
the original body, since some of the provided arguments can be
constants.
2009-12-11 Shiro Kawai <shiro@acm.org>
* lib/gauche/procedure.scm (make-dispatcher): Attach a compiler macro
to case-lambda so that if we know # of args at the call site we
can skip dispatcher.
* src/compile.scm (%attach-inline-er-transformer)
(%bind-inline-er-transformer),
src/intlib.scm (%mark-binding-inlinable!),
src/scmlib.scm (define-compiler-macro): Added tentative compiler-
macro API. This is still a kind of stub; don't expect it to work
universally (esp. it is unlikely to go well with precompilation.)
* ext/uvector/uvutil.scm: Adjusted TAGvector-ref expander to the
above API.
* src/gauche/gloc.h, src/gloc.c (Scm_GlocInlinableSetter, Scm_GlocMark):
Laying out the base to support proper inlining behavior.
* src/module.c (Scm_MakeBinding): Added support of inlinable bindings.
* src/compile.scm (pass1/define-inline, pass3/$DEFINE): Ditto.
Define-inline will create an inlinable binding.
* src/vminsn.scm (DEFINE): Support creating inlinable bindings.
* lib/gauche/cgen/stub.scm (cgen-emit-init, variable-parser-common):
Add inlinable flag to the bindings of cprocs inlinable to vm insn.
* src/intlib.stub (gloc-inlinable?): added.
2009-12-10 Shiro Kawai <shiro@acm.org>
* src/gauche/module.h, src/module.c (Scm_MakeBinding): A generic API
to insert global binding. Eventually it will supersede Scm_Define.
* src/stdlib.stub (+, *): Fixed these by removing SCM_NUMBERP checks,
since they should be handled in Scm_Add and Scm_Mul. It can be
legal to pass non-numbers to them, because of object-+ and object-*
hooks. (This bug haven't surfaced easily, since inlied version of
'+' and '*' handles it correctly.)
2009-12-09 Shiro Kawai <shiro@acm.org>
* src/intlib.stub (make-case-lambda-dispatcher): Put the dispatch
vector in the procedure info, so that disasm and other introspection
routines can dig into the body of the case-lambda. The format
in which the info is stored is tentative and may be changed later.
* lib/gauche/procedure.scm (disasm): Allow disassembling case-lambda,
using the info available by the above change.
2009-12-04 Shiro Kawai <shiro@acm.org>
* src/gauche/bytes_inline.h: Added swap_*_t for the union types
commonly used in the swapping operations.
* ext/binary/binary.c: Changed to use above types.
* ext/uvector/uvector.c.tmpl, ext/uvector/uvector.h.tmpl,
ext/uvector/uvectorP.h, ext/uvector/uvgen.scm,
ext/uvector/uvlib.stub.tmpl: Changed uvector-swap-bytes and
uvector-swap-bytes! to deal with ARM's mixed endian, by taking
optional argument. Also changed read-block! and write-block to deal
with ARM mixed endian, and obey default-endian parameter if endian
argument is omitted.
2009-11-30 Shiro Kawai <shiro@acm.org>
* src/gauche/bytes_inline.h, src/binary.c: Factored out byte swapping
macros.
* src/core.c (Scm_Init), src/parameter.c (Scm__InitParameter):
Removed InitParameter, since all we need is statically initialize
mutex. This alleviates headache of ordering Scm__Init* routines
to satisfy dependencies.
* ext/binary/binary.c, src/number.c, src/gauche/number.h
(Scm_DefaultEndian, Scm_NativeEndian, Scm_SetDefaultEndian):
Move the default-endian parameter from to the core, for it will
be used in all binary i/o consistently. binary.c reflects the
change below to check ARM_LITTLE_ENDIAN at runtime.
* ext/binary/binary.h, ext/binary/io.scm: changed accordingly.
* src/extlib.stub (native-endian): added.
* src/parameter.c (Scm_ParameterSet): Make it return the previous value,
for the consistency to Scheme-level parameter behavior.
2009-11-29 Shiro Kawai <shiro@acm.org>
* src/gauche/float.h: Moved ScmIEEEDouble definition to src/number.c.
Since ARM's double endian needs special care, it's no longer
casually usable.
* src/number.c (check_armendian): On ARM, checks double's endian
at runtime.
(decode_double, Scm__EncodeDouble): Enclose ARM special handling
in these.
(Scm_DecodeFlonum, Scm_DoubleToHalf): No longer touches ScmIEEEDouble
directly.
* src/bignum.c (Scm_BignumToDouble): No longer touches ScmIEEEDouble
directly.
* configure.ac, src/gauche/config.h.in: Comment adjusted to reflect
above changes.
2009-11-28 Shiro Kawai <shiro@acm.org>
* ext/sxml/Makefile.in (SCMCOMPILE): Needs to add "provide" expr
in command line, since we removed explicit provides, but autoprovide
doesn't work in this particular case.
* src/gauche.h (SCM_ALIGN8): Constrains some Scheme objects to
be aligned in 8-byte boundary using __attribute__. See the comment
for the details.
* Many files: Removed (provide "...") idioms, for it is no longer
necessary with the autoprovide feature.
* lib/rfc/822.scm (date->rfc822-date): Added the reverse operation
of rfc822-date->date for the convenience.
2009-11-25 Shiro Kawai <shiro@acm.org>
* lib/rfc/http.scm (request-response): When server returns status
code 204 or 304, we should not try to retrieve the message body,
otherwise the function hangs waiting for the body.
2009-11-23 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen/literal.scm, lib/gauche/cgen/literal-uv.scm:
Merged literal-uv.scm into literal.scm.
2009-11-21 Shiro Kawai <shiro@acm.org>
* release 0.9
* examples/spigot, examples/mqueue-cpp: Updated to use the newer
stub forms.
* lib/gauche/cgen/stub.scm (process-expr-spec, process-call-spec):
As a transition from old (expr ...) and (call ...) form, we make
these forms check the ::<type> style return-type if the result
type is not given in these forms. We can't obsolete these forms
completely, for the new CiSE spec is not yet fixed and it won't
cover all cases (esp. C++ support is weak). So the stub file
may still use expr or call form if CiSE can't be used. However,
the stub can now use the new style of return type form, e.g.:
(define-cproc foo () ::<return-type> (expr "Some_C_Expr"))
instead of the old style:
(define-cproc foo () (expr <return-type> "Some_C_Expr"))
* ext/template.DIST, examples/spigot/DIST, examples/mqueue-cpp/DIST:
Exclude .svn subdir from tarball as well as CVS.
* lib/rfc/http.scm (consider-proxy): Fix host header handling with
proxy. Now the server given to :proxy only used for the connection.
The host request header is the destination server, which may
be overwritten by :host keyword argument. Patch for teppey.
2009-11-19 Shiro Kawai <shiro@acm.org>
* src/gauche.h (SCM_CHAR_VALUE): make sure it returns unsigned value.
2009-11-18 Shiro Kawai <shiro@acm.org>
* src/gauche.h: Include gauche/arch.h as it should be.
* src/main.c (version): Includes the architecture in output.
2009-11-15 Shiro Kawai <shiro@acm.org>
* lib/gauche/fileutil.scm (glob-fold-1): Fixed a bug that caused
an error on (glob "**").
2009-11-11 Shiro Kawai <shiro@acm.org>
* lib/rfc/http.scm (with-connection): Fixed to make a connection
to the proxy if it is specified (pointed by Naohiro NISHIKAWA).
2009-11-10 Shiro Kawai <shiro@acm.org>
* src/vmcall.c (ADJUST_ARGUMENT_FRAME): Fixed a boundary case
of CHECK_STACK when unfolding rest args. (Patch from enami).
2009-11-03 Shiro Kawai <shiro@acm.org>
* gc/dyn_load.c (GC_FirstDLOpenedLinkMap): Applied a patch
from enami to support the newest NetBSD-current.
NB: We avoid using __NetBSD_Prereq__, for its definition
was changed in incompatible way sometime around 4.99.x and
that made it unusable to test across wider range of
NetBSD versions.
* gc/misc.c, gc/alloc.c, gc/os_dep.c, gc_pthread_support.c,
gc/pthread_stop_world.c, gc/include/private/gcconfig.h,
gc/include/private/gc_priv.h: Back port pthread_cancel safe
patch from gc cvs head.
* gc_pthread_support.c (GC_new_thread): Remove duplicate entry
before registering a new one. This particular case happens
with glibc-2.7/i386, where GC_exit_handler isn't called when
the thread exits with pthread_exit() or pthread_cancel().
I'm not sure the real cause is in gc or glibc, but at least
this change workarounds the deadlock situation caused by the
failure of GC_exit_handler.
2009-10-28 Shiro Kawai <shiro@acm.org>
* ext/net/net.c, ext/net/net.ac, src/gauche/config.h.in
(HAVE_STRUCT_IFREQ_IFR_IFINDEX, HAVE_STRUCT_IFREQ_IFR_INDEX):
FreeBSD7.2 has ifreq.ifr_index instead of ifreq.ifr_ifindex,
so we check which is available. Patch from Naohiro NISHIKAWA.
2009-10-27 Shiro Kawai <shiro@acm.org>
* ext/zlib/zliblib.stub (Z_TEXT, Z_FIXED): Conditionally define
these, since older zlib doesn't have them.
2009-10-26 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen/stub.scm (process-body): Recognize obsoleted
(return <c-func-name>) and (return <type> <c-func-name>) to
issue a warning and treat them as 'call' forms. The extensions
that have not been updated recently may have thes forms, and
it will be inconvenient if we stop supporting them now.
2009-10-25 Shiro Kawai <shiro@acm.org>
* src/port.c (Scm_FdReady): Made it work with Windows pipe.
* src/syslib.stub (sys-get-osfhandle): Added this for low-level
tweaking on Windows.
* ext/termios/termios.scm (without-echoing): Added a high-level
utitily for reading input without echoing, which can be used
across platforms.
* lib/gauche/package/util.scm (get-password): Rewrote this using
without-echoing.
* lib/gauche/cgen/type.scm, ext/uvector/uvlib.stub.tmpl:
Moved stub type definitions of <s8vector> etc. from ext/uvector
to cgen/type.scm, since they are now supported by core.
* ext/termios/termiolib.stub: Added bunch of Windows Console API
on GAUCHE_WINDOWS.
2009-10-24 Shiro Kawai <shiro@acm.org>
* src/syslib.stub (Scm_MakeWinHandle, Scm_WinHandleP etc.),
src/system.c (Scm_WinProcessPID), src/gauche/system.h:
Created generic Windows HANDLE wrapper and redefined Windows
process handle API on top of it.
* src/scmlib.scm (%sys-escape-windows-command-line),
src/system.c (win_create_command_line),
lib/gauche/process.scm (shell-escape-string):
Moved Windows shell argument escape routine from shell-escape-string
to src/scmlib.scm, since it is also needed to implement
Scm_Exec on Windows correctly (well, almost. Windows does not
enforce consistent rules of parsing command lines, so all we can
do is cross our fingers.)
2009-10-21 Shiro Kawai <shiro@acm.org>
* src/system.c (Scm_SysExec, pipe), src/gauche/win-compat.h:
Support I/O redirection using pipes on Windows, and try to
align process exit status handling.
* src/port.c (Scm_PortFdDup), src/extlib.stub (port-fd-dup!):
Support these under Windows as well (via _dup2()). They are
not fully compatible (Windows seems to have some restrictions
on which file descriptors can be dup'ed?) but it's better than
nothing.
* src/error.c (Scm_SysError): On GAUCHE_WINDOWS, check both
errno and GetLastError; posix-compatible API uses the former
and Windows API uses the latter, and Scm_SysError doesn't know
which for sure. We always reset both errors after Scm_SysError
so we can guess that non-zero one reflects the actual error.
* src/syslib.stub (sys-stat): On GAUCHE_WINDOWS, remove trailing
path separator in PATH if any (excluding the root directory; e.g.
"/" or "c:\\" are untouched). This is because Windows stat()
raises error if there's trailing separator, except the root
directory case.
* src/main.c (main): On GAUCHE_WINDOWS, sets stdin, stdout and
stderr to binary mode. This will align gosh's behavior the
same on Windows and Unix, and save lots of troubles. Note that
applications that want to link libgauche.dll should take care
of this by themselves.
2009-10-20 Shiro Kawai <shiro@acm.org>
* src/syslib.stub (sys-unlink): On GAUCHE_WINDOWS, make file writable
before unlink(), since Windows doesn't allow unlinking a read-only
file.
2009-10-19 Shiro Kawai <shiro@acm.org>
* test/system.scm: Excluded fork&wait test on cygwin platform since
fork() on cygwin is so unreliable.
* src/mingw-exify: Updated to use 0.9 API.
* src/core.c (init_cond_features): Added a feature gauche.os.cygwin
on cygwin platform. It comes short to provide an illusion of
complete unix emulation, so the program may want to switch its
behavior.
* gencomp: Resurrected for the backward compatibility. It issues
warning to move on to precomp.
* src/gauche.h, src/gauche/load.h, src/gauche/hash.h, src/gauche/port.h,
src/main.c, src/test-vmstack.c, ext/Makefile.ext.in:
Removed GAUCHE_API_0_9 flags. Now 0.9 API is the default. The
backward compatibility API is available under a new flag,
GAUCHE_API_PRE_0_9.
2009-10-18 Shiro Kawai <shiro@acm.org>
* src/gauche/extend.h (SCM_INIT_EXTENSION): Revived data/bss area
registration code only for Cygwin; it still seems to need them.
* gc/configure.ac: Applied a patch to avoid adding -lpthread -ldl
when building on Cygwin, for it causes link error.
2009-10-17 Shiro Kawai <shiro@acm.org>
* src/vm.c (vm_finalize): Issue a warning when a thread is terminated
by an uncaught exception and its state is never retrieved by
thread-join!. Such a case must be a coding error, and usually
causes pain in debugging if such thread dies silently.
* src/exclib.stub, src/gauche/exception.h, ext/thread/thrlib.stub:
Moved thread exception definitions from the thread subsystem to
the core; we need <uncaught-exception> in the core to implement
the above feature.
* ext/threads/threads.c (Scm_ThreadJoin): Use SAEF_LOCK_BEGIN|END.
2009-10-16 Shiro Kawai <shiro@acm.org>
* src/gauche-install.in: Added -C|--canonical-suffix option that
renames *.sci to *.scm upon install. This is to avoid confusion
when both foo.sci and foo.scm happens to be installed.
* ext/Makefile.ext.in, ext/template.Makefile.in: Added -C option
to gauche-install.
2009-10-13 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen/cise.scm (define-cfn): Fixed a bug that didn't
escape identifiers for forward-declaration in record-static.
* src/extlib.stub (%vm-show-stack-trace): experimentally expose
this function for diagnostics.
2009-10-11 Shiro Kawai <shiro@acm.org>
* configure.ac: platform match for freebsd allows *freebsd, in order
to support kfreebsd (Patch from Jens Thiele).
2009-10-10 Shiro Kawai <shiro@acm.org>
* lib/rfc/http.scm (http-generic): adds user-agent header automatically,
using default value from the parameter http-user-agent.
Also supports :proxy option.
2009-10-09 Shiro Kawai <shiro@acm.org>
* lib/rfc/http.scm (http-compose-form-data, http-generic):
Support automatic multipart/form-data composition in
http-post and http-put.
2009-10-08 Shiro Kawai <shiro@acm.org>
* lib/rfc/http.scm (http-compose-query, http-generic): Support
application/x-www-form-urlencoded query composition in http-*
procedures.
2009-10-07 Shiro Kawai <shiro@acm.org>
* lib/rfc/mime.scm (mime-compose-message, mime-compose-message-string)
(mime-make-boundary): Added support of composing a MIME message.
(mime-parse-parameters, mime-compose-parameters): Expose those
APIs (the former renamed from mime-parse-parameter-value).
2009-09-29 Shiro Kawai <shiro@acm.org>
* src/gauche/gloc.h, src/gloc.c (Scm_GlocMarkConst,Scm_GlocUnmarkConst):
APIs for better encapsulation. Also dropped Scm_MakeConstGloc,
because of duplicated feature.
* src/module.c (Scm_Define, Scm_DefineConst): Factored out the
common parts, and make sure modules.mutex is unlocked.
2009-09-26 Shiro Kawai <shiro@acm.org>
* src/gauche/gloc.h, src/gloc.c,
src/gauche/module.h, src/module.c (Scm_HideBinding, Scm_FindBinding),
src/intlib.stub (%hide-binding): Added a hack to hide binding
inherited from parent modules. This feature is not for general
use; it is an internal tool to implement import's :except
and :rename qualifiers via intermediate module.
* src/compile.scm (process-import): Added support of :except
qualifier in import, using the above feature.
2009-09-24 Shiro Kawai <shiro@acm.org>
* src/compile.scm (import): Added support of :only qualifier
in import.
2009-09-23 Shiro Kawai <shiro@acm.org>
* src/module.c (Scm_FindBinding, Scm_ImportModule),
src/gauche/module.h, src/intlib.stub (%import-module),
src/compile.scm (import): Added a feature to import a module
with prefixed names. (import (MODULE :prefix PREFIX)) imports
exported bindings of MODULE into the current module, exposing
the symbols with PREFIX attached.
The C-level API Scm_ImportModules() is deprecated, since it
is not very convenient for the callers to call it with the
new prefixed format. Instead the C programs should call
Scm_ImportModule() for each module to be imported.
* src/main.c: Rewritten using Scm_ImportModule() instead of
Scm_ImportModules().
2009-09-21 Shiro Kawai <shiro@acm.org>
* src/core.c (Scm__MutexCleanup),
src/vm.c (process_queued_requests),
src/gauche/pthread.h (SCM_INTERNAL_MUTEX_SAFE_LOCK_BEGIN|END),
src/gauche/uthread.h (SCM_INTERNAL_MUTEX_SAFE_LOCK_BEGIN|END):
Abstracted the pattern of mutex lock/unlock with cleanup
handler installed.
2009-09-19 Shiro Kawai <shiro@acm.org>
* src/vm.c (process_queued_requests): Make sure the VM's lock
is unlocked when the thread is canceled while stopped.
Note: The same fix is needed wherever LOCK/UNLOCK pair contains
cancellation point.
2009-09-05 Shiro Kawai <shiro@acm.org>
* ext/digest/md5.*: Renamed MD5Final -> MD5_Final etc. to avoid
name conflict in Snow Leopard. Patch from KOGURO Naoki.
* gc/match_dep.c: Fix build problem on Snow Leopard.
Patch from KOGURO Naoki.
* src/symbol.c (Scm_Gensym), src/main.c (cleanup_main):
Suppress warning on printf directive size mismatch.
Patch from KOGURO Naoki.
* m4/ax_check_define.m4, configure.ac, acinclude.m4:
Fix build problem on Snow Leopard. Patch from KOGURO Naoki.
2009-08-26 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen/cise.scm (cise-translate): Added per-file cise
rendering support. This enables automatic generation of forward
prototype declarations of static procedures in the file.
2009-08-25 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen/cise.scm (<cise-env>, define-cise-toplevel): Added
"toplevel" context so that we can have a toplevel cise macro
that expands into toplevel cise forms.
(cise-render, cies-render-to-string): Because of the above change,
the optional argument to indicate the context now takes a symbol
either one of 'toplevel, 'stmt or 'expr, as opposed to the boolean
value.
* lib/gauche/cgen/stub.scm (define-cfn, process-expr-spec)
(c-literal-expr): Changed accordingly.
2009-08-23 Shiro Kawai <shiro@acm.org>
* ext/net/net.ac (net/if.h, struct ifreq): need sys/socket.h on OSX
to check these.
2009-08-21 Shiro Kawai <shiro@acm.org>
* src/number.c (MAX_EXPONENT): Changed to 325, since the least
absolute value of denormalized number (expt 2.0 -1024) would be
printed to 5.0e-324, so we do need to handle exponent -324 to
keep read/write invariance.
(iexpt10): handle cases where e is larger than pre-computed
table size. It can happen in legitimate input, although rarely.
* src/vm.c (Scm_VMFlushFPStack): Fixed a bug that forgot to scan
ARGP of in-stack continuation when flonum registers are flushed.
(Thanks to naoya_t for finding and providing reproduceable test
case.)
2009-08-20 Shiro Kawai <shiro@acm.org>
* src/portapi.c (Scm_PortSeek): Fixed to revert the buffer pointer
when a seek method of a procedural buffered port gives up the
operation. (See ext/vport/test.scm for the actual case).
2009-08-19 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen/cise.scm (.if): Changed preprocessor directive
macro from |#if| to .if, since the former is too intrusive in
the code.
(.cond, .include): Added these to generate preprocessor directives
#if..#elif..#endif and #include.
* src/*.stub, ext/syslog/syslog.scm: Changed accordingly.
2009-07-28 Shiro Kawai <shiro@acm.org>
* src/read.c (read_string),
src/gauche/char_*.h (SCM_CHAR_EXTRA_WHITESPACE_INTRALINE):
Fully support all intraline whitespace characters.
2009-07-27 Shiro Kawai <shiro@acm.org>
* src/read.c (skipws), src/gauche/char_*.h (SCM_CHAR_EXTRA_WHITESPACE):
Recognize all whitespace characters in the reader.
* src/list.c (Scm_DeleteDuplicates): Fixed a bug that SEGVs when
dotted list is given.
2009-07-26 Shiro Kawai <shiro@acm.org>
* lib/gauche/test.scm (prim-test, test-check): Changed the default
check procedure from equal? to a new test-check procedure. It
treats <test-error> objects specially, for the comparison of
error case is non symmetric. The old version handled error
cases by overloading object-equal? for <test-error>, but it is
awkward since object-equal? is expected to be symmetric.
* test/*, ext/*/test.scm: Rewrote *test-error* in error case tests
with test-error; the *test-error* variable is obsoleted.
2009-07-25 Shiro Kawai <shiro@acm.org>
* lib/rfc/uri.scm (uri-decompose-hierarchical): Changed to regard
empty PATH part as missing, and returns #f instead of "". It is
also consistent with rfc2396 section 3. (Pointed out by,
and tests provided by Hisashi Morita).
2009-07-24 Shiro Kawai <shiro@acm.org>
* src/gauche/symbol.h, src/symbol.c (Scm_WriteSymbolName): Made
symbol printing routine available for keyword printing.
* src/keyword.c (print_keyword): Escapes keyword name if it contains
weird characters.
* src/read.c (read_keyword): Supports :|...| style escaped keywords.
2009-07-06 Shiro Kawai <shiro@acm.org>
* lib/gauche/test.scm (test-error): Supersedes the global *test-error*
variable. Now the user can create a new <test-error> object for
each test, giving expected condition type, so that it will be
easier to test if the code raises a particular condition.
*test-error* variable is deprecated, and will fade away.
2009-07-03 Shiro Kawai <shiro@acm.org>
* src/syslib.stub (sys-stfrerror): avoid using 'errno' as argument
name, for it may collide with a system macro.
2009-07-02 Shiro Kawai <shiro@acm.org>
* src/read.c (read_shebang): Removed unnecessary EOF check.
2009-06-28 Shiro Kawai <shiro@acm.org>
* src/prof.c (collect_samples): Replaced a call to HashTableGet
for HashTableRef.
(Scm_ProfilerCountBufferFlush): Replaced a call to HashTableAdd
for HashTableSet.
2009-06-26 Shiro Kawai <shiro@acm.org>
* src/write.c, src/keyword.c: Replaced calls to obsoleted APIs
HashTableGet/Put for the new APIs HashTableRef/Set.
2009-06-25 Shiro Kawai <shiro@acm.org>
* src/symbol.c (symbol_print, Scm_MakeSymbol),
src/read.c (read_internal, read_escaped_symbol),
src/write.c (write_walk): Support #:symbol notation of uninterned
symbols.
* src/extlib.stub (string->uninterned-symbol, symbol-interned?):
Added.
2009-06-24 Shiro Kawai <shiro@acm.org>
* src/symbol.c (Scm_SymbolSansPrefix),
src/extlib.stub (symbol-sans-prefix): Added.
* src/symbol.c (Scm_Intern): Doh! Scm_Intern wasn't MT-safe. Fixed.
2009-06-15 Shiro Kawai <shiro@acm.org>
* src/gauche/vm.h (ScmVM): Use of queueNotEmpty flag had a race
condition. We ditched it and introduced separate flags for
atomicity.
Also dropped unused SCM_VM_BLOCKED state and introduced
SCM_VM_STOPPED state; the former is for blocked on system calls,
but it's too expensive to change the state for every syscall.
SVM_VM_STOPPED is for being stopped by other thread for debugging.
* src/core.c, src/signal.c, src/extlib.stub: Changed accordingly.
* src/vm.c (process_queued_requests),
ext/threads/threads.c (Scm_ThreadStop, Scm_ThreadCont),
ext/threads/thrlib.stub (thread-stop!, thread-cont!):
Implemented a hand-shake protocol to stop/continue a thread from
another thread.
* ext/threads/thrlib.stub (thread-state): Added.
2009-06-07 Shiro Kawai <shiro@acm.org>
* lib/rfc/http.scm (http-put, http-delete): Added. Patch from illness-P.
2009-06-01 Shiro Kawai <shiro@acm.org>
* lib/rfc/ftp.scm (ftp-size): Adjust transfer-type by the connection's
transfer-type before sending ftp SIZE request; the value is affected
by transfer-type, and some ftpd rejects SIZE request in ASCII mode
(since the server needs to scan the file to calculate effects of
CRLF conversions).
2009-05-31 Shiro Kawai <shiro@acm.org>
* lib/gauche/portutil.scm (copy-port): Make SIZE argument to accept
zero as a valid size; previously zero meant no size limit. This
argument was undocumented, so I hope this change won't affect
existing code.
2009-05-30 Shiro Kawai <shiro@acm.org>
* lib/www/cgi.scm (cgi-main): Change buffering mode of the current
error port so that httpd error log will be cleaner.
2009-05-20 Shiro Kawai <shiro@acm.org>
* ext/net/netaux.scm (call-with-client-socket): Added :input-buffering
and :output-buffering keyword arguments.
2009-05-02 Shiro Kawai <shiro@acm.org>
* src/gauche-package.in (compile): Fix a problem when --rpath-flag
is empty (e.g. on OSX)
2009-04-30 Shiro Kawai <shiro@acm.org>
* doc/corelib.texi (atan): fix description of 2-argument atan.
(atan y x) and (atan (/ y x)) are equivalent only when x and
y are both nonegative. Rewrote to use R5RS's definition.
2009-04-29 Shiro Kawai <shiro@acm.org>
* src/list.c, src/gauche.h (Scm_ArrayToListWithTail): Added new API.
* src/proc.c: Added 'optcount' slot to the procedure object.
* lib/gauche/procedure.scm (case-lambda),
src/intlib.stub (make-case-lambda-dispatcher): Rewrote case-lambda
implemetation to take advantage of non-consing optional arguments
(i.e. optional > 1). Simple benchmark showed 20x-80x speedup.
2009-04-27 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen/precomp.scm (compile-toplevel-form): Instead of
matchin toplevel define/define-macro/... literally, we override
special form definitions within compile-module to hook the special
actions. The former approach doesn't work if those special forms
are generated as the result of macro expansion.
The new approach may bread if the compiled source overrides
those special forms as well. See the comment near
"Special form handlers" for the details.
2009-04-24 Shiro Kawai <shiro@acm.org>
* src/gauche-package.in (compile),
lib/gauche/package/compile (gauche-package-compile)
(gauche-package-link):
Added --gauche-builddir option / :gauche-builddir keyword arg
to allow compiling extension using not-yet-installed Gauche.
* src/core.c (Scm_SimpleMain): Added for the convenience of
creating a compiled binary that kicks a Gauche script.
2009-04-23 Shiro Kawai <shiro@acm.org>
* src/gauche.h: include scmconst.h.
* lib/gauche/cgen/literal.scm (<cgen-scheme-real>): properly handles
inifinity and NaN flonum constants.
2009-04-22 Shiro Kawai <shiro@acm.org>
* src/system.c (Scm_SysExec),
src/syslib.stub (sys-exec, sys-fork-and-exec): Added support to
chdir() before exec(), by :directory keyword argument.
Dropped support of ancient-style API (sys-exec cmd args iomap).
* lib/gauche/process.scm (run-process): Added :directory keyword
argument.
2009-04-21 Shiro Kawai <shiro@acm.org>
* ext/sparse/ctrie.c (CompactTrieDelete): Fixed a bug that failed
to shrink tree properly.
(CompactTrieCheck): Added consistency checking routine.
(CompactTrieCopy): Added copy operation.
* ext/sparse/spvec.[ch]: Added SparseVectorCopy.
* ext/sparse/sptab.[ch]: Added SparseTableCopy. Fixed a bug in
SparseTableAdd in the edge case when hash keys conflict.
* ext/sparse/sparse.scm (sparse-table-copy, sparse-vector-copy):
Added.
2009-04-20 Shiro Kawai <shiro@acm.org>
* ext/sparse/sparse.scm: Added *-update!, *-push! and *-pop!.
* lib/gauche/cgen/stub.scm (cgen-genstub): Moved genstub main
functionarity here.
* src/genstub: only command-line processing remains.
2009-04-19 Shiro Kawai <shiro@acm.org>
* ext/sparse/spvec.[ch], ext/sparse/sparse.scm (sparse-vector-inc!):
Experimentally added.
(CompactTrieClear): Fixed a bug that segfaults when ctrie is empty.
2009-04-18 Shiro Kawai <shiro@acm.org>
* src/gauche/bits_inline.h (Scm__CountBitsInWord): Faster code.
(Benchmarks on Core2 Quad Q6600 2.4GHz 64bit: 11ns -> 6.2ns,
Core Duo L2400 1.66GHz 32bit: 10ns -> 8ns)
* ext/sparse/spvec.[ch], ext/sparse/sparse.scm: Added sparse uniform
vector support.
2009-04-17 Shiro Kawai <shiro@acm.org>
* src/gauche/bits.h: Added SCM_BITS_TEST_IN_WORD etc. for single-
word bit manipulation.
* ext/sparse/spvec.[ch], ext/sparse/sparse.scm: Revised implementation
of sparse vector; dropped extra leaf array and let it store values
directly in the ctrie's leaf node, which showed better performance
and memeory usage. Added delete!, exists? and iterators.
2009-04-16 Shiro Kawai <shiro@acm.org>
* lib/rfc/http.scm (receive-body-nochunked): Fixed the bug that made
http-get hang when Content-Length is 0. Patch from kzfm1024.
* src/compile.scm (pass1/extended-lambda),
lib/gauche/cgen/precomp.scm (cgen-precompile, cgen-precompile-multi):
precomp.scm has been using a new keyword arg syntax in extended
lambda (the one compatible to CL's), but that prevents svn trunk
from compiling on 0.8.14 since it doesn't understand the new syntax.
So we reverted the offending part temporarily, and changed
compile.scm to allow both syntax; they should be gone once we
roll out the next release.
(NB: You need fresh 0.8.14 installed to compile this revision)
2009-04-15 Shiro Kawai <shiro@acm.org>
* ext/sparse/sparse.scm, ext/sparse/sptab.c: Implemented dictionary
protocol to <sparse-table>.
(sparse-table-exists?): added.
2009-04-14 Shiro Kawai <shiro@acm.org>
* ext/auxsyslib.stub, ext/auxsys.scm, src/syslib.stub, src/autoloads.scm
(sys-chown, sys-lchown): Moved these from auxsys to core. The
primary motivation is to avoid file.util depending on auxsys
(the dependency causes a build problem). But in fact, I don't
remember why I factored these out to auxsys. Since loading time
isn't much issue now, probably I should consider merging all auxsys
into core again.
* ext/net/netlib.stub (socket-sendmsg, socket-buildmsg, socket-ioctl),
ext/net/net.c (Scm_SocketSendMsg, Scm_SocketBuildMsg,
Scm_SocketIoctl): Added these low-level stuff. SocketIoctl only
supports SIOCGIFINDEX for now.
* ext/net/net.ac, src/gauche/configure.h.in (HAVE_NET_IF_H,
HAVE_STRUCT_IFREQ): Added these checks to support socket-ioctl.
2009-04-10 Shiro Kawai <shiro@acm.org>
* libsrc/file/util.scm (create-directory-tree): Make :owner and
:group work with :symlink to change symlink's owner/group instead
of the file pointed by it. Note that :mode is ignored if :symlink;
we may honor :mode on systems that has lchmod in future.
(check-directory-tree): Fix bug in attribute check.
* src/gauche-install.in: Changed -p option to take actual path prefix
instead of the number of path components to strip. It is rather
useful to make it so to strip $(srcdir) in the make rules.
* src/precomp, lib/gauche/cgen/precomp.scm: Support multiple Scheme
sources to precompile into single DSO. Each source generates
individual *.sci file, which includes dynamic-load form with
:init-function to initialize the corresponding part of DSO.
It is the key to solve the dependency problem.
The API and functionality are not fixed yet; especially we need
to redesign naming convention of init function name, since currently
we can't have more than one source file with the same basename
(e.g. foo/bar.scm and baz/bar.scm).
2009-04-09 Shiro Kawai <shiro@acm.org>
* src/load.c (Scm_DynLoad): Allow multiple initialization function
in a DSO, in order to support precompiling multiple Scheme sources
(modules) into single DSO.
2009-04-07 Shiro Kawai <shiro@acm.org>
* src/load.c (Scm_DynLoad): Turned the obsoleted third argument
into 'flags' argument for future extension.
* src/read.c (read_shebang): Fixed a problem that left incorrect
VM's numVals after calling shebang handler.
2009-04-06 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen/precomp.scm (check-first-form-is-define-module):
We can't read entire source first, since it may contain srfi-10
extended reader syntax precomp is not aware of. Instead we just
read the first sexp to check define-module, then read and process
forms one by one.
* ext/*: Removed dependency on ext/uvector. Extension modules only
need the uvector features built into core, so they don't need
to link DSO in ext/uvector. Now we can avoid hairy dependency
issues at build time.
2009-04-05 Shiro Kawai <shiro@acm.org>
* ext/*: Modified to match the new naming convention of DSO files
and generated scheme interface files (except uvector, for some
external modules depend on the name "libgauche-uvector.so" yet).
Also removed *_head.c/*_tail.c magics; they are no longer relevant
with modern compilers.
* src/precomp: Support --strip-prefix and --strip-prefix-all options.
Added short options.
* lib/gauche/cgen/precomp.scm: Recognize export-if-defined form.
* src/genconfig.in: Write to tmp file then rename. Otherwise
parallel make may grab a partially written file and fail.
2009-04-04 Shiro Kawai <shiro@acm.org>
* src/precomp, lib/gauche/cgen/precomp.scm: Reworked API. Since
'ext-module' should be generated for each scheme file that
implements individual modules, there's no point splitting
cgen-with-ext-module API. For the convenience of converting
Scheme libraries into precompiled DSO + ext-module file, we set
a new convention: A Scheme library "foo/bar.scm" is to be
precompiled into "foo--bar.so" and "foo/bar.sci".
Since we can now infer ext-module file name, --ext-module option
for precomp isn't a necessary condition to generate ext-module
file and to generate extention initializer. Now ext-module
file is generated if the source contains define-module form
at the beginning, and extension initializer is generated by
--ext-main option. The --ext-module option is left mainly for
backward compatibility.
2009-04-02 Shiro Kawai <shiro@acm.org>
* src/load.c (Scm__InitLoad): Recognize "sci" (Scheme Interface)
as a valid suffix as well as traditional "scm". "sci" takes
precedence, and to be used for generated interface files by
the precompiler.
(Scm_Require): Fixed where it assumed "scm" suffix.
* src/precomp: Renamed from gencomp to reflect its function.
* */Makefile.in: Changed accordingly.
* src/gauche-install.in: Added -p option.
* test/scripts.scm: Start adding tests for script utilities.
2009-04-01 Shiro Kawai <shiro@acm.org>
* libsrc/file/util.scm (create-directory-tree, check-directory-tree):
Added.
2009-03-31 Shiro Kawai <shiro@acm.org>
* src/compile.scm (pass1/extended-lambda): Fixed the case when
:rest and (:optional and/or :key) are both specified.
* src/scmlib.scm (exit-handler): Let the default exit handler add
newline to the output.
2009-03-30 Shiro Kawai <shiro@acm.org>
* src/gencomp, lib/gauche/cgen/precomp.scm: Some modifications to
support muliple scm files into one DSO case. This version is still
not good enough; if the source consists of multiple modules,
each modules should have corresponding ext-module file instead of
just one in the current version. But then, who is responsible
to load the common DSO? Trying to find better pattern.
2009-03-28 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen/literal.scm (<cgen-scheme-string>): Properly
escape emitted C string constants.
2009-03-27 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen/literal.scm, lib/gauche/cgen/literal-uv.scm:
Added support for uvector literals. (NOTE: To build this revision
you have to use 0.8.14 as host Gauche. The bug in %uvector-ref
inlining support, which was fixed by the previous commit, would
interfere with this module. See also the comment in literal-uv.scm
and don't forget to merge it into literal.scm after releasing the
next version.)
* src/extlib.stub (uvector-length, uvector-immutable?, SCM_UVECTOR_*):
Expose some more uvector stuff here to support uvector literal
in cgen.
* src/compile.scm (%uvector-ref): Fix the inliner to emit UVEC-REF
only when 'type' arg is a constant integer.
2009-03-26 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen/precomp.scm (cgen-with-ext-module): ensure the
directory to put ext module file.
* lib/gauche/cgen/literal.scm (cgen-make-literal)
(<cgen-user-defined-type>, infer-literal-handler): Allow precompiler
to embed a constant value of user-defined type, as far as the type
has external representation using SRFI-10 syntax.
* src/read.c (Scm_GetReaderCtor), src/extlib.stub (%get-reader-ctor):
Added interface to obtain reader constructor.
* src/read.c (Scm_DefineReaderCtor): Added an argument for future
extension of making reader-ctor module-aware.
* lib/gauche/cgen/precomp.scm: Removed old cruft and reorganized
the source a bit.
* src/module.c (Scm_MakeModule): Made anonymous module name's name
to #f instead of '|#|. I planned this change long time ago, but
apparently forgot to implement it. It shouldn't affect existing
code.
2009-03-25 Shiro Kawai <shiro@acm.org>
* src/gauche.h (SCM_IGNORE_RESULT): fix again to properly fool gcc.
* src/gencomp, lib/gauche/cgen/precomp.scm: Moved gencomp functionality
into gauche.cgen.precomp module.
2009-03-23 Shiro Kawai <shiro@acm.org>
* ext/sparse/sparse.scm (sparse-table-fold): fix a bug about the end
marker.
* ext/sparse/spvec.c (g_desc): elementAtomic should be FALSE.
2009-03-22 Shiro Kawai <shiro@acm.org>
* ext/sparse: Renamed spvector for sparse-vector and sptable for
sparse-table. It's more verbose, but abbrev form seems to lack
consistency.
2009-03-21 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen/stub.scm (process-body): Fix the case when
C routine calls Scm_Values*. In such case, the stub generator
doesn't need to generate Scm_Values* code, but just passes
the return value from C routine as if it returns a single value.
* src/write.c (Scm_Vprintf): Support '*' in the precision and width
position of the format directives.
* src/hash.c (insert_entry): Clears old bucket array when hashtable
is extended, in order to reduce inadvertent retention of garbages.
(Scm_HashString): Allow modulo == 0.
* ext/sparse: Added sparse data structures (initially just a sparse
vector; eventually we'll add sparse uniform vectors and sparse
hashtable---hashtable using sparse vector as a backend store).
The main advantage of sparse vectors over hashtables is that it
behaves better in memory consumption when structures with large
number of elements (like >1M) are repeatedly created and discarded.
Although each sparse vector uses more memory than a hashtable of
the same number of elements, large hashtables are more likely to
become "dead memory", because of its large bucket vector.
2009-03-19 Shiro Kawai <shiro@acm.org>
* src/Makefile.in: added gauche/bits_inline.h
* src/gauche/bits_inline.h, src/bits.c: Splitted some useful and
performance-critical routines from bits.c into a separate header.
The header is not for general inclusion; only those code that
needs such routines should explicitly include it.
2009-03-18 Shiro Kawai <shiro@acm.org>
* src/gauche.h (SCM_IGNORE_RESULT): Added this macro to silence
"ignoring return value" warnings when the return value is
intentionally ignored.
* src/core.c (Scm_Abort), src/string.c (Scm_DStringDump):
Using SCM_IGNORE_RESULT.
2009-03-17 Shiro Kawai <shiro@acm.org>
* lib/gauche/dictionary.scm (<bimap>): Added bidirectional map.
(dict-get, dict-put!, dict-exists?, dict-delete!): Completed
dictionary interface protocol.
* lib/dbm.scm (dict-get, dict-put!, dict-exists?, dict-delete!):
Adapted to the new dictionary protocol.
* test/dict.scm: added.
2009-03-10 Shiro Kawai <shiro@acm.org>
* ext/net/addr.c: Allocates <sockaddr-*> instances as ATOMIC to
reduce the risk of false pointers.
* src/core.c (Scm_Abort): Tells the compiler that we intentionally
ignore the return value of write(2). Newer gcc whined on it.
2009-03-01 Shiro Kawai <shiro@acm.org>
* src/gauche/extend.h (SCM_INIT_EXTENSION): Redefined this macro
to no-op. The old scheme of registering data/bss start/end by
this macro is no longer relevant, since modern linkers doesn't
keep the relative locations of static symbols anyway. Eventually
we'll make *_head.c/_tail.c fade out as well.
2009-02-28 Shiro Kawai <shiro@acm.org>
* src/string.c (Scm_StringCiCmp): a couple of bug fix, thanks to
Tsugutomo Enami.
2009-02-26 Shiro Kawai <shiro@acm.org>
* src/vmcall.c (ADJUST_ARGUMENT_FRAME): Fix CHECK_STACK assertion
condition and no optargs case in APPLY_CALL.
2009-02-23 Shiro Kawai <shiro@acm.org>
* lib/util/toposort.scm (topological-sort): Fix the code that locally
shadows '=' by the given optional argument, that breaks when the
optional equality predicate isn't compatibile with numeric comparison.
2009-02-22 Shiro Kawai <shiro@acm.org>
* src/vminsn.scm: Bug fix: added some missing SCM_FLONUM_ENSURE_MEMs.
* src/vm.c (Scm_VMFlushFPStack), src/vminsn.scm ($values):
Allow register flonums in vm->vals registers. Make sure they're
moved to heap when FP stack is flushed.
* src/vminsn.scm (UVEC-REFI), src/compile.scm: An experimental code
to add UVEC-REFI instruction. Not enough evidence is collected
to support the instruction, though, so they are commented out
in this commit.
* src/compile.scm (attach-inline-transformer): Experimentally added
a hook for pass1 inliner. It's still highly experimental and
purely for internal use.
* ext/uvector/uvutil.scm: Renamed from uvseq.scm. Inline expand
TAGvector-ref into %uvector-ref using inline transformer.
2009-02-21 Shiro Kawai <shiro@acm.org>
* ext/uvector/uvlib.stub.tmpl: Flag :fast-flonum for uvector arithmetic
(e.g. TAGvector-add etc.) The second arg can be a register flonum.
* ext/uvector/uvector.c.tmpl (arg2_check): Fixed a bug that passed
too few arguments to Scm_Error.
* src/vminsn.scm (NUMBERP, REALP): Added instructions.
* src/stdlib.stub (number?, complex?, real?, rational?): Use new
instructions for inline.
* src/stdlib.stub (numcmp): Rewrote =, <, <=, >= and > using :optarray
to avoid consing in 3- and 4-ary cases.
* src/number.c (Scm_NumCmp): Deferred SCM_FLONUM_ENSURE_MEM until
it's absolutely necessary, reducing flonum allcation.
* lib/gauche/cgen/stub.scm: Added support of :optarray argument
spec; it allows SUBR to receive optional arguments as a C array of
ScmObj.
* ext/uvector/uvector.c.tmpl, ext/uvector/uvector.h.tmpl,
ext/uvector/uvlib.stub.tmpl: Changed 'TAGvector' function using
:optarray argument spec, so that if the argument list is short
it won't cons.
2009-02-20 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen/stub.scm, src/vmcall.c (ADJUST_ARGUMENT_FRAME):
Made SUBR's :optional argument does not cause caller to cons
the optional arguments. Improved performance quite a bit,
especially when passing flonums in optional args (if optional args
are consed, the flonums have to be moved to the heap; now it can
stay in the flonum stack).
2009-02-17 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen/stub.scm (process-cproc-args): Code cleanup.
* src/vmcall.c (ADJUST_ARGUMENT_FRAME),
src/gauche.h (ScmProcedure): Allow procedure->optional to be more
than 1. This is preparation for optional arg handling optimization.
2009-02-15 Shiro Kawai <shiro@acm.org>
* src/gauche/vector.h, src/vector.c, src/extlib.stub (%uvector-ref):
Experimentally added internal support of generic uvector referencer.
* src/vminsn.scm (UVEC-REF), src/compile.scm: Experimentally added
instruction for %uvector-ref
* ext/uvector/uvlib.stub.tmpl, ext/uvector/uvector.h.tmpl,
ext/uvector/uvector.c.tmpl, ext/uvector/uvgen.scm:
Let *vector-dot routine to take advantage of FFX.
* lib/gauche/cgen/type.scm: Fixed boxer definition of <float>,
<double> and <real> to use ScmVMReturnFlonum to take advantage
of FFX. Also added <uvector> to builtin types, since it is now
supported in the core.
2009-02-14 Shiro Kawai <shiro@acm.org>
* src/gauche/vector.h, src/vector.c, ext/uvector/uvector.c.tmpl,
ext/uvector/uvector.h.tmpl: Moved definition of ScmUVector structure,
constructors, and <uvector> classes from ext/uvector to the core.
The role of uniform vector has gotten bigger, for it is used
to treat binary data in the Scheme world. It is awkward to require
extensions to link ext.uvector only to use ScmUVector structure.
The utility procedures for uvectors remain in ext.uvector.
NOTE: This changes definition of type-specific uniform vectors
such as Scm_S8Vector; the difference is the type of 'elements' field.
As long as you access uvector elements using SCM_*VECTOR_ELEMENTS
macro, this change shouldn't affect your code.
2009-02-03 Shiro Kawai <shiro@acm.org>
* ext/auxsys/auxsys.scm (sys-realpath): Fixed to follow '..'
correctly and other corner cases, thanks to Tsugutomo Enami.
2009-02-01 Shiro Kawai <shiro@acm.org>
* ext/auxsys/auxsys.scm (sys-realpath): realpath(3) can be not safe
(Linux manpage recommends not to use it), so we reimplemented it
in Scheme.
2009-01-28 Shiro Kawai <shiro@acm.org>
* src/gauche.h, src/gauche/module.h, src/Makefile.in: Splitted
ScmModule related declarations into a separate header.
2009-01-19 Shiro Kawai <shiro@acm.org>
* ext/sxml/sxml/tree-trans.scm.in: Added missing 'use srfi-11'.
2008-12-20 Shiro Kawai <shiro@acm.org>
* INSTALL.in: Updated some instructions.
* src/geninsn, lib/gauche/vm/insn-core.scm: Allow :obsoleted flag
in the insturction definition to suppress emission of the particular
combined instructions. It is a step before removing them
(we can't just remove them from vminsn.scm, since the current
release of Gauche would generate them when compiling the trunk
code, and the trunk VM must be able to execute them).
* src/vminsn.scm: Add :obsoleted flag to LREF0-PUSH-GREF-* insns.
2008-12-16 Shiro Kawai <shiro@acm.org>
* src/geninsn (construct-vmbody): Fixed handling of insns that combine
more than two basic insns. In the previous code, if you want an
insn A-B-C, you have to have the insn B-C. Now you don't need to.
(You still need A-B, for the insn combine state machine can only
keep one instruction in a queue; this limitation should be addressed
sometime in future.)
* src/vminsn.scm: Removed NUMADDI-PUSH, for it is no longer needed
by the above change.
2008-12-13 Shiro Kawai <shiro@acm.org>
* src/vminsn.scm, src/compile.scm: Experimentally added supports
for combined instructions: LREF-VAL0-BNUMNE, LREF-VAL0-NUMADD2,
NUMADDI-PUSH, LREF-NUMADDI, LREF-NUMADDI-PUSH and LREF-RET. Some
of these combinations frequently appear in typical loop
constructs. This change improves performance slightly (about 7-8%
in tak). The improvement is not so much as expected, though, so
we might revert this if we find more fundamental improvements.
* src/gauche/code.h (SCM_VM_INSN_CODE): utilize full 12bits for code.
2008-12-09 Shiro Kawai <shiro@acm.org>
* lib/util/combinations (but-kth, permutations, permutations*,
permutations-for-each, permutations*-for-each, combinations,
combinations*, combinations-for-each, combinations*-for-each):
Optimized a bit.
2008-12-06 Shiro Kawai <shiro@acm.org>
* src/gauche.h (ScmFlonum): Make ScmFlonum a structure containing
double instead of just a bare double; some 32bit processors/compilers
do not align bare double on 8-byte boundary, but they do a struct
that containing a double.
* src/number.c (Scm_MakeFlonum), src/gauche/vm.h (Scm_VMReturnFlonum):
Changed accordingly.
2008-12-04 Shiro Kawai <shiro@acm.org>
* src/gauche.h (struct ScmClassRec, SCM__DEFINE_CLASS_COMMON):
Changed the initial element of the ScmClass structure so that it is
likely to be placed in 8-byte align boundary on ILP32 machines.
2008-11-28 Shiro Kawai <shiro@acm.org>
* lib/rfc/ip.scm (ip-version, ip-header-length, ip-protocol,
ip-source-address, ip-destination-address): Added 'offset' argument,
since it is much needed in the practical situation. THIS IS AN
INCOMPATIBLE CHANGE. Hope there are not many people who have
used this obscure module.
2008-11-27 Shiro Kawai <shiro@acm.org>
* src/load.c (Scm_LoadFromPort): Fixed a bug in initilalizing
load_from_port.
2008-11-23 Shiro Kawai <shiro@acm.org>
* ext/digest/sha2.h: Incorporate checks of endianness and uintXX_t
from gauche/config.h.
2008-11-22 Shiro Kawai <shiro@acm.org>
* src/load.c (Scm_Require, Scm_Provide): Implemented 'autoprovide'
feature. If (require "X") causes loading of X.scm, and there's no
'provide' form in X.scm, the feature "X" is provided upon successful
completion of loading X.scm as if there is (provide "X") form
at the end of X.scm. If X.scm contains 'provide' form,
autoproviding is turned off. (provide #f) can be used to disable
autoproviding and not providing any feature.
2008-11-21 Shiro Kawai <shiro@acm.org>
* src/load.c (Scm_LoadPacketInit), src/gauche/load.h (ScmLoadPacket):
Cleadned up the structure. Added Scm_LoadPacketInit to keep
room of future extension.
2008-11-20 Shiro Kawai <shiro@acm.org>
* src/load.c (Scm_Load, Scm_LoadFromPort),
src/stdlib.stub (load), src/extlib.stub (load-from-port):
Moved definitions of Scheme's 'load' and 'load-from-port' into
stub files for simplicity.
* lib/gauche/cgen/cise.scm (dopairs): Added a new macro.
(render-rec): Added some heuristics to distinguish types and
expressions; some operators (such as sizeof) and macros may take
types instead of expressions as arguments, and they need to be
rendered differently. This reverts the kludge of sizeof introduced
on 11/18.
* lib/gauche/cgen/stub.scm (process-cproc-args): Switched the stub
function's lambda keywords from
{&optional,&keyword,&rest,&allow-other-keys} to
{:optional,:key,:rest,:allow-other-keys}. The latter set is
consistent with the extended lambda syntax, and it doesn't need to
treat ordinary symbols such as &optional specially.
The old lambda keywords are supported for the backward compatibility,
but will eventually fade out.
(process-setter): Make static setter definition handling consistent
with define-cproc.
* *.stub: Changed accordingly.
2008-11-19 Shiro Kawai <shiro@acm.org>
* src/extlib.stub (%open/allow-noexist?): Check errno==ENXIO as well.
2008-11-18 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen/stub.scm (declcode): Added 'declcode' directive
to insert raw code in the decl part. Traditionally, the first
raw string in the stub file has served for this purpose, but it
won't work when the stub stuff is embedded by inline-stub, since
this special handling of the first raw string is treated specially
only by genstub. It is better to be explicit. (The special
treatment by genstub remains only for the backward compatibility.)
(define-cmethod): Allow the new cproc body syntax here as well.
* lib/gauche/cgen/sice.scm (sizeof): Made sizeof a cgen macro to
allow e.g. (sizeof struct foo).
2008-11-17 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen/cise.scm (cise-render-typed-var): Allow expr
in size part of array declaration.
(list): fixed a bug when many elements are given.
* ext/auxsyslib/auxsyslib.stub, ext/binary/binarylib.stub,
ext/dbm/{gdbm,ndbm,odbm}-lib.scm, ext/digest/{md5,sha}-lib.scm:
Rewrote using new stub syntax.
* ext/charconv/convaux.scm, ext/charconv/convlib.stub:
Made convaux.scm absorb convlib.stub.
* lib/gauche/cgen/stub.scm: Changed define-cproc flag syntax, and
supports a more concise way for the case when C function takes
the same arguments as Scheme one (the old 'call' clause).
'code', 'call', 'expr', and 'body' clauses are deprecated.
Old 'return' clause support is finally omitted.
* src/*.stub, ext/uvector/uvlib.stub.tmpl: Changed accordingly.
2008-11-15 Shiro Kawai <shiro@acm.org>
* src/syslib.stub: (sys-rename, sys-remove, sys-chdir, sys-mkdir,
sys-chmod, sys-fchmod, sys-link, sys-close, sys-rmdir, sys-truncate,
sys-ftruncate, sys-symlink): Now returns #<undef>
* lib/gauche/cgen/stub.scm (define-cproc): Introduced a new syntax
of define-cproc to specify return-type, eliminating the necessity
of body form, allowing more concise definition, and being more
consistent with define-cfn.
* src/*.stub: Changed using the new define-cproc syntax whenever
possible.
* lib/gauche/cgen/cise.scm
(dolist, dotimes, |#if|): Added new cise macros.
(cise-render-to-string): Added an utility api.
* src/objlib.scm: Integrated moplib.stub into objlib.scm using
inline-stub.
* src/moplib.stub: Removed.
* src/core.c, src/Makefile.in: Changed accordingly.
2008-11-14 Shiro Kawai <shiro@acm.org>
* src/vminsn.scm: Removed obsoleted VM instructions, and rearranged
the order of some instructions. Developers should rebuild from
maintainer-clean to make sure precompiled files are in sync.
* src/stdlib.stub (%complex->real/imag): Removed; this API is
superfluous, since calling real-part and imag-part separately
doesn't hurt performance at all.
* src/gauche.h etc: Integrated fast flonum extension (FFX)
(cf. http://portal.acm.org/citation.cfm?id=1408687 ). This
boosts up speed of programs involving heavy floating-point number
calculation.
It can be turned off by changing #define GAUCHE_FFX 1 to
#define GAUCHE_FFX 0 in gauche.h; if you find suspicious behaviors
(like incorrect result of flonum calculation), recompile without FFX
to see if it is the reason.
2008-11-13 Shiro Kawai <shiro@acm.org>
* lib/gauche/package/compile.scm (gauche-package-compile-and-link):
Fix the :output keyword arg for the filnal DSO file affecting
individual C-file compilation inadvertently.
2008-11-11 Shiro Kawai <shiro@acm.org>
* src/gauche/system.h (SCM_SYS_STAT_STAT): wrap access to the statrec
field by a macro.
* src/system.c, src/syslib.stub: changed accordingly.
2008-11-09 Shiro Kawai <shiro@acm.org>
* src/gauche/memory.h: Removed, since Boehm GC's inline macros have been
changed since 7.0 and are no longer straightforward to use.
2008-11-08 Shiro Kawai <shiro@acm.org>
* configure.ac, ext/zlib/zlib.ac, ext/zlib/Makefile.in: Check zlib
availability, and allow --with-zlib configure option to specify
zlib location.
2008-11-07 Shiro Kawai <shiro@acm.org>
* ext/zlib/*: Renamed deflate-port/inflate-port for deflating-port/
inflating-port, since deflate/inflate are verbs.
(zlib-version): made it a function instead of a constant.
* lib/gauche/cgen/stub.scm (process-call-spec): Allow symbol as the
C function name in 'call' clause of define-cproc. (I'm not sure
why I didn't allow this. Maybe just an overlook.)
* lib/gauche/cgen/cise.scm (canonicalize-vardecl): Allow more flexible
notation of typed variables, e.g. var::type, var:: type, var ::type
are all treated as (var :: type) in the define-cfn argument list,
and (var::type [init]), (var:: type [init]), or (var ::type [init])
are all treated as (var :: type [init]) in the let* variable list.
* ext/zlib/zliblib.stub, ext/dbm/ndbm-lib.scm, ext/dbm/odbm-lib.scm,
ext/dbm/gdbm-lib.scm: Modified to reflect the above change.
2008-10-31 Shiro Kawai <shiro@acm.org>
* ext/zlib/zlib.scm, ext/zlib/Makefile.in: fixed for zlib.scm to be
installed into proper location.
2008-10-30 Shiro Kawai <shiro@acm.org>
* ext/zlib/*: Added rfc.zlib (written by Rui Ueyama).
Probably we should add libz check in the main configure.ac later.
2008-10-27 Shiro Kawai <shiro@acm.org>
* src/compile.scm (pass1/extended-lambda): Changed keyword argument
spec with different variable name to match the CL-style, i.e.
you write (define (foo x :key ((:bar baz) 'init)) ...) to let
the baz receives the value supplied to the keyword :bar.
Also extended :allow-other-keys to take optional argument that
receives unrecognized keyword-value list.
* test/package.scm: Added to test gauche.package.*.
* test/cgen.scm: Added to test gauche.cgen.*.
* lib/*, libsrc/*: Rewrote most let-keywords*/let-optionals* with
extended lambda experimentally to see how it looks like in the
real code.
2008-10-09 Shiro Kawai <shiro@acm.org>
* src/compile.scm (compile-toplevel-form, do-it): Instead of
recognizing inline-stub literally in compile-toplevel-form, we
override inline-stub macro in the compile-module. It allows
macros that generates inline-stub form.
* src/gauche/macro.h, src/gauche/code.h, src/gauche/extend.h,
ext/uvector/uvector.h.tmpl: Increase C++ friendliness.
* src/extlib.stub (%open-input-file, %open-output-file):
When :if-does-not-exist is #f or :if-exists is #f, these procedures
have ignored all errors, even if open(2) failed with other reasons
such as EPERM. Now we check errno for these cases and raise
appropriate <system-error> if the error reason is not expected one.
2008-10-08 Shiro Kawai <shiro@acm.org>
* ext/digest: Added support of SHA2 (SHA224, SHA256, SHA384 and
SHA512), using Aaron Gifford's implementation.
2008-10-07 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen/cise.scm (cise-render-typed-var): Allow array
type declaration e.g. (.array (unsigned char) (10 10)).
* src/compile.scm, src/intlib.stub: Moved some C-implemented
compiler-internal routines from intlib.stub to compile.scm
using inline-stub.
2008-10-06 Shiro Kawai <shiro@acm.org>
* release 0.8.14
2008-10-05 Shiro Kawai <shiro@acm.org>
* test/rfc.scm, ext/net/test.scm: Avoid using sys-fork to run the
test server process; fork doesn't go well with windows.
* ext/net/netlib.stub (sockaddr-name): correctly identifies the
length of pathname of the unix domain socket; it can be 0.
2008-10-03 Shiro Kawai <shiro@acm.org>
* ext/net/netlib.stub (SHUT_RD, SHUT_WR, SHUT_RDWR): defines
constants for 'how' argument of socket-shutdown.
* configure.ac, ext/Makefile.in, DIST_EXCLUDE: Exclude ext/peg and
lib/rfc/json.scm; these are not ready for 0.8.14 release.
* src/number.c (read_real): Fixed the bug that misunderstands the
case when no integral part appears right after the initial sign
(e.g. ++i or +/4).
2008-09-18 Shiro Kawai <shiro@acm.org>
* lib/rfc/ip.scm (ipv4-global-address?): added.
* src/Makefile.in (scmlib.c, objlib.c): added dependency on
../lib/gauche/vm/insn.scm.
2008-09-11 Shiro Kawai <shiro@acm.org>
* src/scmlib.scm (inline-stub): just issue warning instead of
error, for it is sometimes useful to 'load' the source with
inline-stub during debugging.
2008-09-04 Shiro Kawai <shiro@acm.org>
* src/scmlib.scm (exit, exit-handler): Implemented exit-handler
feature to hook application's exit operation. See the manual
for detailed explanation and design rationale.
* src/builtin-syms.scm (SCM_SYM_PLUSP): defined to an wrong symbol
'+?'; should be '++'.
2008-09-02 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen/cise.scm (define-referencer): Allow C++-style
method invocation: (-> A (B C) (D E)) expands to "A->B(C)->D(E)".
2008-08-31 Shiro Kawai <shiro@acm.org>
* src/vm.c (wna), src/vmcall.c, src/proc.c (Scm_CurryProcedure),
src/gauche.h, src/builtin-syms.scm, src/intlib.stub,
lib/gauche/procedure.scm:
Experimentally added some code to support automatic currying.
This version still has an issue (see the comment in src/proc.c),
so the feature is commented out.
2008-08-29 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen/cise.scm (values): Expands 'values' cise macro
into appropiate Scm_Values* call.
* src/gauche/experimental/lamb.scm (^., ^*): added shorthand notation
of match-lambda and match-lambda* experimentally.
2008-08-28 Shiro Kawai <shiro@acm.org>
* src/extlib.stub (%open-input-file): Use Scm_SysError when
Scm_OpenFilePort returns #f, since if it returns #f the reason
is the failure of open(2).
2008-08-26 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen/unit.scm (cgen-safe-comment): Added.
* lib/gauche/cgen/literal.scm, src/gencomp: Emit more comments into
generated C file for ease of debugging.
* src/gencomp, src/scmlib.scm (declare): Added ad-hoc 'declare' syntax
to support keep-private-macro in source instead of command-line args
for gencomp. This is a purely temporary solution, since it won't
be needed once we can byte-compile hygienic macros. It is
convenient for the time being to produce some extensions, but it
will disappear soon.
2008-08-23 Shiro Kawai <shiro@acm.org>
* src/syslib.stub (sys-lstat): On windows, make it behave just like
sys-stat. Windows doesn't have lstat(), but since it works the
same as stat() when path is not a symlink, it is reasonable to
make it so (and it reduces one headache of cross-platform dev.)
* ext/peg/peg-lib.scm: Renamed semantic-value-finalize! to
rope-finalize, in order to reflect its function more clearly,
and also avoid unecessary consing. Added $<<.
(This is still a temporary snapshot; large restructuring is
planned.)
* lib/rfc/json.scm: Changed accordingly.
2008-08-21 Shiro Kawai <shiro@acm.org>
* src/getdir_darwin.c (get_install_dir): fixed a bug that releases
unretained resource. Based on a patch by Naoya Tozuka.
* lib/gauche/experimental/*: Moved some weird syntactic experiment
into separate modules, so that it will be easy to track their users
in case if we want to change or drop the support. NOTE: the '$'
experiment is now in gauche.experimental.app. (used to be built-in).
* src/autoloads.scm, lib/gauche/procedure.scm: Moved $ and $* to
gauche.experimental.app. Experimentally added .$ as an alias of
compose.
* src/Makefile.in (INSTALL_SUBHEADERS): added some missing headers.
2008-08-20 Shiro Kawai <shiro@acm.org>
* src/port.c (SCM_PORT_CASE_FOLD), src/gauche/port.h,
src/read.c, src/gauche/reader.h: Moved the case folding flag from
read context to port.
* src/scmlib.scm, src/extlib.stub (port-case-fold-set!): Changed
accordingly.
* src/core.c: Moved InitVM much earlier than InitPort, since now
VM's runtime flag affects the port's case folding flag. The VM's
standard I/O are set in InitPort.
* **/*.scm: Cleaned up use of |-escapes meant to work for both case-
sensitive and case-insensitive mode. Now we have #!no-case-fold,
so we can ensure the file is read in case-sensitive mode.
* src/gauche/reader.h, src/gauche.h: splitted reader API from gauche.h
to reader.h
* src/read.c (ScmReadContext, Scm_MakeReadContext): made read context
a Scheme object of class <read-context>.
* src/class.c, src/load.c: changed accordingly.
* src/portapi.c, src/gauche/port.h: Added 'bytes' field in ScmPort
that counts the cumulative bytes read from the port. It is used
by the reader to distinguish the script's shebang line and
#!<identifier> directive.
* src/read.c (Scm_DefineReaderDirective, read_shebang):
src/extlib.stub (define-reader-directive):
Modified the reader to recognize R6RS-style #!<identifier>
directive. Now, only the '#!' of the beginning of the port,
followed by '/' or ' ', are recognized as the script shebang
line. All other '#!'s are treated as #!<identifier> directive
(before, '#!'s unconditionally worked as a
comment-to-end-of-line). The behavior of #!<identifier> is
customizable by define-reader-directive.
* src/scmlib.scm: Added standard #!<identifier> directives:
#!r6rs, #!fold-case and #!no-fold-case.
* src/gencomp (global-eq??): fixed a bug when the comparing identifier
is not yet defined in the host gosh.
* src/Makefile.in (scmlib.c): use --keep-private-macro=inline-stub
to keep inline-stub macro definition in the core.
2008-08-19 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen/cise.scm (define-cfn): Introduced define-cfn cise
form to enable to write pure C function (not cproc, which is a
Scheme subr with C body) in cise.
* lib/gauche/cgen/stub.scm: Recognizes define-cfn within stub code.
(initcode): Allow cise in the code portion.
(make-literal, c-literal-expr): Allow cise expression in the
expr section of raw c literal (e.g. (c expr)).
(define-cclass): Allow :private qualifier to emit the CLASS_DECL and
standard macros into the c file.
(cclass-emit-standard-decls): is the body to generate standard macros
mentioned above. Eventually there should be an option to emit
these into a separate header file.
* ext/peg/peg-lib.scm: Rewrote a couple of C static functions within
inline-stub by define-cfn.
* ext/dbm/gdbm-lib.scm, ext/dbm/ndbm-lib.scm, ext/dbm/odbm-lib.scm:
Include stub code in the Scheme code using init-stub.
*.stub are no longer needed. {gdbm,ndbm,odbm}.scm are auto-
generated.
* ext/dbm/dbm.ac: changed accordingly.
* ext/dbm/bdbm.c, ext/dbm/bsddb.h, ext/dbm/bsddb.stub: Removed.
Berkeley DB licensing terms are like GPL, so it's better to be
supported in a separate extension to avoid complication of
Gauche-embedded application development.
* ext/digest/md5-lib.scm, ext/digest/sha1-lib.scm: Include stub
code in the Scheme code using init-stub. *.stub are no longer
needed. {md5,sha1}.scm are autogenerated.
2008-08-17 Shiro Kawai <shiro@acm.org>
* src/vminsn.scm (VALUES-APPLY), src/vm.c (Scm_ApplyRec): fixed
a bug that caused SEGV when more than SCM_VM_MAX_VALUES args
are given to Scm_ApplyRec. This hasn't been noticed since Scheme
version of APPLY doesn't go through this path. (Note: This
is a temporary fix. VALUES-APPLY can keep the rest list until
argumet adjustment, in the same way as TAIL-APPLY.)
* src/intlib.stub: Added some procedures that uses Scm_ApplyRec
family for the testing purpose.
* lib/gauche/sortutil.scm, src/autoloads.scm, test/sort.scm:
Added sort-by, sort-by!, stable-sort-by, stable-sort-by!.
2008-08-08 Shiro Kawai <shiro@acm.org>
* lib/dbm.scm (dbm-db-copy, dbm-db-move): Provides fallback methods.
* doc/modutil.texi (dbm): Added explanation on the protocol a new
dbm implementation should conform.
2008-08-04 Shiro Kawai <shiro@acm.org>
* doc/modgauche.texi: added missing description of the return
value of mutex-unlock!.
2008-08-02 Shiro Kawai <shiro@acm.org>
* src/vminsn.scm: added LREF-CAR and LREF-CDR combined insns. We could
wait for the new instruction scheme ('push' bit), but this is simple
and effective, so why not?
Also added VALUES-RET.
* ext/peg/peg-lib.scm
($fold-parsers, $fold-parsers-right): change $fold and $fold-right
to these names to avoid confusion.
($count, $sep-end-by): rewrote to use $loop macro for speed and
correct behavior.
* ext/peg/test.scm, tests/rfc.scm: moved rfc.json test under ext/peg,
for it depends on parser.peg.
2008-07-31 Shiro Kawai <shiro@acm.org>
* ext/net/netlib.stub: Added several IP socket option constants.
2008-07-28 Shiro Kawai <shiro@acm.org>
* src/compile.scm (pack-iform): Fixed a bug handling $RECEIVE node.
(pass3/branch-core): Added an optimization to cut the unreachable
branch of $if. Such $if may occur as a result of macro expansion.
2008-07-26 Shiro Kawai <shiro@acm.org>
* src/compile.scm (pass1/body-wrap-intdefs): Ensure the evaluation
order of internal define the same as corresponding letrec. Before
it was reversed and a source of confusion. It is also consistent
to letrec* behavior.
* ext/peg/peg-lib.scm
($many_): Removed, for it is same as $skip-many.
($fold, $fold-right, $many-chars, $many1): Added.
(peg-parse-string): Renamed from parse-string.
(peg-run-parser, peg-parse-port): Added.
2008-07-25 Shiro Kawai <shiro@acm.org>
* lib/gauche/parseopt.scm (compose-entry): Allow '*' modifier in
option-spec, for options that can be specified multiple times.
This is just a preparation; the actual code to support multiple
appearance of an option hasn't been done yet.
2008-07-20 Shiro Kawai <shiro@acm.org>
* lib/gauche/vm/insn.scm.src, lib/gauche/vm/insn-core.scm: Removed
the template file insn.scm.src and added a separate module
insn-core.scm. The generated insn.scm extends insn-core. This
is required since geninsn needs to refer to <vm-insn-info>, but
gauche.vm.insn doesn't exist yet when geninsn is generating it.
* src/geninsn: changed accordingly.
2008-07-15 Shiro Kawai <shiro@acm.org>
* src/vminsn.svm ($insn-body), src/geninsn (insn-alist):
Allow insn definition to retrieve other insn body.
* src/vminsn.scm ($arg-source, LREF-VAL0-BNxx),
src/compile.scm (pass3/if-numcmp): Emit special instructions for
BNxx when one of the arguments are LREF. This saves one stack
push/pop pair.
2008-07-14 Shiro Kawai <shiro@acm.org>
* src/vminsn.scm ($vm-err): Avoid expanding CISE into VM_ERR macro,
for some C compilers choke on #line directives between macro
arguments.
2008-07-10 Shiro Kawai <shiro@acm.org>
* src/compile.scm (pass1/define-inline),
src/gencomp (check-packed-inliner): Properly emit inliner
information of the procedures defined by define-inline, even
if the target VM's instruction codes differ from host VM's.
2008-07-08 Shiro Kawai <shiro@acm.org>
* configure.ac: Checking for gcc by $GCC instead of $CC, to cope
with the case when $CC is actually "gcc -std=gnu99" etc.
2008-07-02 Shiro Kawai <shiro@acm.org>
* lib/gauche/vm/insn.scm.src, src/gauche/code.h: Extended the
opcode width in the instruction word from 8 bits to 12 bits.
* src/compile.scm: Instead of reading vminsn.scm to define vm
instruction constants, using gauche.vm.insn to do so.
* src/geninsn: allow define-insn-lref* and define-insn-lref+,
that automatically defines LERFn-XXX and LREFmn-XXX combined
instructions from the base LREF-XXX instruction definition.
* lib/gauche/procedure.scm (disasm): removed kludge for old versions.
* src/code.c (Scm_CompiledCodeEmit): Adopted STN created from
vminsn.scm to handle instruction combination. With this change,
the VM instruction set architecture is solely defined by vminsn.scm.
* src/geninsn: some extension to handle more combined insns.
* src/vminsn.scm: some fixes
2008-07-01 Shiro Kawai <shiro@acm.org>
* src/vminsn.scm, src/geninsn, src/vm.c (run_loop): Having VM loop
code fragment within the VM instruction definition in vminsn.scm,
and use geninsn to generate the "meat" of the VM loop into
vminsn.c. This is a big step towards VM generation.
* lib/gauche/cgen/literal.scm (cgen-emit-static-data),
lib/gauche/cgen/unit.scm (cgen-emit-c): Moved SCM_CGEN_CONST
kludge emission from unit to literal, since it is only required
for the static data array generated by cgen-emit-static-data.
2008-06-28 Shiro Kawai <shiro@acm.org>
* src/vm.c (VALUES_APPLY): Removed unnecessary code.
2008-06-27 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen/cise.scm (source-info): Replaced makeshift source
info extractor for debug-source-info.
(cise-render-rec): Expose an API to call back to cise expander
recursievly. Needed to write certain type of cise macros.
(cise-context, cise-context-copy, cise-register-macro!,
cise-lookup-macro): Allow to have multiple cise macro namespaces.
(define-cise-stmt, define-cise-expr): allow to specify a variable
to receive the cise environment, which is required to call
cise-render-rec within the expander.
2008-06-26 Shiro Kawai <shiro@acm.org>
* src/autoload.scm, lib/gauche/miscutil.scm (object-source-info):
Removed. Use debug-source-info.
2008-06-25 Shiro Kawai <shiro@acm.org>
* lib/rfc/http.scm (http-generic): fixed 'host' field being messed
up when redirected.
2008-06-24 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen/cise.scm: Added cise macros: while, label, goto,
post++, post--. Allow variable declaration only (without init
nor type) in let*.
2008-06-20 Shiro Kawai <shiro@acm.org>
* src/vm.c, src/gauche.h (Scm_ApplyRec[01234]): Added these to avoid
consing in callback from C to Scheme.
* src/vminsn.scm (VALUES-APPLY): Changed the name from CONST-APPLY.
2008-06-19 Shiro Kawai <shiro@acm.org>
* src/vm.c (Scm_ApplyRec): Avoid allocation by using valN registers
to pass the arguments.
* src/vminsn.scm (CONST-APPLY): Changed the definition since we
no longer need an operand.
2008-06-08 Shiro Kawai <shiro@acm.org>
* src/extlib.stub (hash-table-copy): added. Why this hasn't been
implemented until now? It must be an overlook.
2008-06-03 Shiro Kawai <shiro@acm.org>
* ext/peg/peg-lib.scm (space): recognized 'v' as a space incorrectly.
(patch from Masayuki Muto).
2008-06-01 Shiro Kawai <shiro@acm.org>
* src/vm.c (user_eval_inner), src/gauche/vm.h (ScmCStrackRec):
save/restore signal mask by ourselves, since sigsetjmp's behavior
is platform-dependent w.r.t. threads.
* src/signal.c (Scm_GetSigmask, Scm_SetSigmask) :added convenience
functions to hide sigprocmask/pthread_sigmask difference among
platforms.
2008-05-30 Shiro Kawai <shiro@acm.org>
* src/Makefile.in (INSTALL_HEADERS): install some more gc headers.
2008-05-27 Shiro Kawai <shiro@acm.org>
* ext/peg/peg-lib.scm (make-peg-parse-error): better error message.
2008-05-26 Shiro Kawai <shiro@acm.org>
* src/extlib.stub (eof-object): added from R6RS.
2008-05-25 Shiro Kawai <shiro@acm.org>
* rfc/json.scm : Added (written by Rui Ueyama. Using parser.peg).
* ext/peg/*, configure.ac, ext/Makefile.in: Added parser.peg module,
PEG parser combinator library originally written by Rui Ueyama.
2008-05-22 Shiro Kawai <shiro@acm.org>
* src/number.c (Scm_FiniteP, Scm_InfiniteP, Scm_NanP),
src/extlib.stub (finite?, infinite?, nan?): Added from R6RS.
2008-05-21 Shiro Kawai <shiro@acm.org>
* lib/srfi-26.scm (srfi-26-internal-cut): performance fix (see the
comment).
* src/load.c (Scm_DynLoad): Fixed a bug that leaves dlobj inconsisntent
state when dl_sym couldn't find initfn.
2008-05-19 Shiro Kawai <shiro@acm.org>
* src/load.c (Scm_DynLoad): Fixed a bug that caused a dead-lock
when the initialization function of DSO executes some Scheme
function (it happens if the DSO is pre-compiled from Scheme source),
and the execution triggers an autoload, which in turn tries to
dynamic-load some other module. Before, we had a global lock for
dynamic-load, so the recursive call to it caused a dead lock.
Now the lock is per-DSO.
2008-05-12 Shiro Kawai <shiro@acm.org>
* src/gencomp, src/genstub, lib/gauche/cgen/stub.scm: Allow stub
definitions to be embedded in an ordinary *.scm file for pre-
compilation. When gencomp sees a toplevel
(inline-stub stub-form ...) form, the stub-form ... part is
passed to gauche.cgen.stub to generate C code into the pre-compiled
output.
* src/gencomp, src/compile.scm (global-eq??): Now gencomp takes
into account the module visibility when it checks the special
identifiers in the toplevel, so that it won't accidentally step
on the source where those identifiers are redefined.
* src/scmlib.scm (inline-stub): A macro inline-stub is defined
to detect when the form is evaluated at runtime (it's only valid
for precompilation, so at runtime the form throws an error.)
* gc/thread_local_alloc.c (GC_mark_thread_local_fls_for): Fixed
size-zero allocation problem.
2008-05-10 Shiro Kawai <shiro@acm.org>
* libsrc/file/util.scm (safe-stat): fix for platforms that don't
have sys-lstat.
* src/genstub, lib/gauche/cgen/type.scm, lib/gauche/cgen/stub.scm:
Moved most of the stub handling stuff into gauche.cgen.type and
gauche.cgen.stub modules. Now genstub is a thin frontend for
those modules.
2008-05-09 Shiro Kawai <shiro@acm.org>
* src/macro.c (Scm_VMMacroExpand): properly handles the case when
the operator is an indentifier.
* libsrc/util/match.scm: Added support to a certain degree
for the case when match macros are used with hygienic macros.
Specifically it gracefully handles the case that match macros
are inserted as the result of hygienic macro expansion. It's not
complete, but we'll patch the holes as it goes, until we replace
the current version with completely hygienic match macro.
2008-05-08 Shiro Kawai <shiro@acm.org>
* ext/dbm/ndbm-makedb.c (main): fix. some versions of ndbm don't
like O_WRONLY.
* ext/dbm/ndbm.scm (dbm-db-copy, dbm-db-move): fixed for the case
when ndbm uses single database file.
2008-05-07 Shiro Kawai <shiro@acm.org>
* src/compile.scm (pass1/lambda): Merged EXPERIMENTAL extended-lambda
support (CL-style :optional, :key, :rest and :allow-other-keys args).
Not sure if it fits in Scheme style, but let's see how it goes.
Currently an extended lambda is expanded into a normal lambda and
let-keywords/let-optionals forms within the compiler. Eventually
I prefer them being supported natively, so that the compiler can
do some optimizations.
* test/system.scm (get-pwd-via-pwd): adapted to OSX's /bin/pwd
different behavior.
2008-05-08 ENDO Yasuyuki <yasuyuki@kahua.org>
* winnt/nsis/setup.nsi.in (OutFile): use "mingw" instead of "win32".
* winnt/nsis/Makefile (TARGET): use "mingw" instead of "win32".
* winnt/nsis/README: use "mingw" instead of "win32".
2008-05-07 Shiro Kawai <shiro@acm.org>
* ext/dbm/ndbm.stub, ext/dbm/ndbm.scm, ext/dbm/ndbm-makedb.c,
ext/dbm/ndbm-suffixes.scm, ext/dbm/Makefile.in: Since different
ndbm implementations attach different suffixes for the database
files, we determine the suffixes at the build time by actually
creating the ndbm database. The extra files (ndbm-makedb.c and
ndbm-suffixes.scm) are used in the build time to create
ndbm-suffixes.h, which is included from ndbm.c (generated from
ndbm.stub). Probably some adjustment will be required for cross-
compilation.
* ext/Makefile.ext.in: For the convenience, defined LOCAL_LFLAGS
make variable that exports library flags generated
from --with-local configure option.
2008-05-06 Shiro Kawai <shiro@acm.org>
* gc/libatomic_ops-1.2/Makefile.in etc. Ran automake again to make
Makefile.in etc. keep up to the newest autoconf.
* lib/dbm.scm, lib/dbm/fsdbm.scm, ext/dbm/*: Renamed dbm-rename to
dbm-move, for the consistency of copy-file/move-file. The old
name dbm-rename is kept as an alias of dbm-move. Added dbm-copy
and dbm-move support to dbm.fsdbm.
* libsrc/file/util.scm, ext/file/test.scm: Added copy-directory*.
Fixed the behavior on dangling symlinks in copy-file.
Dropped copy-files and move-files, for its API need to be
considered more.
* gc/tests/test.c: excluded GC_FREE(GC_MALLOC(0))-type tests for
they cause problems with DONT_ADD_BYTE_AT_END.
2008-05-04 Shiro Kawai <shiro@acm.org>
* gc/*, Makefile.in, src/Makefile.in: Bumped up to Boehm GC 7.1.
2008-05-03 Shiro Kawai <shiro@acm.org>
* lib/gauche/numerical.scm (scheme): added two-argument log support.
(log z b) is base-b logarithm of z, i.e. (/ (log z) (log b)). This
is an R6RS addition.
2008-04-28 ENDO Yasuyuki <yasuyuki@kahua.org>
* winnt/nsis/setup.nsi.in: delete gauche-logo.ico
2008-04-21 ENDO Yasuyuki <yasuyuki@kahua.org>
* winnt/nsis/setup.nsi.in: add language English.
2008-04-19 Shiro Kawai <shiro@acm.org>
* src/parameter.c (Scm__VMParameterTableInit): Potentially allocating
too few elements.
* src/hash.c (Scm_HashTableAdd): Typo fix in the error message.
* ext/charconv/jconv.c (jconv): Use Scm_Panic instead of Scm_Error
in the logically unreachable code within the critical section.
* src/gauche/mingw-compat.h: Removed, for this is replaced by
win-compat.h
* src/Makefile.in: install win-compat.h instead of mingw-compat.h.
2008-04-19 ENDO Yasuyuki <yasuyuki@kahua.org>
* DIST: fix winnt/nsis make clean bug.
2008-04-18 Shiro Kawai <shiro@acm.org>
* configure.ac (RPATH_FLAG): substitutes RPATH_FLAG for
system-dependent compiler flags to embed library paths in the
DSO. "-Wl,--rpath -Wl," for Linux, for example.
* src/genconfig (--rpath-flag): A new flag to return RPATH_FLAG info.
* src/gauche-package.in ("compile"): added --local option to
the 'compile' command to add local include paths and local library
search paths conveniently.
* ext/template.configure.ac, ext/template.Makefile.in:
added --with-local configure option that propagates to --local
option of gauche-package.
* lib/gauche/process.scm (shell-escape-string): Added a utility
function.
2008-04-18 ENDO Yasuyuki <yasuyuki@kahua.org>
* winnt/nsis/setup.nsi (VIProductVersion): get version from
##(incdude (*current-version*)) macro.
* winnt/nsis/file-list.scm (main): check path exists.
* winnt/nsis/Makefile (GAUCHE_VERSION): hide error message if
../../VVERSION not exists.
2008-04-17 ENDO Yasuyuki <yasuyuki@kahua.org>
* winnt/nsis/Makefile (all): add target all.
(gen): add target gen.
(build): add target build.
(clean): add target clean.
(MAKENSIS): check makensis.exe.
* winnt/nsis/file-list.scm (include): fix match bug.
* winnt/nsis/setup.nsi.in: include version from
"##(include (*current-version*))".
* winnt/nsis/Makefile (setup.nsi): add argument <dist-path>,
<gauche-version> for file-list.scm.
version from `cat ../../VERSION`.
* winnt/nsis/file-list.scm (*current-version*): add.
(main): required args: <dist-path> <template-file> <gauche-version>
(include): match inline "##(include exp)" template.
2008-04-15 ENDO Yasuyuki <yasuyuki@kahua.org>
* winnt/nsis/Makefile (setup.nsi): generate setup.nsi from
setup.nsi.in.
* winnt/nsis/file-list.scm: list Gauche-mingw files and generate
NSIS script.
* winnt/nsis/setup.nsi.in: add. (template for NSIS script)
* winnt/nsis/README: add.
* winnt/nsis/gauche-logo.ico: Windows icon file for Gauche.
2008-04-11 Shiro Kawai <shiro@acm.org>
* src/main.c (main, getopt): fixed argument processing on Windows.
2008-03-03 Shiro Kawai <shiro@acm.org>
* lib/util/trie.scm (call-with-builder): incorrect argument order
* lib/util/relation.scm (relation-column-getters): typo fix
* lib/gauche/cgen/literal.scm (cgen-emit-xtrn): fixed incorrect
variable name.
(Thanks to koguro for the above three fixes.)
2008-02-26 Shiro Kawai <shiro@acm.org>
* lib/gauche/dictionary.scm: removed undefined dict-map-to from
export list.
* lib/gauche/common-macros.scm, src/autoloads.scm, src/scmlib.scm
(let-optionals*, let-keywords, let-keywords*): moved from
common-macros to scmlib. This is a step toward supporting
keyword and optional args in VM core.
* lib/gauche/test.scm (read-summary): avoid using file-exists?, for
it triggers autoload which may not be tested in the early stage
of testing.
2008-02-24 Shiro Kawai <shiro@acm.org>
* various scm files: cosmetic changes and adoption of rlet1.
* lib/gauche/common-macros.scm: added if-let1 and rlet1.
* libsrc/file/util.scm: added touch-files, copy-files, move-files,
remove-files, and delete-files.
2008-02-23 Shiro Kawai <shiro@acm.org>
* lib/binary/pack.scm (read-count): fixed wrong arguments
in function call.
* lib/srfi-27.scm (random-source-make-reals): fixed nonexistent
function call.
2008-02-20 Shiro Kawai <shiro@acm.org>
* src/write.c (format_proc): raise an error on incomplete tilde
sequence in format string.
* lib/gauche/time.scm (with-time-counter): avoid multiple
evaluation of time-counter expression.
2008-02-16 Shiro Kawai <shiro@acm.org>
* lib/www/cgi.scm (get-mime-parts): allow :mode option for mime
part handler.
2008-02-14 Shiro Kawai <shiro@acm.org>
* src/vmcall.c (ADJUST_ARGUMENT_FRAME): Fixed a bug that apply didn't
copy the argument list when it needed to 'unfold' the passed
argument list.
2008-02-13 Shiro Kawai <shiro@acm.org>
* release 0.8.13
2008-02-12 Shiro Kawai <shiro@acm.org>
* src/load.c (Scm_ResolveAutoload): fixed another bug that, when N
threads (N >= 3) tried to resolve the same autoload and N-1 threads
goes to wait, only one of them is ever waked up.
2008-02-09 Shiro Kawai <shiro@acm.org>
* src/load.c (Scm_ResolveAutoload): fix a bug that caused malfunction
of autoload resolving in multithreaded environment.
2008-02-08 Shiro Kawai <shiro@acm.org>
* src/gauche.h (ScmDefaultCPL): make SCM_EXTERN to extern, for cygwin
to treat them as compile-time constants. (Needs more work for
Win/VC platform).
2008-02-07 Shiro Kawai <shiro@acm.org>
* src/char.c (charset_print_ch): Safer print method for charset
literal.
2008-02-06 Shiro Kawai <shiro@acm.org>
* ext/net/netlib.stub: Added some more socket option constants.
2008-02-05 Shiro Kawai <shiro@acm.org>
* src/scmlib.scm (rxmatch->string): added.
* src/system.c (Scm_CurrentMicroseconds), src/extlib.stub
(greatest-fixnum, least-fixnum): fixes for 64bit architecture.
2008-02-04 Shiro Kawai <shiro@acm.org>
* test/system.scm, ext/termios/test.scm: excluded some tests from
cygwin, for they are not supported well on it.
* src/vmcall.c: fixed a bug that takes calling context
(normal or applyargs) incorrectly when a next-method object is
created in applyargs context, is invoked in normal calling
context, a new next-method is created during it, and the new
next-method is invoked in the normal calling context.
2008-02-03 Shiro Kawai <shiro@acm.org>
* lib/gauche/test.scm (closure-grefs): We've been missing checking
the closures in the operand of LOCAL-ENV-CLOSURES. Check added.
* configure.ac, */Makefile.in, src/genconfig.in: Adapted for
cross compilation. (Parch from YOKOTA Hiroshi).
* src/bignum.c, src/gauche/config.h.in: checks malloc.h to use
alloca on mingw. (Parch from YOKOTA Hiroshi).
* src/string.c, src/system.c, src/number.c, src/dl_win.c,
src/class.c, ext/mt-random/mt-random.c: removing inline from
externed procs, and some other fixes for better portability.
(Parch from YOKOTA Hiroshi).
* Makefile.in (uninstall): avoid going into gc/, since we don't
install a separate libgc.a so we shouldn't uninstall it.
2008-02-02 Shiro Kawai <shiro@acm.org>
* lib/gauche/parseopt.scm (next-option): fixed a problem that regexp
might run out the stack when very long option arg is given.
2008-02-01 Shiro Kawai <shiro@acm.org>
* libsrc/file/util.scm (copy-file): Fixed a bug that didn't
preserve the mode of dst when dst already exists, safe is #f
and keep-mode is #f.
* src/read.c (read_char): allow 5, 6, or 7 hex digits in unicode char
literal (#\uxxxxx etc.) The old code only allows 4 or 8 digits,
which is too restrictive (and not much point since Unicode is now
only up to #\u10ffff.)
* src/extlib.stub (fixnum-width, greatest-fixnum, least-fixnum):
Added.
* src/syslib.stub (current-microseconds): Experimentally
added. Returns # of microseconds since system-dependent epoch,
wrapped around fixnum resolution (possibly negative). Useful
for micro benchmarking since it doesnt' allocate.
2008-01-31 Shiro Kawai <shiro@acm.org>
* 0.8.13_pre1
* lib/gauche/procedure.scm, src/autoloads.scm: Experimentally
added '$' and '$*' macro. It's unofficial yet. See how it
works.
2008-01-26 Shiro Kawai <shiro@acm.org>
* lib/gauche/process.scm (handle-abnormal-exit): Fix not to call
:on-error-exit handler if the process' exit status is zero.
2008-01-23 Shiro Kawai <shiro@acm.org>
* src/class.c (generic_print): Reverted the display format of
generic functions; maxReqargs is not relevant for most users,
so it's just confusing.
2008-01-04 Shiro Kawai <shiro@acm.org>
* lib/slib.scm.in (require, provide, provided?): adapted to
slib3a5 (using slib:require instead of require:require, etc).
This should also work with slib 3a4 as well, since 3a4 exports
both APIs.
2007-12-31 Shiro Kawai <shiro@acm.org>
* src/vm.c (run_loop): Implemented an optimization on TAIL-APPLY
instruction. Since arguments are already on the stack except
the last one, we can share large part of processing with TAIL-CALL
instruction, with a modification of the special treatment of
the last argument. This eliminates the need to call Scm_VMApply,
and also allows large argument list to be applied, such as
(apply + (iota 10000)).
(Scm_VMApply): changed to use TAIL-APPLY instruction. This also
eliminates need of unfoling the passed args.
* src/vmcall.c: Added to refactor the similar code between CALL
and TAIL-APPLY instruction handling.
* src/compile.scm (pass3/$ASM), src/stdlib.stub (apply):
A little hack to make *every* 'apply' call a tail-call, so that
it is compiled as TAIL-APPLY instruction.
2007-12-28 Shiro Kawai <shiro@acm.org>
* src/class.c (Scm_ComputeApplicableMethods): Optimized inner loop
a little bit. General code cleanup.
* src/moplib.stub: Rewrote some procs using cise.
2007-12-25 Shiro Kawai <shiro@acm.org>
* lib/gauche/numerical.scm (asin, asinh): fixed a problem of avoiding
numerical instability.
(exp, expt, cos, cosh, sin, sinh): use real-part/imag-part instead
of %complex->real/imag, for the former is slightly faster.
2007-12-22 Shiro Kawai <shiro@acm.org>
* src/extlib.stub (rxmatch-num-matches): returns 0 if #f is passed,
as described in the manual.
2007-12-18 Shiro Kawai <shiro@acm.org>
* lib/rfc/822.scm (rfc822-write-headers): Added generic message
header generation routine.
(rfc822-read-headers): Renamed rfx822-header->list for the
symmetry with rfc822-write-headers. We keep the old name
for the backward compatibility.
2007-12-11 Shiro Kawai <shiro@acm.org>
* src/read.c (read_string): Supports R6RS-style line folding in
string literal. This should be reworked once we support all
kind of whitespaces and line endings, but for the time being
we just hardcode treatment of SPC and TABs.
* lib/rfc/mime.scm (mime-decode-text, mime-encode-word,
mime-encode-text): Added utilities to encode/decode header fields
according to RFC2047.
2007-12-09 Shiro Kawai <shiro@acm.org>
* lib/rfc/quoted-printable.scm (quoted-printable-encode): Added line-
width and binary keyword arguments. Encode '?' to avoid interference
with RFC2047 encoded header body.
2007-12-07 Shiro Kawai <shiro@acm.org>
* lib/rfc/base64.scm (base64-encode): Added line-width keyword argument
to specify line width or suppress line breaking of the output.
2007-12-06 Shiro Kawai <shiro@acm.org>
* lib/rfc/http.scm (request-response): Fixed to pass the port number
to host header field (RFC2616 section 14.23).
2007-11-30 Shiro Kawai <shiro@acm.org>
* src/port.c (Scm__InitPort): Set stdout buffering mode to FULL if
the file descriptor 1 is not connected to a terminal. This greatly
improves performance when large number of lines of output are
redirected to a file.
2007-11-23 Shiro Kawai <shiro@acm.org>
* lib/gauche/fileutil.scm (glob-fold, make-glob-fs-fold): Removed
:root and :current args from glob-fold, for they should belong to
the 'folder' function rather than the glob-fold function itself.
Instead, we added a utility function make-glob-fs-fold to generate
a customized 'folder' function with root/current dirs.
(glob-fold-1): Added support of '**' wildcard.
2007-11-20 Shiro Kawai <shiro@acm.org>
* lib/gauche/fileutil.scm (glob-fold): Added :root and :current
keyword arguments for the flexibility.
* lib/gauche/regexp.scm, src/scmlib.scm, src/autoloads.scm:
Moved regexp-replace, regexp-replace-all, regexp-replace*,
regexp-replace-all* and regexp-quote from the autoloaded regexp.scm
to the compiled scmlib.scm.
* src/regexp.c, src/objlib.scm: Implemented regexp printer in
Scheme write-object instead of C's class print function. Properly
escapes slashes in the regexp and adds 'i' suffix for case-folded
regexp, so that read/write invariance is sufficed for trivial
cases. (See the comment before write-object (<regexp> <top>) for
the work to do to realize full read/write invariance).
* src/read.c (read_regexp): let the reader consume a backslash before
a slash, for it has nothing to do with regexp parser (and it will
be consistent from the regexp created via string->regexp).
* src/preload.scm: use gauche.regexp explicitly, for it is needed
to compile HEAD with 0.8.12. Can be removed after 0.8.13 release.
2007-11-09 Shiro Kawai <shiro@acm.org>
* configure.ac, src/gauche/config.h.in: Enabled large file support
(AC_SYS_LARGEFILE). On Linux this defines _FILE_OFFSET_BITS as 64.
COMPATIBILITY NOTE: The definition may affect the behavior of the
standard libraries. It is crucial to include <gauche.h> *before*
any other standard headers.
* src/system.c (Scm_IntegerToOffset, Scm_OffsetToInteger, ScmSysStat):
properly handles 64bit offsets.
* ext/fcntl/fcntl.c: properly handles 64bit offsets.
* examples/mqueue-cpp/README: added explanation to include
gauche.h first.
2007-11-08 Shiro Kawai <shiro@acm.org>
* lib/gauche/regexp.scm (regexp-parse-subpattern): allow named
reference in the replace string in regexp-replace etc.
Patch from Rui Ueyama.
2007-11-07 Shiro Kawai <shiro@acm.org>
* configure.ac, src/gauche/config.h.in (HAVE_SYS_RESOURCE_H,
SIZEOF_RLIM_T): configuration for getrlimit/setrlimit
* src/syslib.stub (sys-getrlimit, sys-setrlimit): Added.
(Patch from Tatsuya BIZENN).
* src/extlib.stub (tree-map-floor etc.): Added Scheme-level interface
to find the closest entry in the treemap. Also added tree-map-clear!
2007-11-06 Shiro Kawai <shiro@acm.org>
* lib/text/gettext.scm, lib/text/tr.scm: Moved to ext/text.
* libsrc/text/tr.scm, ext/text/*: Made text.gettext and text.tr
compiled modules.
* src/gencomp (compile-toplevel-form): Modified to recognize
define-constant form so that constant-folding works in
pre-compilation.
* ext/srfi/srfi-19-lib.scm: switched back julian-day calculation
to use exact numbers (Cf. ChangeLog at 2007-01-16 below). By
scaling everything except nanoseconds first, we can avoid
ratnums in intermediate calculations. With working constant folding
in pre-compilation, the overhead isn't as bad as before. See
the comment near TM_EXACT_CALC for the details.
* src/gauche/system.h (ScmTime): use ScmInt64 to represent seconds
to avoid year 2038 problem.
* src/system.c: Changed accordingly. Added Scm_MakeTime64() and
Scm_Int64SecondsToTime().
* src/gauche/int64.h, src/number.c: Added macros (SCM_INT64_EQV,
SCM_INT64_CMP, SCM_SET_INT64_BY_LONG, SCM_SET_INT64_BY_DOUBLE)
and APIs (Scm_Int64ToDouble, Scm_UInt64ToDouble, Scm_DoubleToInt64,
Scm_UInt64ToDouble).
2007-10-29 Shiro Kawai <shiro@acm.org>
* release 0.8.12
* winnt/winvc-prep.sh, DIST: enable preparation for winvc from
the distribution tarball.
* src/system.c: Some fixes for MinGW.
2007-10-27 Shiro Kawai <shiro@acm.org>
* gc/configure.in: Added CFLAGS to compile on Leopard.
* src/objlib.scm (x->integer, x->string): a bit of simplification.
2007-10-23 Shiro Kawai <shiro@acm.org>
* ext/dbm/gdbm.scm (dbm.gdbm): added missing exports (gdbm-errno,
GDBM_SYNCMODE.
2007-10-01 Shiro Kawai <shiro@acm.org>
* src/number.c (read_number, double_print): Changed infinities and
NaN notation to +inf.0, -inf.0 and +nan.0, according to R6RS.
The old syntax #i1/0, #i-1/0 and #i0/0 are recognized for
the compatibility.
* ext/net/net.ac, ext/net/net.c: Removed dependency on inet_aton
(always using inet_pton).
* lib/gauche/parseopt.scm: When "f" is specified as the option's
argument type, it allows rational number to be given but coerces
it to flonum.
2007-09-28 Shiro Kawai <shiro@acm.org>
* ext/auxsys/auxsys.c (Scm_Environ),
ext/auxsys/auxsyslib.stub (sys-environ),
ext/auxsys/auxsys.scm (sys-environ->alist): Added sys-environ
and sys-environ->alist to obtain all environment variable bindings
of the current process.
2007-09-27 Shiro Kawai <shiro@acm.org>
* ext/sxml/Makefile.in, ext/sxml/sxml-sxpath.scm.in: avoid dependency
on sxml-tools at generation time, by turning the references to
it into autoloads.
* lib/gauche/fileutil.scm (glob-fold-1): Changed the traversal
procedure from 'lister' (returns a list) to 'folder' (works like
fold), for better flexibility.
2007-09-24 Shiro Kawai <shiro@acm.org>
* lib/text/progress.scm (make-text-progress-bar): added a feature to
show information text on right, and allow to alter header and info
text on the fly.
* ext/sxml/Makefile.in: temporarily reverted to make sxml-sxpath.c
to depend on sxml-tools.so, because of the build problem. This
doesn't work on windows port, though, so we might need to find
some trick.
2007-09-18 Shiro Kawai <shiro@acm.org>
* libsrc/gauche/sequence.scm: added permute and shuffle.
2007-09-17 Shiro Kawai <shiro@acm.org>
* src/system.c, src/syslib.stub, src/auxsyslib.stub, src/process.scm:
Implemented an abstraction layer for kill and waitpid (Scm_SysKill,
Scm_SysWait) to support windows process smoothly. For Windows
processes we keep its process handle instead of an integer pid.
2007-09-16 Shiro Kawai <shiro@acm.org>
* src/number.c (Scm_NumCmp): apply short cut path for the case when
both args are negative.
2007-09-13 Shiro Kawai <shiro@acm.org>
* src/gauche.h, src/class.c: Resurrected windows DLL data import hack
we used to had for cygwin support (back in 2002). We have dropped
the hack since the newer gcc supports auto data importing (by
runtime pseudo reloc), but we found that the same technique can
be used for Windows/VC++. This supersedes the kludge in 2007-09-10
changes.
* src/gauche/extend.h: SCM_EXTENSION_ENTRY macro to indicate
the initialization function entry of extension modules; needed
for Win/VC.
* src/* : various additions for MSVC support. shouldn't affect
unix build.
2007-09-10 Shiro Kawai <shiro@acm.org>
* src/gencomp: make it accept -D option to specify preprocessor
symbols.
* src/gauche/extern.h: added to hide windows dll insanity.
* src/gauche.h, src/gauche/class.h, src/gauche/string.h,
src/gauche/code.h, src/genstub, src/gencomp,
lib/gauche/cgen/literal.scm: Experimentally added a workaround
to the MSVC linker limitation that the address of external variables
in a separate DLL can't be used in a constant expression to
initialize static variables. It defeats the Gauche's tag
architecture. This fix makes the static Scheme objects to be
initialized with dummy tags (see SCM_CLASS_STATIC_TAG in gauche.h),
and "patches" the correct tag in the initializatin code.
2007-09-06 Shiro Kawai <shiro@acm.org>
* src/char.c, src/read.c, src/port.c, ext/charconv/charconv.c,
ext/uvector/uvinit.c: Instead of letting extensions set the hook
function pointer, added an explicit API to set the hook (for
easier handling in windows dll).
2007-08-29 Shiro Kawai <shiro@acm.org>
* ext/net/net.scm, ext/net/gauche/net.h, lib/gauche/cgen/cise.scm:
typo fix.
* src/number.c (numcmp3): optimization in case when all args are
fixnums (can happen on 64bit machines).
2007-08-28 Shiro Kawai <shiro@acm.org>
* src/number.c, src/string.c, src/class.c, src/bignum.c: various
small fixes.
* lib/gauche/fileutil.scm (glob, glob-fold, sys-glob): Implemented
glob functionality in Scheme.
* src/autoload.scm (glob, glob-fold, sys-glob): sets these autoloads.
* src/syslib.stub (sys-glob), src/system.c (Scm_GlobDirectory):
removed C-function for the glob() interface.
* src/extlib.stub (read-char-set): Expose char-set parser to
the Scheme level.
2007-08-26 Shiro Kawai <shiro@acm.org>
* libsrc/file/util.scm (file->string etc.): made them gracefully
return #f if the file doesn't exist and :if-does-not-exist #f
is given.
(temporary-directory): look at TMPDIR environment variable.
(current-directory): clean up.
* src/number.c (Scm_NumCmp): fixed a bug in the short cut path
of ratnum vs ratnum comparison.
* ext/net/netlib.stub (socket-input-port, socket-output-port):
Fixed a bug that (effectively) forces socket input mode to be
:full, making many network applications behave incorrectly.
2007-08-25 Shiro Kawai <shiro@acm.org>
* src/regexp.c (regmatch_ref): fixed a bug that the failed named
submatch returns "" instead of #f.
* lib/gauche/cgen/cise.scm (render-rec): handles character constants
outside of alphanumeric range.
2007-08-24 Shiro Kawai <shiro@acm.org>
* Start adding Windows/MSVC support.
* DIST: added 'winvc' target to pre-generate files necessary to
compile with VisualStudio.
* winnt/*: files for VisualStudio.
* src/gauche/win-compat.h: renamed from mingw-compat.h and
integrated MSVC support.
* src/*.c : various touch-up for Windows support.
2007-08-21 Shiro Kawai <shiro@acm.org>
* DIST, */Makefile.in : adjusted pre-package make target so that
it will do most of the pre-packaging job, hence can make DIST script
less cluttered.
2007-08-16 Shiro Kawai <shiro@acm.org>
* release 0.8.11
2007-08-15 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen/cise.scm (define-cise-stmt, define-cise-expr):
A bit of touch-up for cise API.
* src/genstub: recognize define-cise-stmt and define-cise-expr as
a stub forms, so that one doesn't need to use eval* form.
I'm ambivalent on the eval* stub form; maybe it should be removed.
* src/stdlib.stub, src/extlib.stub: changed accordingly.
2007-08-14 Shiro Kawai <shiro@acm.org>
* configure.ac: fixed a problem to set GAUCHE_USE_PTHREADS correctly
when thread type isn't specified.
2007-08-13 Shiro Kawai <shiro@acm.org>
* src/port.c (Scm_PortFdDup), src/extlib.stub (port-fd-dup!):
Added an interface to dup2(2). Patch from Rui Ueyama.
* src/bignum.c (Scm_BignumToDouble): Fixed a double rounding bug
caused from using flonum arithmetic (see the comment for the
details).
* src/bignum.c (Scm_BignumLogCount), src/extlib.stub (logcount):
Implemented logcount natively on top of ScmBits API.
* src/gauche/float.h (ScmIEEEDouble): moved the structure definition
from src/number.c, for it is now used by both number.c and
bignum.c.
* lib/gauche/logical.scm: removed logcount.
* src/bits.c: finally a working version.
2007-08-11 Shiro Kawai <shiro@acm.org>
* src/load.c (Scm_ResolveAutoload): Renamed from Scm_LoadAutoload,
and changed so that it returns SCM_UNBOUND instead of raising an
error when it detects the autoload is recursive. That allows
more natural handling in implicit binding checks like implicit
generic definition by define-method or implicit redefinition
check by define-class. Note that the caller of Scm_ResolveAutoload
must check if the return value is SCM_UNBOUND and take an appropriate
action.
* src/gauche.h: Because of the above change, we dropped
SCM_BINDING_KEEP_AUTOLOAD flag for Scm_GlobalVariableRef, since
it was introduced only to avoid the recursive autoload in the
implicit generic definition. We no longer need it.
* src/module.c (Scm_GlobalVariableRef): Changed accordingly.
* src/moplib.stub (%ensure-generic-function): Changed accordingly.
* src/class.c (Scm_CheckClassBinding): Simplified according to
the above change.
* test/load2.scm: Added to test the above autoload mechanisms.
This can't be in load.scm, since we have to test it after
object.scm.
2007-08-10 Shiro Kawai <shiro@acm.org>
* lib/gauche/test.scm (test-end): Let it return the number of
failed tests. May be useful if the test script wants to return
non-zero exit status when test fails (e.g. (exit (test-end)) ).
Suggested by Masatake YAMATO.
2007-08-09 Shiro Kawai <shiro@acm.org>
* configure.ac: When --enable-threads is not given (or 'default' is
given) we turn on pthreads support on available platforms, and
turn off on others.
Also defines _POSIX_PTHREAD_SEMANTICS on Solaris with threads
so that we can get a pthread-compatible API
(more specifically, sigwait()).
* gc/configure.in: Adapted to the above change; now we ignore
--enable-threads, and rely on the info the main 'configure.ac'
left in 'config.threads'.
* src/gauche/config.h.in: added _POSIX_PTHREAD_SEMANTICS.
* src/gauche.h: Include gauche/config.h before any headers so that
the definitions like _POSIX_PTHREAD_SEMANTICS can affect the
system headers.
* src/signal.c: removed system header includes, since they are
included in gauche.h anyway.
* libsrc/srfi-1.scm (list=): bug fix for handling more than three
lists. (Patch from OGURISU Osamu).
* ext/template.Makefile.in, lib/gauche/package/compile.scm:
Supports separate buiddir during compiling extension packages
(Patch from Leonardo Boiko).
* doc/corelib.texi (Symbols): removed the remark of "symbols are always
interned", since gensym'ed symbols are not interned.
* src/gencomp (allocate-code-vector): properly escape '/*' and '*/'
in the inserted comments.
* src/class.c, src/port.c, src/vm.c: added casts between intptr_t and
void* for proper operation on LP64. (Patch from Rui Ueyama).
* lib/gauche/time.scm (gauche.time): export <time-counter>. Although
it is a pure abstract class, user may want to define a method
specializing for a bunch of time-counter subclasses.
2007-08-08 Shiro Kawai <shiro@acm.org>
* src/intlib.stub: include gauche/memory.h to get decl of
GC_print_static_roots.
* src/core.c (Scm_Init): added missing call to Scm__InitCollection().
2007-08-07 Shiro Kawai <shiro@acm.org>
* src/port.c (port_cleanup): resurrected unregister_buffered_port
to remove active buffererd port entry when a port is closed.
It was removed before, since when port_cleanup is called via
port's finalizer, the entry is already cleared by GC. However,
it turned out that there was a case that number of closed ports
retained from GC grew, prohibiting new ports from being registered
to the active buffered port vector. Note: maybe we can also
clear some pointers in the port when it is closed, so that the
stuff referenced from the port can be GCed even the closed port
itself lives longer.
2007-08-06 Shiro Kawai <shiro@acm.org>
* src/number.c (Scm_DoubleToHalf): fixed to make sure shifting long
literal instead of int literal to generate a mask larger than 32bits.
The bug yielded incorrect rounding behaviour on 64bit platforms.
2007-08-05 Shiro Kawai <shiro@acm.org>
* ext/net/test.scm: Avoid using "ip" for testing getprotobyname/
getprotobynumber, since the official name of protocol number 0
has been changed and we're in transition phase. Using "icmp"
instead.
* libsrc/file/util.scm (copy-file): Added :keep-mode keyword arg.
2007-08-02 Shiro Kawai <shiro@acm.org>
* src/syslib.stub (sys-umask): Support omitting mode to query
the current umask without changing it.
2007-07-31 Shiro Kawai <shiro@acm.org>
* libsrc/srfi-13.scm (%string-*case!): fixed a bug that caused an
error when the last optional args are omitted for string-downcase!
etc.
2007-07-25 Shiro Kawai <shiro@acm.org>
* src/hash.c (string_access): fixed invalid argument passed to
Scm_Error (ScmHashTableCore* is not ScmObj).
2007-07-16 Shiro Kawai <shiro@acm.org>
* src/number.c (Scm_GetDouble): fixed a bug on big ratnum coercion
that caused SEGV in some cases.
(Scm_NumCmp): fixed a bug on comparing small ratnum with big
denominator with fixnum.
2007-07-10 Shiro Kawai <shiro@acm.org>
* libsrc/gauche/collection.scm: Added find-min, find-max, and
find-min&max.
2007-06-30 Shiro Kawai <shiro@acm.org>
* src/scmlib.scm (error): error message formatting routines didn't
consider circular structure, causing SEGV when such a structure
is given to error/errorf.
2007-06-22 Shiro Kawai <shiro@acm.org>
* src/compile.scm (cond, case): exclude dotted list from clauses
and properly reports syntax error instead of SEGV.
* lib/rfc/http.scm (request-response): fixed a bug that ignores
:sink and :flusher keyword arguments.
* lib/gauche/interactive/info.scm (viewer): fixed malformed
with-signal-handlers (enbugged when we rewrite with-error-handler
to guard?)
* ext/uvector/uvector.c.tmpl (Scm_WriteBlock): added a missing breaks.
(Scm_UVectorCopy, Scm_UVectorSwapBytes, Scm_UVectorSwapBytesX):
f16vector support was missing.
* src/vm.c (get_debug_info): fixed a bug in the range check.
2007-05-31 Shiro Kawai <shiro@acm.org>
* src/hash.c, src/weak.c, src/gauche/hash.h, src/gauche/weak.h,
src/extlib.stub: some additions for weak hash tables. unfortunately
I found the current hash core implementation doesn't go well with
key-weak hash table, and am planning to replace hash core
implementation; for the time being, I freeze development of
weak hash tables.
2007-05-22 Shiro Kawai <shiro@acm.org>
* lib/rfc/ftp.scm (req&send, ftp-put-unique): made ftp-put-unique
to return two values, a final server's response and the remote
file path given by 1xx response. AN INCOMPATIBLE API CHANGE.
But I assume nobody has been used ftp-put-unique seriously,
for it is almost useless without obtaining the generated remote path.
* configure.ac: shows some of the configuration parameters
at the end, upon a request.
* ext/net/netlib.stub (sockaddr-addr): fixed inet6 address bug
in LP64 architectures, and also adaped to gauche.cgen.cise.
* lib/rfc/ftp.scm (call-with-ftp-connection): Fix passing wrong
keyword argument to ftp-login.
* src/number.c (Scm_NumCmp): Fixed a bug that raises an error when
attempted to compare bignum and infinity.
* lib/slib.scm.in (force-output): oversight. made it an alias of
flush.
* src/main.c (main): temporarily avoided using new Scm_Apply API
due to the bug that lost stack traces.
2007-05-21 Shiro Kawai <shiro@acm.org>
* src/gauche/charset.h (SCM_CHAR_SET etc): Changed CHARSET in
macro names to CHAR_SET for the consistency. Old names are
defined for compatibility but will fade out.
* src/char.c, src/regexp.c, src/class.c: changed accordingly.
* lib/gauche/cgen/cise.scm: Allow embedding Scheme constants
by quote form. Allow omitting type declaration if it's ScmObj.
Some more conveniece macros.
* src/extlib.stub: changed to use gauche.cgen.cise more.
2007-05-19 Shiro Kawai <shiro@acm.org>
* lib/gauche/miscutil.scm: added.
* src/autoload.scm: added autoload for gauche.miscutil.
* lib/gauche/cgen/cise.scm: added. A utility to generate C code
from S-expression. The spec is still experimental and may be
tweaked.
* src/genstub, src/stdlib.stub, src/extlib.stub: changed to use
gauche.cgen.cise module.
* lib/Makefile.in, lib/gauche/cgen/unit.scm: changed accordingly.
2007-05-15 Shiro Kawai <shiro@acm.org>
* ext/fcntl/fcntl.c, ext/net/netdb.c, ext/termios/termios.c,
ext/threads/mutex.c, src/class.c, src/codec, src/compaux.c,
src/error.c, src/genstub, src/proc.c, src/system.c:
Use SCM_CLASS_SLOT_SPEC_END() macro instead of literal constant.
Patch from MUTOU Masayuki.
2007-05-04 Shiro Kawai <shiro@acm.org>
* lib/gauche/interpolate.scm (%string-interpolate): recognize '[' and
'{' as the beginning of unquoted expression as well.
* src/genstub, lib/gauche/cgen/unit.scm, lib/gauche/cgen/literal.scm:
Further integrated genstub's code into gauche.cgen.*. Changes
include: Cpp conditions are now supported by <cgen-node>.
The subclass of <cgen-node> should override cgen-emit-* methods,
not the cgen-emit method. Some of literal handling code
are moved to gauche.cgen.*.
Also experimentally testing shorthand notation of ref.
2007-04-26 Shiro Kawai <shiro@acm.org>
* src/genstub: Refactored to utilize more features of gauche.cgen;
the original genstub predated gauche.cgen and had many kludges
that gauche.cgen solved better.
* src/gauche/port.h: Fixed a problem that compatibility functions
are not declared when necessary (#ifdef area got wrong).
2007-04-23 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen.scm, lib/gauche/cgen/unit.scm,
lib/gauche/cgen/literal.scm: Splitted gauche.cgen module for
modularity and readability.
2007-04-22 Shiro Kawai <shiro@acm.org>
* ext/auxsys/auxsys.scm (sys-realpath): typo fix.
2007-04-21 Shiro Kawai <shiro@acm.org>
* src/gauche/weak.h, src/weak.c: Start adding weak hash table
(not finished yet).
* src/hash.c: added Scm_HashCoreInitGeneral.
2007-04-20 Shiro Kawai <shiro@acm.org>
* src/extlib.stub (hash-table-clear!): added.
* ext/net/net.c (init_winsock): typo fix for mingw.
2007-04-18 Shiro Kawai <shiro@acm.org>
* release 0.8.10
* lib/www/cgi.scm (cgi-main): fix to make error handler called
correctly.
* src/system.c (copy_win32_path): bug fix on mingw.
2007-04-17 Shiro Kawai <shiro@acm.org>
* src/vm.c, src/vminsn.scm, src/compile.scm: Inline inexact arithmetic
operators (+., -., *. and /., as NUMIADD2, NUMISUB2, NUMIMUL2, and
NUMIDIV2). These operators are meant for performance tuning, so
it's better to make them as fast as normal operators.
* ext/net/netlib.stub (inet-checksum): fix for big-endian machines.
* src/hash.c (NOTFOUND): added missing 'return'.
* src/gauche/bits.h (SCM_BITS_TEST): fix for 64bit platform
2007-04-16 Shiro Kawai <shiro@acm.org>
* ext/charconv/cvt.scm (generate-utf8->eucj): fix for not generating
mappings from U+0080-U+009f range; they produced wrong EUC sequence,
causing troubles. Now they are replaced to alternative characters.
2007-04-15 Shiro Kawai <shiro@acm.org>
* src/port.c, src/scmlib.scm, src/stdlib.stub, src/extlib.stub,
src/gauche/port.h: Made current-{input|output|error}-port
like parameters, allowing replacing them. Moved implementation
of with-input-from-port etc. to Scheme (scmlib.scm), hence dropping
them from extlib.stub. Scm_WithPort is also dropped.
New API Scm_SetCurrentInputPort etc.
The old Scm_WithPort had a bug that didn't set a proper "before"
thunk for dynamic-wind. The bug doesn't exist in the new version.
* src/genstub (emit-definition): removed remanings of GAUCHE_SUBR_VM
support.
(<procstub>): moved several slots from <cproc> to fix define-cmethod.
(define-cmethod): fixed incorrectly placed close paren.
(parse-specialized-args): reversing parsed arglist.
(process-body-spec): removed remainings of GAUCHE_VMAPI_VM support
* src/gauche/mingw-compat.h: added #undef small, for <windows.h>
defines 'small' to 'char'.
2007-04-13 Shiro Kawai <shiro@acm.org>
* lib/www/cgi.scm: Fixed a bug that hangs when Content-Length is zero
(Patch from Tatsuya BIZENN).
* src/hash.c (Scm_HashIterInit, Scm_HashIterNext): changed so that
the initial iterator points "one before the first entry" and
the 'next' operation returns an entry after proceeding the pointer.
It is consistent with Scm_TreeMapInit/Next. - Nope. Reverted.
If the caller happens to delete the curent entry from the table,
the new version of the iterator loses the iteration. We can prevent
that by letting the iterator prefetch the next entry---but the code
to do prefetch is exactly the same the previous version was doing!
(The change would be visible if we have HashIterCurrent, but it
seems little use so we dropped it. If we ever re-adopt
HashIterCurrent do not forget to keep the current entry pointer
as well as the 'next' prefetch pointer).
2007-04-11 Shiro Kawai <shiro@acm.org>
* src/write.c (Scm_Sprintf, Scm_SprintfShared, Scm_Vsprintf): added
convenience functions.
* src/error.c : changed to use above new APIs.
* src/load.c, src/gauche/load.h (Scm_Load, Scm_LoadFromPort,
Scm_Require): New APIs for better error handling.
* src/read.c, src/main.c, src/extlib.stub, src/char.c:
changed accordingly.
2007-04-08 Shiro Kawai <shiro@acm.org>
* src/collection.c, src/gauche/colleciton.h: Make SCM_DICT_SET_VALUE
to check iff given value isn't an obviously illegal value (e.g.
NULL or SCM_UNBOUND), for the safety.
* src/module.c: Replaced old hashtable APIs for the new ones.
2007-04-07 Shiro Kawai <shiro@acm.org>
* src/char.c (Scm_CharSetLE): fixed a bug.
* lib/gauche/test.scm: record "abort count", the # of test processes
aborted, as well.
* src/hash.c, src/gauche/hash.h, src/gauche.h: Changed hashtable API
for consistency of dictionary API. This introduces incompatibility
in Scm_HashIterInit and Scm_HashIterNext, which we provide the
backward compatibility routines by default; defining GAUCHE_API_0_9
make the new API visible. Also we deprecate Scm_HashTableGet,
Scm_HashTablePut, and Scm_HashTableAdd, in favor of the new
APIs Scm_HashTableRef and Scm_HashTableSet. (Scm_HashTableDelete
is also changed, but it only changes its return type which isn't
used much.) All the "raw" hashtable support is dropped, in favor
of ScmHashTableCore.
* src/class.c, src/extilb.stub, src/module.c: Changed to adapt the
new hashtable API.
2007-04-06 Shiro Kawai <shiro@acm.org>
* lib/text/progress.scm: fix.
* examples/text-progress.scm: added.
2007-04-04 Shiro Kawai <shiro@acm.org>
* src/gauche/charset.h: splitted char-set related API decls.
* src/char.c: rewrote ScmCharSet using ScmBits and ScmTreeCore.
API rename for consistency: Scm_CopyCharSet -> ScmCharSetCopy.
* src/treemap.c: adjust some APIs based on the experience of
reimplementing ScmCharSet.
* src/gauche/collection.h (ScmDictEntry): make 'key' member const.
2007-03-31 Shiro Kawai <shiro@acm.org>
* src/gauche/bits.h, src/bits.c: added ScmBits, generic bitarray
operation support. A plan is to use this to cleanup charset
implementation and also for CL-ish bitvector. Some other
datastuructures may take advantage of this.
* src/char.c: using ScmBits for the small character maps.
* src/core.c (init_cond_features): adds the feature gauche.sys.pthreads
if Gauche is compiled w/ pthread support.
* src/syslib.stub (sys-symlink): defines sys-symlink conditionally,
with the feature identifier gauche.sys.symlink.
2007-03-28 Shiro Kawai <shiro@acm.org>
* src/core.c: defines the feature identifier gauche.sys.pthreads
if Gauche is compiled with pthreads enabled.
2007-03-27 Shiro Kawai <shiro@acm.org>
* test/system.scm: use sys-nanosleep instead of sys-sleep if
possible, to reduce the time of test.
* ext/auxsys/auxsys.c (Scm_SetEnv): added a wrapper routine for
sys-putenv and sys-setenv, so that we can use whichever available
on the system. Importantly, this will fix the leak problem of
sys-putenv on the common platform that supports setenv(3).
* ext/auxsys/auxsys.scm: cleanup some cond-expands.
2007-03-26 Shiro Kawai <shiro@acm.org>
* src/stdlib.stub (vector-ref, vector-set!),
src/vector.c (Scm_VectorRef, Scm_VectorSet): we can't use ::<fixnum>
type for the index of vector-ref, since bignum is allowed if
fallback is also given. Because of this, we moved range check
to stub, and made Scm_VectorRef not raise an error. Similar change
on vector-set! for consistency.
* src/vm.c (SCM_VEC_REF etc): fix error message. if bignum is given
as an index, the message should be "out of bound" instead of
wrong type argument.
* src/number.c (Scm_GetDouble): handles the corner case when ratnum
has very large denominator and/or numerator.
* src/treemap.c, src/gauche/treemap.h: Renamed and cleaned up some
treemap API for the consistency.
2007-03-24 Shiro Kawai <shiro@acm.org>
* ext/net/net.ac: added a hack to avoid dragonfly's broken
gethostbyaddr_r.
2007-03-23 Shiro Kawai <shiro@acm.org>
* configure.ac, gc/configure.in, gc/libtool.m4: Patched to support
DragonFly BSD.
* ext/net/addr.c, ext/net/test.scm: struct in6_addr.s6_addr32 isn't
portable, so we roll our own. also make sure we won't run ipv6
inet_pton/ntop if Gauche isn't configured with ipv6. Patch from
Tatsuya BIZENN.
2007-03-22 Shiro Kawai <shiro@acm.org>
* ext/sxml/sxml-ssax.scm.in: extend text.parse as well, for
ssax:make-parser inserts assert-curr-char.
* ext/mt-random/mt-random.c (mt_allocate): Seed initialization was
broken when seed is given to the initialization argument.
Consolidated mt-random-set-seed! and seed initialization into
Scm_MTSetSeed.
* ext/net/netaux.scm, ext/net/netlib.stub, ext/net/net.c:
Implemented inet-address->string and inet-string->address in C,
using inet_pton and inet_ntop.
2007-03-21 Shiro Kawai <shiro@acm.org>
* ext/srfi/srfi-19-lib.scm (tm:directives): fix date formats to make
them iso-8601 compliant.
2007-03-16 Shiro Kawai <shiro@acm.org>
* ext/dbm/dbm.ac: checks for ndbm funcs in more libraries.
* ext/xlink: allow no file arguments; depending on configuration,
both $(LIBFILES) and $(SCMFILES) can be empty in ext/Makefile.ext.
* src/genconfig.in: be friendly to autoconf 2.60.
* lib/gauche/dictionary.scm: dictionary generic functions.
experimental.
* src/objlib.scm: added 'ref' and 'set!' methods for tree-map.
2007-03-15 Shiro Kawai <shiro@acm.org>
* lib/rfc/icmp.scm: added ICMPv6 support.
* ext/net/net.c, ext/net/netlib.stub (inet-checksum+): added
inet-checksum+, which can be used to combine checksums; handy
for IPv6 packet checksum calculation, for it requires including
pseudo-IPv6 header. See RFC2460 sectin 8.1.
Nope! reverted. Kernel takes care of IPv6 checksum, so we
don't need it.
2007-03-14 Shiro Kawai <shiro@acm.org>
* ext/net/addr.c (sockaddr_in6_allocate): fixed memory leak (missing
freeaddrinfo).
2007-03-12 Shiro Kawai <shiro@acm.org>
* src/error.c, src/gauche/exception.h: Dropped <application-exit>
exception; it doesn't work well. The most annoying part is
that the exception may be shadowed by other exceptions if the
latter is thrown within the error handler; it does happen, for
example, in the cleanup clause of unwind-protect. We still want
the applictation to exit without reporting stack trace even something
fails in cleanup handlers. It seems that application-exit needs
different mechanism to trap (e.g. exit-handler) after all.
2007-03-11 Shiro Kawai <shiro@acm.org>
* src/number.c (Scm_RoundToExact), src/extlib.stub (round->exact etc):
implemented round->exact etc in C, for it can avoid some overhead
and makes them much faster. Since the operation is so common I
think it's worth of it.
* lib/gauche/numerical.scm, src/autoloads.scm: removed round->exact
etc, for they're in extlib.stub now.
2007-03-10 Shiro Kawai <shiro@acm.org>
* src/genconfig.in : Lets genconfig generate lib/gauche/config.scm,
so that gauche.config no longer needs to call gauche-config command.
* lib/gauche/config.scm: Removed from repository, for it is now
generated by src/genconfig.
2007-03-09 Shiro Kawai <shiro@acm.org>
* src/Makefile.in (HOSTGOSH): reset GAUCHE_LOAD_PATH and
GAUCHE_DYNLOAD_PATH to avoid unexpected interference.
* ext/auxsys/auxsys.scm (sys-fdset): added a convenience constructor
of <sys-fdset>.
2007-03-06 Shiro Kawai <shiro@acm.org>
* lib/text/progress.scm: added.
* src/gauche-init.scm, src/scmlib.scm: moved string-interpolate
read-ctor and <exception> definition from gauche-init.scm to
scmlib.scm. We can't move three define-macro stuff yet, since
gencomp doens't preserve macro definitions, but eventually we
want to eliminate gauche-init.scm totally.
* lib/gauche/numerical.scm, src/autoloads.scm: added
round->exact, floor->exact, ceiling->exact and truncate->exact.
2007-03-05 Shiro Kawai <shiro@acm.org>
* src/main.c: Added -F<feature> option and -L<file> option.
2007-03-04 Shiro Kawai <shiro@acm.org>
* src/main.c: Handle <application-exit> during execution of 'main'
procedure.
* lib/gauche/process.scm: Added support of remove execution by
:host keyword argument.
* ext/net/addr.c: Allow <sockaddr-in> and <sockaddr-in6> constructors
to take integer and u8vector IP address as :host initializer
keywords.
* ext/net/netlib.stub, ext/net/netaux.scm: Implements sockaddr-name
of <sockaddr-in> and <sockaddr-in6> in Scheme, since now we have
inet-address->string so they're more concise in Scheme.
* ext/net/net.c (socket-setsockopt): Accepts uniform vector as
a value. We'll phase out the use of string as a binary data
and replace them for uvectors.
2007-03-03 Shiro Kawai <shiro@acm.org>
* lib/gauche/time.scm: use inexact arithmetics to avoid the timer
results being ratnums.
* src/number.c (div_internal): fix: (/ 0 <inexact-number>) must be
the inexact zero, not the exact zero.
* src/extlib.stub: added inexact arithmetics: +. -. *. /.
* ext/net/netaux.scm: added inet-address->string, inet->string->address
and inet-string->address! (these have replaced the provisional
address parsers in rfc.ip).
2007-03-01 Shiro Kawai <shiro@acm.org>
* ext/net/net.c: cleaned up winsock-specific code using
Scm_AddCleanupHandler. Also add the feature gauche.net.ipv6
conditionally.
* src/core.c (Scm_AddFeature): Moved cond-features management code
here from load.c, and cleaned up API.
* src/intlib.stub (cond-features): ditto.
* lib/srfi-0.scm (cond-expand): ditto.
* src/genstub: added 'when' directive.
* src/char.c: added a feature, either one of gauche.ces.utf8,
gauche.ces.sjis, gauche.ces.eucjp, or gauche.ces.none, according
to the compile-time option.
* src/syslib.stub: conditionally add features: gauche.sys.sigwait,
gauche.sys.nanosleep, gauche.sys.crypt, gauche.sys.symlink,
gauche.sys.readlink, gauche.sys.select.
* ext/auxsys/*: conditionally add features: gauche.sys.realpath,
gauche.sys.getloadavg, gauche.sys.putenv, gauche.sys.setenv,
gauche.sys.unsetenv, gauche.sys.lchown.
* ext/fcntl/fcntl.c: conditionally add a feature: gauche.sys.fcntl.
* ext/termios/termiolib.stub: conditionally add features:
gauche.sys.openpty, gauche.sys.forkpty.
* ext/syslog/syslog.stub: conditionally add features:
gauche.sys.syslog, gauche.sys.setlogmask
2007-02-26 Shiro Kawai <shiro@acm.org>
* src/error.c, src/vm.c, src/gauche/exception.h: Support
<application-exit> condition experimentally.
2007-02-24 Shiro Kawai <shiro@acm.org>
* lib/rfc/ip.scm: added ip-parse-address and ip-parse-address!
2007-02-21 Shiro Kawai <shiro@acm.org>
* ext/uvector/*: added Scm_UVectorSizeInBytes and uvector-size to
get uvector's size in bytes. Useful to treat uvectors as a
binary buffer.
* ext/binary/binary.c: changed to use above API.
* ext/net/netlib.stub: added inet-checksum routine; the same checksum
routine is used for various protocols, so it may be worth to have
it (and it's pretty fast in C).
* lib/rfc/ip.scm: Added experimentally.
2007-02-20 Shiro Kawai <shiro@acm.org>
* lib/rfc/uri.scm (uri-encode-string, uri-decode-string): Support
:encoding keyword argument.
(*rfc2396-unreserved-char-set*, *rfc3986-unreserved-char-set*):
Export two slightly different "unreserved" char set, so that
the application can choose (or modify from) either one.
(uri-encode): Change the default :noescape value to
*rfc3986-unreserved-char-set*. Patch by Tatsuya BIZENN.
* ext/net/*: Added socket-recv! and socket-recvfrom!. Changed
socket-send and socket-sendto to accept uniform vectors as well
as strings. These are a part of shift towards using uniform
vectors uniformly for binary data, instead of strings.
* lib/rfc/icmp.scm: added experimentally.
* ext/binary/*: reconsidered and changed the argument order of put-*!
to be consistent with u*vector-set!; after some coding I found that
the original one was too confusing.
2007-02-19 Shiro Kawai <shiro@acm.org>
* configure.ac: added check for sys/types.h; gauche.h includes it
unconditionally, but some configure check (on some specific OS)
needs it to be included, so it is convenient to force all checks
include sys/types.h. (Specifically, sys/socket.h requires
sys/types.h on older MacOSX).
* ext/binary/*: Made default-endian a parameter; it eliminates
need to provide endian argument in almost all cases.
The peculiar endianness of double floats in ARM processors are
supported as arm-little-endian.
Renamed read-binary-uint8 etc. to read-u8 etc. for
brevity and consistency with uniform vectors (old names are
supported for the compatibility, but deprecated).
Added support of read from and write to uniform vectors.
2007-02-18 Shiro Kawai <shiro@acm.org>
* ext/uvector/*, src/read.c: added f16vector support. changed
{s,u}{8,16} unbox routine to use the new conversion API below.
* src/gauche/number.h, src/number.c: Introduced ScmObj -> C integer
conversion routines for u8, s8, u16, and s16.
2007-02-17 Shiro Kawai <shiro@acm.org>
* src/gauche/parameter.h, src/parameter.c: Cleaned up Parameter-related
API. Introduced ScmParameterLoc and Scm_DefinePrimitiveParameter
to make it easier to create and access (builtin) parameters from C.
* src/vm.c, src/gauche/vm.h, src/gauche.h, src/extlib.stub: Changed
accordingly.
* src/number.c (Scm_HalfToDouble, Scm_DoubleToHalf): Added conversion
functions for 16-bit float (half).
* src/gauche/float.h: added.
* configure.ac, src/gauche/config.h.in: added checks for uint16_t
and long double.
* src/test-arith.c: added tests for 16-bit float support.
* ext/binary/binarylib.stub, ext/binary/binary.c, ext/binary/io.scm:
added {read|write}-binary-half-float.
2007-02-16 Shiro Kawai <shiro@acm.org>
* lib/gauche/test.scm: Added an experimental feature to report
the total test result across multiple test processes. If
the environment variable GAUCHE_TEST_RECORD_FILE is defined,
gauche.test accumulates the test result stats into the named
file.
* Makefile.in, src/Makefile.in, ext/Makefile.ext.in: modified
to support the above feature.
2007-02-13 Shiro Kawai <shiro@acm.org>
* src/compile.scm (iform-copy-lvar): fixed bug (compared lvars
by assoc, now by assq). Patch from Rui Ueyama.
2007-02-12 Shiro Kawai <shiro@acm.org>
* src/treemap.c, src/gauche/treemap.h, lib/gauche/treeutil.scm:
Added native support of red-black tree, for it is useful to
implement efficient char-set, character attribute map, and
readtable.
* src/collection.c, src/gauche/collection.h: Besides <collection>
and <sequence>, added two more abstract classes, <dictionary>
and <ordered-dictionary>. These files implement some of
common stuff for these classes.
* src/hash.c: Now inherits <dictionary> as well.
* src/genstub: added <tree-map> as a builtin type.
* src/extlib.stub: added some tree-map native cprocs.
* src/autoloads.scm: added autoloads for gauche.treeutil.
* lib/util/rbtree.scm: removed the previous content and changed
to use builtin tree-map. This is kept for the backward
compatibility.
2007-02-10 Rui Ueyama <rui314@gmail.com>
* src/char.c (charset_print): write a character at once instead of
byte-by-byte.
* src/write.c: fixed a bug of handling multibyte character,
causing Scm_WriteLimited to raise an error.
2007-02-09 Rui Ueyama <rui314@gmail.com>
* test/rfc.scm: Added tests for rfc.html module.
* lib/rfc/http.scm: Added <http-error>. Fixed a bug in the case
of HTTP request is redirected, causing malformed request-line is
sent to a server.
2007-02-04 Shiro Kawai <shiro@acm.org>
* lib/www/cgi/test.scm: Renamed www.cgi-test module to www.cgi.test
module (www.cgi-test is kept for backward compatibility).
* src/port.c, src/gauche.h (Scm_GetOutputString,
Scm_GetOutputStringUnsafe, Scm_GetRemainingInputString): API CHANGE:
New API takes string constructor flags. Compatibility macros
are provided by default; defining GAUCHE_API_0_9 makes the new
API visible.
* src/gauche/string.h: Splitted String API.
* src/string.c, src/extlib.stub: Removed string mutating APIs:
Scm_StringSet(), Scm_StringByteSet(), Scm_StringSubstitute(),
and Scm_StringFill(). Since string bodies are immutable,
there's little advantage for providing these operations in C.
Instead, String_ReplaceBody() and Scheme-level
%string-replace-body! are added. Scheme-level string mutators
are built on top of this.
* src/scmlib.scm: Defines string-set!, string-byte-set! and
string-fill! here. Note: There's no more string-substitute!.
* libsrc/srfi-13.scm: Changed string-copy!, string-upcase!,
string-downcase!, string-titlecase!, string-reverse!,
string-map! and string-xcopy! to use %string-replace-body!
instead of string-substitute!.
2007-02-02 Shiro Kawai <shiro@acm.org>
* src/core.c (Scm_GC): added an API to trigger GC.
* src/gauche.h (SCM_NEW_ATOMIC_ARRAY): added for consistency.
* src/gauche/symbol.h, src/gauche/gloc.h, src/gauche/keyword.h,
src/gloc.c, src/Makefile.in: Reorganized the sources.
2007-02-01 Shiro Kawai <shiro@acm.org>
* ext/dbm/dbm.ac, ext/dbm/dbmconf.h.in, ext/dbm/ndbm.stub,
ext/dbm/odbm.stub: Some platform has gdbm-ndbm.h etc., and/or
requires -lgdbm_compat, for dbm/ndbm compatibility. Added
autoconf stuff to detect that. It became unnecessarily complicated
because of the defect of autoconf design (its name translation
scheme can't distinguish gdbm/ndbm.h and gdbm-ndbm.h!)
* test/system.scm: Changed tests for mkdir/chmod/fchmod to tolerate
the case that the directory is sgid-ed.
* lib/gauche/process.scm (run-process): Changed the API to be
consistent with other keyword-argument taking procedures.
Old API is still supported but deprecated. The reasons of
the change are (1) STk compatibility is much less important
now, and (2) it's easier to write code that calls run-process
if it takes keyword arguments canonically.
2007-01-30 Rui Ueyama <rui314@gmail.com>
* src/read.c (read_internal, process_sharp_comma), src/gauche.h:
avoid evaluating SRFI-10 sharp-comma expression within SRFI-62
S-expression comment.
2007-01-21 Shiro Kawai <shiro@acm.org>
* lib/gauche/package/compile.scm
(gauche-package-link, gauche-package-compile): let them recognize
extra keyword args, for such keywords can be passed via
gauche-package-compile-and-link.
* lib/www/cgi-test.scm (call-with-cgi-script): added :on-abnormal-exit
:ignore to call-with-process-io. (Note: the proper fix may be to
mask SIGPIPE when running the child process instead of ignoring
the error.)
2007-01-21 Rui Ueyama <rui314@gmail.com>
* lib/gauche/common-macros.scm (let-keywords): added let-keywords.
* src/autoloads.scm, test/procedure.scm: changed accordingly.
* lib/gauche/common-macros.scm (let-keywords*): issue a warning if
given argument list contains unknown keyword. It will be
changed to raise an error soon.
* src/genstub (define-cproc etc.): added check for unknown keyword
parameter. A new keyword argument, &allow-other-keys is
introduced to disables the checking.
* ext/charconv/convaux.scm, ext/net/netaux.scm,
ext/vport/vport.scm, lib/dbi.scm, lib/dbm.scm,
lib/file/filter.scm, lib/gauche/libutil.scm,
lib/gauche/package.scm, lib/gauche/portutil.scm,
lib/gauche/process.scm, lib/gauche/test.scm,
lib/gauche/package/build.scm, lib/gauche/package/compile.scm,
lib/gauche/package/fetch.scm, lib/gauche/package/util.scm,
lib/gauche/vm/profiler.scm, lib/net/client.scm, lib/rfc/822.scm,
lib/rfc/hmac.scm, lib/rfc/telnet.scm, lib/rfc/uri.scm,
lib/text/diff.scm, lib/text/html-lite.scm, , lib/text/tr.scm,
lib/www/cgi-test.scm, lib/www/cgi.scm, libsrc/file/util.scm,
libsrc/gauche/collection.scm, libsrc/gauche/sequence.scm:
changed to use let-keywords instead of let-keywords* or
get-keyword.
* ext/threads/test.scm: typo fix.
* ext/uvector/uvseq.scm: call-with-iterator for uniform vector
classes didn't recognize `:size' keyword.
* lib/binary/pack.scm: removed unused variable `keys'. added
keyword check.
2007-01-21 Shiro Kawai <shiro@acm.org>
* lib/gauche/process.scm: added a mechanism to handle child process'
abnormal exit status via <process-abnormal-exit> condition.
This changes the default behavior of process port procedures,
which used to ignore nonzero exit status, now raises an error.
To get the old behavior, add ':on-abnormal-exit :ignore' to
the call of those procedures.
2007-01-18 Shiro Kawai <shiro@acm.org>
* ext/charconv/convaux.scm, ext/dbm/gdbm.scm, ext/net/netaux.scm,
ext/uvector/uvgen.scm, lib/dbm.scm, lib/file/filter.scm,
lib/gauche/cgen.scm, lib/gauche/interpolate.scm,
lib/gauche/libutil.scm, lib/gauche/parseopt.scm,
lib/gauche/process.scm, lib/gauche/redefutil.scm,
lib/gauche/test.scm, lib/gauche/interactive/info.scm,
lib/gauche/package/fetch.scm, lib/rfc/mime.scm,
lib/text/gettext.scm, lib/www/cgi.scm, libsrc/file/util.scm,
src/compile.scm: Replaced 'with-error-handler' for 'guard' or
'unwind-protect'. There are some left in src/scmlib.scm, which
should be replaced after the next release, since 0.8.9 doesn't
know about unwind-protect yet so it wouln't build the CVS HEAD
if we replace them now.
* lib/rfc/ftp.scm: Added. Based on the contribution from
OOHASHI Daichi.
2007-01-17 Shiro Kawai <shiro@acm.org>
* lib/gauche/common-macros.scm (unwind-protect): added unwind-protect,
finally.
* src/autoload.scm: changed accordingly.
* release 0.8.9
2007-01-16 Shiro Kawai <shiro@acm.org>
* ext/net/net.ac: on mingw, we need to inlcude <windows.h> to check
struct sockaddr_storage.
* ext/srfi/srfi-19-lib.scm: make julian-day calculation in inexact
numbers to avoid the huge overhead of rational arithmetic.
* config.guess, config.sub: updated to the newer version.
2007-01-15 Shiro Kawai <shiro@acm.org>
* src/gauche.h: reintroduced the compatibility macros for Scm_Eval,
Scm_EvalCString and Scm_Apply, since there are extension packages
that need more time to migrate. By default, these are defined
to Scm_EvalRec etc. If GAUCHE_API_0_8_8 is defined, these becomes
the new APIs.
2007-01-14 Shiro Kawai <shiro@acm.org>
* src/signal.c (Scm_SigWait): Added a wrapper of sigwait to ensure
removing signal handlers for the signals to wait. The behavior
of sigwait with signal handlers is underined in the spec, and
it causes unpleasant effect on some systems. We also need to ensure
removing signals from the passed masks that are not under control
of Gauche.
(sig_handle): treat signalPendingLimit == 0 case separately to avoid
potential overflow of sigcounts.
2007-01-13 Shiro Kawai <shiro@acm.org>
* src/system.c (Scm_GlobDirectory): dropped SCM_SYSCALL around
glob(), since it doesn't necessarily return a negative value
on error, and it doesn't necessarily set errno. Well, eventually
this function should go away, but for the time being this fix
may be effective.
* gc/darwin_stop_world.c (GC_stop_world): applied a patch posted
to gc-list by Allan Hsu that prevents SEGV on OSX.
* src/class.c (find_core_allocator): added more precise check for
inheritance; the previous code incorrectly rejected a valid
inheritance in which more than one BASE class are included but
they form a single inheritance. The previous code also incorrectly
accepted a class that inherits from BUILTIN class.
2007-01-11 Shiro Kawai <shiro@acm.org>
* src/syslib.stub (sys-fchmod): added. Patch from UEYAMA Rui.
* lib/slib.scm.in: adapted to slib3a4 changes. Based on a patch
by YOKOTA Hiroshi. There're some hacks to make it work with
both old and new slibs.
2007-01-10 Shiro Kawai <shiro@acm.org>
* src/signal.c:
(Scm_SetSignalHandler): set up C-level signal handler so that all
signals are blocked during its execution, in order to avoid race
condition.
(sig_handle): interpret signalPendingLimit==0 as no limit.
2007-01-09 Shiro Kawai <shiro@acm.org>
* src/signal.c, src/gauche/vm.h: changed signal handling; we no longer
queue the signals; instead the C-level signal handler just counts
what signals it received. The order of signal arrival isn't
preserved, but it's ok for most Unixes doesn't guarantee that
anyway. The upper limit of the # of occurrences of the same
signal before VM handles them can be configured by
set-signal-pending-limit; if the signals excceds this limit,
Scm_Abort() is called.
* src/syslib.stub (set-signal-pending-limit, get-signal-pending-limit):
added.
2007-01-09 Rui Ueyama <rui314@gmail.com>
* configure.ac, src/syslib.stub, test/system.scm,
src/gauche/config.h.in : added sys-sigwait
2007-01-08 Shiro Kawai <shiro@acm.org>
* Makefile.in, src/Makefile.in, ...: added datarootdir = @datarootdir@
definition for autoconf 2.60 and after. It works for both pre-2.60
and 2.60; pre-2.60 leaves @datarootdir@ as is, but no other place
refers $(datarootdir) so it is ok; for 2.60, @datadir@ is replaced
for reference of $(datarootdir), so it also works.
2007-01-07 Shiro Kawai <shiro@acm.org>
* lib/gauche/listener.scm (listener-read-handler): fixed a bug
that exits the listener when an error is signaleld during
evaluation. This fix is temporary; more complete fix is required.
* src/mingw-exify : Adapted to Scm_Apply API change.
* src/signal.c (Scm_SetSignalHandler, Scm_SigCheck): Added "mask"
argument to Scm_SetSignalHandler so that one can ensure a signal
handler is executed while certain signals are blocked.
Also added Scm_GetSignalHandlerMask().
* src/syslib.stub (set-signal-handler!, get-signal-handler-mask):
changed accordingly.
* src/scmlib.scm (sys-sigset): added the convenience function.
2007-01-06 Shiro Kawai <shiro@acm.org>
* configure.ac: Removed warning of defaulting encoding to utf-8.
0.8.9_pre1.
2007-01-03 Shiro Kawai <shiro@acm.org>
* src/number.c (Scm_Mul): fixed a silly bug in the short cut paths,
which resulted (* +i 0.0) => +i etc.
2006-12-26 Shiro Kawai <shiro@acm.org>
* lib/gauche/process.scm (%run-process): Fixed a leak bug that didn't
delete a process from the active process list if :wait #t is
given. Thanks for Tomas Stanek to point this out.
2006-12-21 Shiro Kawai <shiro@acm.org>
* lib/dbi.scm (dbi-execute-query): fixed a wrong way of passing
:pass-through arg to dbi-do. This bug only surfaced if the
app was using compatibility APIs.
2006-12-09 Shiro Kawai <shiro@acm.org>
* src/vm.c (run_loop): fix tail-recursive APPLY.
* src/compile.scm (pass2/$LREF): Added a check for circle in
initialization of local variables introduced by letrec. It
have caused an infinite loop in the compiler. Patch from
Rui Ueyama.
2006-12-08 Shiro Kawai <shiro@acm.org>
* src/hash.c (Scm_EqvHash): didn't considered RATNUMs.
2006-12-06 Shiro Kawai <shiro@acm.org>
* vm.c: removed obsoleted experimental code (SMALL_REGS switch and
SAVE_REGS/RESTORE_REGS stuff).
2006-11-30 Shiro Kawai <shiro@acm.org>
* src/string.c (get_string_from_body), src/gauche.h: Avoid accessing
out-of-bound element of the string content to check whether the
string is NUL-terminated. Instead, we introduced a new flag
SCM_STRING_TERMINATED to track whether the string content is
NUL-terminated.
Also we deprecate SCM_MAKSTR_* flags, and consolidated them to
SCM_STRING_* flags.
* various files: Replaced SCM_MAKSTR_* flags for SCM_STRING_* flags.
2006-11-27 Shiro Kawai <shiro@acm.org>
* src/number.c (Scm_InexactToExact): Rule out NaN and Inf before
applying modf.
2006-11-26 Shiro Kawai <shiro@acm.org>
* src/intlib.stub (global-call-type): Experimentally added a feature
to record modules used during expansion, to be used by test-module
later.
2006-11-23 Shiro Kawai <shiro@acm.org>
* src/regexp.c (Scm_RegMatchStart etc.): Optimized counting length
of submatch strings. Patch from Rui Ueyama.
2006-11-20 Shiro Kawai <shiro@acm.org>
* src/class.c (Scm__InitClass): Added missing initialization of
<rational> class.
2006-11-19 Shiro Kawai <shiro@acm.org>
* src/string.c (substring): avoid counting characters when the end
of the substring is equal to the end of the source string.
Patch from Rui Ueyama.
* src/vm.c (Scm_NewVM): a newly created VM didn't inherit current
ports from the prototype. This became visible when a new thread
was created when current ports were bound to ports other than
the standard ones.
2006-11-17 Shiro Kawai <shiro@acm.org>
* src/main.c (main): the change to use the new Scm_Apply was
incorrect; (1) it returns exit_code == 0 when 'main' returns
non-integer, and (2) it exits silently when non-captured
error occurs.
* lib/gauche/condutil.scm (define-condition-type): automatically add
:init-keyword to slots, for the convenience. Based on the patch
from Rui Ueyama.
2006-11-15 Shiro Kawai <shiro@acm.org>
* src/class.c (Scm__InternalClassName): make sure to return a string,
for some code in error.c assumes a string and SEGVs otherwise.
2006-11-13 Shiro Kawai <shiro@acm.org>
* src/vm.c, src/gauche.h: removed compatibility stuff about
Scm_Eval etc.
2006-11-12 Shiro Kawai <shiro@acm.org>
* src/vm.c (Scm_EvalCStringRec): typo fix (was: Scm_EvalRecCString).
* src/gauche.h, src/gauche/vector.h: splitted vector API header.
* src/compile.scm (case, cond): Applied srfi-61/srfi-87 patch from
Rui Ueyama.
2006-11-11 Shiro Kawai <shiro@acm.org>
* release 0.8.8
2006-11-10 Shiro Kawai <shiro@acm.org>
* configure.ac, src/gauche/config.h.in (sunmath): Solaris's compiler
provides isinf() in a separate header/library. Added checks for it.
* src/class.c (unlock_class_redefinition): reset
class_redefition_lock.owner to NULL as well, otherwise the
redefinition lock keeps other threads waiting until the lock holding
thread terminates.
* src/number.c (SCM_IS_INF): Provide an alternative function when
the system does not provide isinf(). We used to inline the check,
but some version of gcc appears to assume incorrectly the condition
would never be satisfied and optimizes it away. (It happened on
gcc-3.3.2/Solaris 5.9/i86pc).
* lib/gauche/logger.scm: We can't determine lock policy statically,
since the lock file may be placed on a filesystem that doesn't
support fcntl lock. So I changed the lock policy to be dynamically
determined at the first access to the file-based log drain.
2006-11-09 Shiro Kawai <shiro@acm.org>
* INSTALL.in, doc/extract: moved away from escm to generate INSTALL
and INSTALL.eucjp, since it is awkward for escm to handle eucjp doc
with utf-8 gauche. Instead I use doc/extract.
* src/vm.c (Scm_VMDefaultExceptionHandler),
src/gauche/vm.h (ScmEscapePoint): added a flag in ScmEscapePoint
to specify whether the dynamic handlers should be rewind before
or after the error handler is invoked. Legacy with-error-handler
assumes they are invoked after the error handler. SRFI-34's guard
requires the handler clauses are invoked after the dynamic env
is rewound. It may be better to change with-error-handler semantics,
but for now, we go with this flag. Do not count on this flag
kept in future.
* src/exclib.stub (with-error-handler): added a keyword arg to
set the ScmEscapePoint flag mentioned above. This is a temporary
solution; applications should not cound on this feature.
* lib/gauche/common-macros.scm (guard): fixed guard semantics
to conform srfi-34, using the above feature.
2006-11-08 Shiro Kawai <shiro@acm.org>
* ext/sxml/sxml-tools.scm.in: Avoid mutual dependency between
sxml.sxpath and sxml.tools by autoloads.
* configre.ac, src/gauche/config.h.in, src/syslib.stub (HAVE_CRYPT_H):
Adds crypt.h if exists, to suppress warnings. Patch from
David Mosberger-Tang and YAEGASHI Takeshi.
* ext/dbm/gdbm.stub (gdbm-open): improved error message.
* src/read.c (ref_val): added missing type declaration of the argument,
which became a problem on 64bit architecture. Patch from
David Mosberger-Tang and YAEGASHI Takeshi.
* lib/gauche/test.scm (closure-grefs): fixed to trace code in the
internal closures. Thanks to Rui Ueyama.
* ext/srfi/srfi-19-lib.scm, ext/sxml/sxml-sxpath.scm.in,
ext/sxml/sxml-tools.scm.in, ext/sxml/sxml/adaptor-scm,
lib/text/gettext.scm, lib/util/stream.scm: fixed the undefined
global reference found by the above patch.
* gc/darwin_stop_world.c, gc/include/private/gc_priv.h,
gc/os_dep.c: Applied Allan Hsu's GC patch for Xcode-2.4/OSX.
* gc/*: bumped to Boehm GC 6.8.
2006-11-07 Shiro Kawai <shiro@acm.org>
* src/gauche.h: define SCM_ILLEGAL_CHAR_* enums to specify illegal
character handling mode.
* src/string.c, src/extlib.stub: add 'handling' argument to
string-incomplete->complete, so that the caller can ensure to
obtain a complete string by omitting or replacing incomplete
chars in the original string. The linear-update versions,
string-complete->incomplete! and string-incomplete->complete!,
are obsoleted (the latter is kept for backward compatibility,
but will go away soon).
* src/gauche/char_utf_8.h (scm_CharUtf8Getc): more strict error
checking.
2006-11-05 Shiro Kawai <shiro@acm.org>
* src/gauche.h (ScmModule): added a field to track module dependency.
* src/error.c (Scm_TypeError): added a convenience API to report
argument type error.
2006-11-04 Shiro Kawai <shiro@acm.org>
* src/gauche/port.h (PORT_SAFE_CALL): Remove bogus check of lockOwner.
* src/class.c (lock_class_redefinition): There was an off-by-one
error in the recursive lock count.
2006-11-02 Shiro Kawai <shiro@acm.org>
* gauche.h, vm.c (Scm_Eval etc.): changed my mind about the names
of the new Eval API. If GAUCHE_API_0_8_8 is defined before including
gauche.h, Scm_Eval, Scm_EvalCString and Scm_Apply have the new
APIs (the old ones are accessible as Scm_EvalRec etc.). If
GAUCHE_API_0_8_8 is not defined, Scm_Eval, Scm_EvalCString
and Scm_Apply have the original API (and Scm_EvalRec etc., are
also available). This helps the transition, while maintaining
compatibility and avoid further extra names like SafeEval.
NB: I'm still not sure about what Scm_Eval etc. should return.
May change my mind again.
* various files: updated accordingly.
2006-10-29 Shiro Kawai <shiro@acm.org>
* src/vm.c (Scm_SafeEval etc.): The previous version was broken.
Needed to set up error handler properly.
2006-10-28 Shiro Kawai <shiro@acm.org>
* src/gauche.h, src/vm.c (Scm_SafeEval): Added convenient and robust
API to call Scheme program casually from C code. Scm_Safe* APIs
catch errors and returns the info in the packet. They also handle
multiple values.
The existing Scm_Eval and Scm_Apply are renamed to Scm_EvalRec
and Scm_ApplyRec, for they call VM recursively. The old names
are #defined for backward compatibility. The plan is to give
Scm_Eval etc. to Scm_SafeEval eventually. The reason is that
Scm_EvalRec etc. are not really for end-user programming, since
handling errors are still cumbersome. Scm_SafeEval is more
intuitive that it (almost) always returns, error or no error.
So Scm_SafeEval is more suitable to get the simpler name, Scm_Eval.
2006-10-21 Shiro Kawai <shiro@acm.org>
* ext/net/test.scm: On some systems IPv6 loopback host name isn't
"localhost" by default, so we apply some heuristics. Patch from
Rui Ueyama.
* src/number.c (read_real): some fixes to handle divide-by-zero cases.
Patch from OOHASHI Daichi.
* lib/util/rbtree.scm, test/util.scm, lib/Makefile.in:
added util.rbtree, contributed from Rui Ueyama.
2006-10-20 Shiro Kawai <shiro@acm.org>
* libsrc/gauche/collection.scm: original 'fold' is now built-in
instead of srfi-1.
* libsrc/gauche/sequence.scm (fold-right): added generic version
of fold-right. It is sequence's operation, since collections
don't care about the order of elements.
2006-10-18 Shiro Kawai <shiro@acm.org>
* src/port.c (Scm_FlushAllPorts): fixed MT-hazard in Scm_FlushAllPorts.
* src/number.c (read_real): Fixed the behavior when too big or
too small exponent is given. Also fixed the handling of explicitly
exact fractional numbers (e.g. #e12.34e3 or #e4e-2).
2006-10-16 Shiro Kawai <shiro@acm.org>
* lib/util/list.scm (cond-list): extended the syntax to allow
splicing, using '@' modifier.
* lib/util/trie.scm (make-trie): revised using new cond-list syntax.
2006-10-15 Shiro Kawai <shiro@acm.org>
* lib/util/trie.scm, lib/Makefile.in, test/util.scm: Added util.trie
module, contributed by OOHASHI Daichi and other people on WiLiKi.
2006-10-14 Shiro Kawai <shiro@acm.org>
* src/extlib.stub (boolean): added boolean procedure, which is
just (compose not not), but convenient if you want to guarantee
the returned value is boolean.
2006-10-07 Shiro Kawai <shiro@acm.org>
* ext/threads/threads.h:
ScmConditionVariable and ScmMutexRec should have SCM_INSTANCE_HEADER,
for they are BASE class (I'm not sure whether I should let them
inheritable or not, so I may revert this and change them to
BUILTIN class in future; but for now, let's maintain the
consistency.)
* src/write.c (Scm_WriteCircular, Scm_WriteLimited):
Fix for write/ss is called during walk pass of outer write/ss.
Patch from Rui Ueyama.
* ext/charconv/convaux.scm (%open-{input|output}-file/conv):
Avoid creating conversion ports when it is unnecessary.
Patch from Tatsuya BIZENN.
* configure.ac: bumped to 0.8.8_pre1.
* ext/sxml/src/serializer.scm, ext/sxml/sxml-serializer.scm.in,
ext/sxml/Makefile.in, doc/modutil.texi:
Added sxml.serializer module, a customizable SXML serializer.
Original code is by Dmitry Lizorkin. Ported to Gauche and
documented by Leonardo Boiko.
* ext/sxml/test.scm:
Added simple tests for sxml.serializer
2006-10-06 Shiro Kawai <shiro@acm.org>
* src/number.c (Scm_Div, Scm_DivInexact): provide backward-compatible
version of division, Scm_DivInexact, which returns flonum when
arguments are exact integers and the result isn't a whole number.
* src/extlib.stub (inexact-/): make the backward-compatible version
of division as 'inexact-/'.
* lib/compat/norational.scm: when used, redefines '/' by 'inexact-/',
so that the existing code that counts on the old behavior can
work as before.
2006-10-05 Shiro Kawai <shiro@acm.org>
* src/port.c (register_buffered_port): Run global GC when the port
vector gets full, so that we may be able to clean up some entries
for garbaged ports. I also found unregister_buffered_port wasn't
necessary. See the comment titled "Tracking buffered ports" in
the source.
The original fix is provided from Michal Maruška.
2006-10-01 Shiro Kawai <shiro@acm.org>
* ext/srfi/srfi-19-lib.scm (date->string): allow '@' option in
the format directive (e.g. ~@b) to gurantee the 'C' locale is
used. Since srfi-19 only provides locale-sensitive directives
for month and day-of-week names, without such extention you
cannot write a library whose output isn't affected with locale
settings.
2006-09-30 Shiro Kawai <shiro@acm.org>
* lib/rfc/cookie.scm (construct-cookie-string): accepts srfi-19
<time> and <date> as well as number and string for :expires
argument.
* src/write.c (Scm_Vprintf): fixed lone '%' in the printf format
string.
2006-09-28 Shiro Kawai <shiro@acm.org>
* libsrc/util/match.scm: fixed a bug that multiple values were not
handled properly under the existence of failure continuations.
Failure handler was expanded into (k <body>), which should be
(call-with-values (lambda () <body>) k).
2006-09-25 Shiro Kawai <shiro@acm.org>
* src/system.c (Scm_YieldCPU): typo fix.
2006-08-27 Shiro Kawai <shiro@acm.org>
* libsrc/file/util.scm: fixed directory-fold to make lister returns
new seed value as well as directory contents, so that it can process
directory pathnames.
2006-08-03 Shiro Kawai <shiro@acm.org>
* lib/rfc/822.scm (rfc822-date->date): fixed treatment of sub-hour
timezone value.
2006-07-25 Shiro Kawai <shiro@acm.org>
* src/gauche/system.h, src/gauche.h : splitted system-related API
declarations to gauche/system.h.
2006-07-22 Shiro Kawai <shiro@acm.org>
* src/gauche/port.h (PORT_LOCK, PORT_UNLOCK, ScmPort): fixed a race
condition caused from PORT_UNLOCK having not been an atomic
operation (setting lockOwner, then calling cond_signal). Now
we drop using condition variable, which also decreases overhead.
See the comment for more detailed discussion.
* src/system.c (Scm_YieldCPU): added an API to yield CPU.
* ext/thread/thread.c, ext/thread/thrlib.stub (thread-yield!):
changed to use Scm_YieldCPU. Dropped Scm_ThreadYield.
2006-07-18 Shiro Kawai <shiro@acm.org>
* ext/charconv/charconv.c (conv_input_closer): Fixed file descriptor
leak by adding code to close the source port if the input port
owns it. Tracked down by Tatsuya BIZENN.
* lib/gauche/vm/profiler.scm (show-stats): properly round the result
of division so that the result won't be shown as a rational number.
2006-07-05 Shiro Kawai <shiro@acm.org>
* src/gauche.h, src/gauche/port.h: splitted public port API
into port.h.
2006-07-04 Shiro Kawai <shiro@acm.org>
* ext/net/net.ac, ext/net/gauche/net.h (struct sockaddr_storage): added
check for struct sockaddr_storage and provides an alternative
if the system doesn't have it. Also rewrote the check of
SIN_LEN etc by AC_CHECK_MEMBERS.
* ext/net/net.c (Scm_SocketRecvFrom): fixed a bug that didn't
retrieve sender's sockaddr correctly. Also applied some cosmetic
fixes by Tatsuya BIZENN.
* configure.ac, src/gauche/config.h.in, src/system.c: use
AC_CHECK_MEMBERS to check struct passwd/group members such
as PW_GECOS.
* ext/net/netlib.stub: fixed typo (SO_RCVBUF). added some more
SO_* constants.
2006-07-03 Shiro Kawai <shiro@acm.org>
* configure.ac: check pthread_spinlock_t type instead of
pthread_spinlock_init() function.
* ext/threads/threads.c (Scm_ThreadStart): fixed a bug of passing
invalid value to pthread_attr_setdetachstate().
* lib/dbi.scm (dbi-parse-dsn): treat "dbi:driver:" as no-option,
i.e. same as "dbi:driver". Suggested by Tatsuya BIZENN.
* ext/sxml/sxml/adaptor.scm (string-rindex): added alias for missing
definition of string-rindex used in sxml-tools.scm
2006-06-23 Shiro Kawai <shiro@acm.org>
* lib/dbi.scm (dbi-make-driver): use module-name->path instead of
library-fold to get a path component of the requested dbd module;
if we get full pathname from library-fold, requiring it doesn't
match with provided path component in the module, causing the
module to be loaded every time dbi-make-driver is called.
2006-06-04 Shiro Kawai <shiro@acm.org>
* src/number.c: Introduced exact rational numbers. Arithmetic
API changed for consistency. Dropped n-ary APIs, since we hardly
see n-ary cases now (the compiler expands primitive arithmetics
to binary applications).
* src/gauche.h, src/gauche/number.h : Splitted numeric APIs to
subfile. This is a first step of slimming down gauche.h.
* src/vm.c, src/test-arith.h, src/stdlib.stub, src/hash.c,
src/bignum.c, src/autoloads.scm, lib/gauche/numerical.scm,
lib/gauche/cgen.scm, lib/srfi-42.scm, ext/uvector/uvgen.scm,
ext/uvector/uvector.c.tmpl, ext/srfi-srfi-19-lib.scm:
Reflected the API changes.
2006-05-30 Shiro Kawai <shiro@acm.org>
* src/gauche.h, src/number.c, src/stdlib.stub: API CHANGE:
changed complex number C API for consistency.
2006-05-27 Shiro Kawai <shiro@acm.org>
* src/regexp.c, test/regexp.scm: fixed bugs that resulted
regexp compilation error.
* lib/rfc/http.scm (send-request): avoid sending "\r\n" after
body (RFC2616 section 4.1).
* lib/gauche/package/compile.scm: dropped quote around CC, for
it may contain options such as 'gcc -std=gnu99'.
2006-05-05 Shiro Kawai <shiro@acm.org>
* src/error.c (Scm_PrintDefaultErrorHeading): fix error message.
* src/genstub (emit-definition): fix error message.
2006-04-28 Shiro Kawai <shiro@acm.org>
* src/char.c (Scm_DigitToInt): fix digit->integer.
(digit->integer #\2 2) yielded 2, should be #f.
2006-04-13 Shiro Kawai <shiro@acm.org>
* doc/Makefile.in: conversion of japanese html lang spec was wrong:
'jp' should be 'ja'.
2006-04-12 Shiro Kawai <shiro@acm.org>
* release 0.8.7
2006-04-07 Shiro Kawai <shiro@acm.org>
* src/autoloads.scm : set autoload for 'time' macro---it seems that
quite a few people who used other Schemes expect it and have
difficulty to find gauche.time module.
* src/gauche-install.in (ensure-directory): made mode/owner/group
change effective for the directory creation by gauche-install -d.
(currently it is only effective on the last component of the
directory).
2006-04-06 Shiro Kawai <shiro@acm.org>
* doc/Makefile.in: reverted jp document from utf-8 to euc-jp,
for some tools still don't like utf-8.
* src/compile.scm (pass1/define-inline): made define-inline keeps
its effect outside its compiler unit.
* ext/net/net.c (socket_finalize, Scm_SocketClose): clear
inPort/outPort when we're done to help GC.
* lib/srfi-0.scm: added some newly supported srfis.
* lib/gauche/test.scm (test-module): added a check to find out
referencing undefined global variables, as suggested by
Kazuki Tsujimoto. A new keyword argument, :allow-undefined,
is introduced to disable the checking on certain variables.
* ext/net/test.scm, ext/auxsys/test.scm: changed accordingly.
2006-04-05 Shiro Kawai <shiro@acm.org>
* ext/srfi/srfi-19-lib.scm, ext/uvector/matrix.scm,
libsrc/srfi-13.scm: fixed typo of local variable names.
2006-03-26 Shiro Kawai <shiro@acm.org>
* src/module.c (Scm_FindBinding, Scm_GlobalVariableRef): API CHANGE:
instead of stay_in_module boolean flag, it takes bitmasks so that
we can extend it later. Scm_GlobalVaribleRef takes a new flag,
SCM_BINDING_KEEP_AUTOLOAD, to choose not to resolve autoload, which
is required in some special occasions.
* src/vm.c, src/moplib.stub, src/macro.c, src/load.c, src/intlib.stub,
src/gauche.h, src/extlib.stub, src/compaux.c, src/class.c:
changed accordingly.
* ext/net/netlib.stub (SOMAXCONN): added SOMAXCONN constant (suggested
by Tatsuya BIZENN).
2006-03-25 Shiro Kawai <shiro@acm.org>
* ext/termios/termiolib.stub (sys-forkpty-and-exec): changed
argument from optionals to keywords, to support :sigmask.
2006-03-24 Shiro Kawai <shiro@acm.org>
* src/system.c (Scm_SysExec): added support of setting signal mask
before exec.
* src/syslib.stub (sys-exec, sys-fork-and-exec): Changed API to take
keyword arguments :iomap and :sigmask. The old signature (optional
iomap) is supported for backward compatibility, but will be gone
in future.
* lib/gauche/process.c (run-process): allow :sigmask keyword argument.
2006-03-17 Shiro Kawai <shiro@acm.org>
* lib/util/queue.scm (dequeue!): avoid non weak-GC-robust pattern.
See the comment for the details.
* src/objlib.scm (ref*): Added utility procedure ref*, as suggested
by Issac Trotts. Ref methods for some builtin classes are also
added here.
2006-03-14 Shiro Kawai <shiro@acm.org>
* lib/util/stream.scm (stream-cons): The original srfi-40 reference
implementation evaluates the second argument twice within delay.
2006-03-12 Shiro Kawai <shiro@acm.org>
* ext/auxsys.c, ext/auxsyslib.stub: moved sys-gettimeofday to
main system. support sys-times on mingw32, emulating times()
by GetProcessTimes.
* src/system.c, src/syslib.stub: added Scm_GetTimeOfDay, an
abstraction of gettimeofday() call. On mingw32 we emulate it
with GetSystemTime. sys-gettimeofday is moved here.
* src/gauche/mingw-compat.h : some addition for above changes.
2006-03-11 Shiro Kawai <shiro@acm.org>
* src/system.c (Scm_BaseName, Sys_DirName): handles drive letters
sensibly on mingw32.
* src/syslib.stub (sys-sleep): Use Sleep() win32api call on mingw32.
2006-03-10 Shiro Kawai <shiro@acm.org>
* src/autoloads.scm, lib/gauche/procedure.scm: added forgotten exports
and autoloads (filter$ etc.) Patch from Michael Campbell.
2006-03-09 Shiro Kawai <shiro@acm.org>
* src/regexp.c etc. Added support of backreferences, named captures,
and lookback assertions to regexp. (Patch from Rui Ueyama).
* src/gauche/regexp.h: Splitted regexp-related objects into this
header; their internals are not of general interest.
* lib/dbi.scm (dbi-execute-query): the adapter to the legacy dbd
interface passes :pass-through option to the dbi-do for compatibiliy.
This change doesn't affect the new dbd interface.
* ext/net/netaux.scm (make-server-socket): added :backlog keyword
argument to customize the backlog number passed to socket-listen.
(Patch from Tatsuya BIZENN).
* src/genstub: fixed setter procedure generation. By looking up
the stub name of setter procedure, instead of assuming naming
convention, we can now handle setter defintion in define-cgeneric
clause (it needs different treatment since their C stub name would
differ from normal cproc/cmethod).
2006-03-07 Shiro Kawai <shiro@acm.org>
* src/genstub: fixed several typos in cgeneric setter generation
code (Patch from Takahiro Horii).
2006-03-04 Shiro Kawai <shiro@acm.org>
* src/compile.scm (module-qualified-variable?): filtered out the
case that non-variable could be passed to cenv-lookup.
* src/gauche.h (SCM__DEFINE_CLASS_COMMON),
src/gauche/pthread.h, src/gauche/uthread.h:
Iniitalize the mutex and condition variable in the statically
defined builtin classes.
* src/class.c (method_more_specific): fixed a bug when comparing
methods both of which have rest arg.
2006-03-03 Shiro Kawai <shiro@acm.org>
* gc/*, src/genstub, src/gauche/config.h.in: Bumped to Boehm GC 6.7.
Support NetBSD threads. (Patch from Tatsuya BIZENN).
* lib/www/cgi.scm (cgi-header): changed line terminators from '\n' to
'\r\n', in order to follow the spec precisely. Some httpds don't
like '\n'.
2006-02-17 Shiro Kawai <shiro@acm.org>
* src/genconfig.in: Avoid using '\"' sequence within the string that
is generated by shell script---apparantly some shells treat
backslashes differently in this case, causing compatibility problem.
Using single quotes is an easy solution. (Thanks to Robbert
Haarman for pointing this out).
2006-02-10 Shiro Kawai <shiro@acm.org>
* libsrc/srfi-13.scm (string-copy!): fixed argument range check bug
(Thanks to Jeff Read).
2006-02-08 Shiro Kawai <shiro@acm.org>
* 0.8.7_pre1. Entered release test cycle.
* gc/darwin_stop_world.c: applied Bruce Mitchener's memory leak patch
posted on Boehm GC list.
2006-01-27 Shiro Kawai <shiro@acm.org>
* lib/gauche/vm/debugger.scm (debug-print): made the width of
information to print customizable by the parameter
debug-print-width.
(debug-source-info): added.
* src/autoloads.scm: added debug-print-width and debug-source-info.
* src/write.c (Scm_WriteLimited, Scm_Format): Fixed a bug that
didn't propagate shared-structure-mode flags, causing write routine
to go infinite loop even it is called with ss-mode.
* src/signal.c (Scm_SysSigmask): Allow NULL to newmask arg, if
the caller just want to obtain the mask without modifying it.
2006-01-26 Shiro Kawai <shiro@acm.org>
* ext/net/netdb.c: rewrote some code using Scm_CStringArrayToList.
* ext/termios/termiolib.stub (sys-forkpty-and-exec): added.
* ext/termios/termios.c (Scm_ForkptyAndExec): ditto.
* src/string.c (Scm_CStringArrayToList): API Change - integrated
copying and non-copying version, and added FLAGS argument to
specify which.
* src/system.c (Scm_SysPrepareFdMap, Scm_SysSwapFds):
extracted core functionality of I/O remapping in Scm_SysExec,
so that it can be used from other extensions.
* src/string.c (Scm_ListToConstCStringArray, Scm_ListToCStringArray):
added.
* lib/dbi.scm (generate-sql/parameters): fix referencing out-of-scope
variable.
* ext/binary/io.scm: some optimization and cosmetic changes.
* doc/modutil.texi: made "binary.io" official.
2006-01-22 Shiro Kawai <shiro@acm.org>
* src/gauche/exception.h, src/error.c : added Scm_UnhandledSignalError.
* src/signal.c (default_sighandler): the default signal handler now
throws <unhandled-signal-error>.
* src/extlib.stub (with-ports): added.
2006-01-21 Shiro Kawai <shiro@acm.org>
* lib/text/sql.scm (sql-tokenize): fixed the regexp stack overflow
problem when very long input is given.
* src/compile.scm (pass1/body): handles ((with-module x y) arg ...)
form in the beginning of lambda body.
* src/syslib.stub (sys-wait, sys-waitpid): syscall wasn't restarted
when wait/waitpid was interrupted.
2006-01-20 Shiro Kawai <shiro@acm.org>
* src/compile.scm (pass1/body): added a check for improper list
in the lambda body.
* src/load.c (Scm_VMLoad), src/main.c, lib/gauche/vm/profiler.scm:
added -pload profiler option.
* src/vm.c (Scm_VMUnwindProtect, Scm_VMNextHandler, Scm_VMRewindProtect):
added.
* src/port.c (Scm_GetRemainingInputString): fixed a bug that didn't
consider ungotten chars.
2006-01-19 Shiro Kawai <shiro@acm.org>
* src/compile.scm (module-qualified-variable?): fixed to check if
with-module has the right binding when parsing
((with-module m v) ...) form.
2006-01-15 Shiro Kawai <shiro@acm.org>
* src/compile.scm (pass1): support compilation of a form in which
the head position has (with-module mod identifier). This allows
one to refer syntactic keyword from other module, e.g.
((with-module gauche define) x 4). This, in turn, gives more
flexibility for modules to redefine syntaxes.
2006-01-10 Shiro Kawai <shiro@acm.org>
* src/extlib.stub (global-variable-ref): added second optional
argument to limit the lookup within the module.
* src/module.c (Scm_GlobalVariableRef): dropped Scm_SymbolValue
and added this corresponding to global-variable-ref.
* src/gauche.h (Scm_SymbolValue): definds it as a macro which
expands to Scm_GlobalVariableRef call.
* src/vm.c (throw_cont_calculate_handlers, user_eval_inner):
dynamic handlers didn't properly invoked when error occurred
during reinstallation of dynamic handlers via call/cc.
(Patch from Kazuki Tsujimoto).
2006-01-09 Shiro Kawai <shiro@acm.org>
* src/vm.c, src/vminsn.scm: added some experimental VM insns.
not really used yet.
* src/Makefile.in (newinsn): added a special build sequence
in case the VM insn set has been changed.
* src/compile.scm (iform-copy): lvar in $LSET insn wasn't copied,
causing compiler internal error (Patch from Kazuki Tsujimoto).
Also fixed wrong handling of label assoc list in copying $LABEL
node.
2006-01-07 Shiro Kawai <shiro@acm.org>
* libsrc/gauche/collection.scm (maybe-minimum-size): should return
#f if any of collection's size isn't immediately known. Patch
from Takahiro Horii.
* src/compile.scm (pass1/body): fixed a bug in an argument of
error function (Patch from Kazuki Tsujimoto).
2006-01-06 Shiro Kawai <shiro@acm.org>
* ext/net/net.c (Scm_SocketInputPort, Scm_SocketInputPort):
prohibit creating i/o ports from closed socket.
* src/gauche.h: removed SCM_VECTOR_FOR_EACH, for it was buggy and
not a very useful API.
* src/hash.c: rewrote the only instance of using SCM_VECTOR_FOR_EACH.
* libsrc/gauche/collection.scm (map-to): size estimatin was wrong when
multiple collections of uneven lengths are given.
* libsrc/gauche/sequence.scm (map-to-with-index): ditto.
* lib/util/stream.scm (write-stream, ->stream-char): fix let-optionals
-> let-optionals*.
* lib/gauche/procedure.scm (complement): added complement.
* src/compile.scm (pass2/$CALL): fixed a bug that caused an internal
compiler error when local function inline expansion happens
recursively. Many thanks to Jun Inoue for tracking this bug
down.
* lib/text/sql.scm (sql-tokenize): INCOMPATIBLE CHANGE: changed to
return SQL unquoted identifiers as strings. This is because
we want to preserve the case of identifiers; although SQL is
case-insensitive, some RDBMS honors the case of table and
column names. It would be very confusing if pass-through SQL and
SQL parsed by sql-tokenize behaves differently.
* lib/dbi.scm (generate-sql/parameters): adapted to the above change.
* src/port.c (bufport_read): fixed a bug that could block read
from non-full-buffered port even there are some data in the
buffer.
* INSTALL.esc: corrected the default encoding (euc-jp -> utf-8).
2006-01-03 Shiro Kawai <shiro@acm.org>
* src/system.c (Scm_DirName): fixed a bug that doesn't handle a
pathnames with a single slash at the beginning, like "/abc".
2005-12-21 Shiro Kawai <shiro@acm.org>
* src/write.c (write_object_fallback), src/class.c (class_print):
Show whether the class is redefined. This helps to avoid confusions
during interactive development when the class is redefined.
2005-12-04 Shiro Kawai <shiro@acm.org>
* src/extlib.stub (read-block): fixed a bug that may cause SEGV later.
(patch from Tatsuya BIZENN).
2005-11-23 Shiro Kawai <shiro@acm.org>
* lib/util/relation.scm (util.relation): relation-rows wasn't exported.
2005-11-17 Shiro Kawai <shiro@acm.org>
* lib/util/stream.scm (stream-filter): fixed a bug from the reference
implementation that didn't handle the end of stream correctly.
2005-11-11 Shiro Kawai <shiro@acm.org>
* ext/template.Makefile.in : add $(DESTDIR)
2005-11-10 Shiro Kawai <shiro@acm.org>
* src/signal.c (sig_handle): in the sigqueue overflow warning,
show the signal name and number as the debugging aid.
* src/number.c (Scm_Divide): fixed a bug that busts VM when
a bignum is divided by zero.
* lib/gauche/collection.scm, lib/gauche/sequence.scm,
lib/gauche/hook.scm, lib/gauche/parameter.scm: moved to libsrc/,
and compiled into DSOs under ext/gauche.
* test/colseq.scm, test/hook.scm, test/parameter.scm: moved into
ext/gauche.
* ext/gauche/* : compile some of gauche.* modules into DSOs
* configure.ac, ext/Makefile.in, lib/Makefile.in: adjusted
accordingly.
2005-11-09 Shiro Kawai <shiro@acm.org>
* src/gencomp: added --keep-private-macro option to emit some
private macros into the generated Scheme file by --ext-module
option. It's a kludge, but needed to compile gauche.parameter.
* src/preload.scm: added to make HOSTGOSH more compact. See the file
for the detailed explanation.
* src/Makefile.in (HOSTGOSH): rewrote using preload.scm
2005-11-07 Shiro Kawai <shiro@acm.org>
* src/main.c (main): recognize drive letter in argv on MinGW32.
* configure.ac: fixed a problem for configuring with
--enable-multibyte=none. (Pointed by Sven Hartrumpf).
2005-11-04 Shiro Kawai <shiro@acm.org>
* release 0.8.6
* src/genconfig.in: added --prefix optoin.
* ext/template.configure.ac: override the default prefix by the prefix
used to compile installed Gauche.
2005-11-03 Shiro Kawai <shiro@acm.org>
* src/Makefile.in : fixed to make sure lib/gauche/vm/insn.scm is
generated at pre-package stage.
* src/genconfig.in: generates src/gauche/arch.h simultaneously as
src/gauche-config.c, for it's simpler to synchronize (esp. in
MinGW).
* src/Makefile.in : changed accordingly.
* src/genarch : removed.
* lib/util/relation.scm (<relation>): no longer inherits <collection>,
since <sequence> can also become as a relation. It now behaves
like a mixin. Added the relation-rows method to adapt to the
collection.
* lib/gauche/sequence.scm (ref): restrict second arg to <integer>,
so that it won't interfere if the object inherits <sequence> and
something else.
2005-11-02 Shiro Kawai <shiro@acm.org>
* src/regexp.c (rc_setup_context): fixed a bug that caused
regexp-compile to choke if an external AST containing non-greedy
match, assertin, etc.
2005-11-01 Shiro Kawai <shiro@acm.org>
* ext/charconv/charconv.c, ext/net/netdb.c : force static data to
be in .data section instead of .bss section, for .bss section can't
be reliably scanned by GC.
* src/syslib.stub (sys-fork): force GC_gcollect() just before fork(),
to avoid the page dirty bits synchronization problem on Solaris.
(See my post in the Boehm gc mailing list on Nov 1).
2005-10-30 Shiro Kawai <shiro@acm.org>
* lib/www/cgi.scm (cgi-main): ensure error page output goes to the
current-output at the time cgi-main is called.
2005-10-29 Shiro Kawai <shiro@acm.org>
* src/syslib.stub (sys-close): added for low-level tweaking.
2005-10-28 Shiro Kawai <shiro@acm.org>
* src/regexp.c (rc_setup_context): fixed a bug that caused
regexp-compile to choke if an external AST containing 'wb' or
'nwb' node is given.
(rc3_rec): fixed bad assertion.
* lib/binary/pack.scm (read-one-packer): fix 'V' directive, and
added n!, N!, v!, V! directives as the signed variants of
n, N, v, and V. (Patch from Masatake YAMATO).
2005-10-27 Shiro Kawai <shiro@acm.org>
* lib/www/cgi.scm (get-mime-parts): put a code to accomodate broken
IE sending improperly quoted value to content-disposition field.
(Patch from Tatsuya BIZENN).
* src/system.c (time_compare): implement proper compare function
so that equal? will work on <time>'s.
* ext/srfi/srfi-19-lib.scm (time<=? etc): changed accordingly.
* src/char.c (charset_compare): implement compare function properly,
so that equal? will work on charsets.
* ext/vport/vport.c (bport_allocate): accept :buffer-size keyword
argument to specify the size of the buffer (Patch from Tatsuya
BIZENN).
2005-10-26 Shiro Kawai <shiro@acm.org>
* src/system.c (Scm_NormalizePathname, Scm_BaseName, Scm_DirName):
rewrote to handle multibyte pathnames correctly (even with sjis
that may contain 0x5c in the second byte).
2005-10-25 Shiro Kawai <shiro@acm.org>
* src/gencomp (insert-ext-initializer): emit SCM_INIT_EXTENSION
in the initialization routine when it is compiling stand-alone
Scheme file (i.e. --ext-module option is given).
2005-10-23 Shiro Kawai <shiro@acm.org>
* configure.ac, Makefile.in, src/genconfig.in : added experimenal
support to build Gauche as a private framework on MacOSX.
After installing Gauche as usual, configure the source with
--enable-framework, then do 'make framework'.
* src/genarch, src/paths.c, src/gauche/paths.h, src/getdir_*.c,
src/core.c:
splitted out the routines to obtain runtime pathnames.
2005-10-21 Shiro Kawai <shiro@acm.org>
* src/genconfig.in: added --pkg{inc|lib|arch}dir option for more
flexible extension configuration.
* ext/template.Makefile.in, ext/template.configure.ac: adapted to
--pkg*dir option of gauche-config. With the generated configure
script, the package installer can choose installation location
by command-line options such as --prefix, --exec-prefix, --libdir
or --datadir.
2005-10-12 Shiro Kawai <shiro@acm.org>
* src/string.c, src/gauche.h (ScmString): API CHANGE: ScmString
is splitted into the header part and the immutable body
(ScmStringBody), for thread safety. See the lengthy comment
in the STRING section of gauche.h. New thread-safe API,
Scm_GetStringContent and SCM_STRING_BODY* macros are added.
Use of SCM_STRING_LENGTH, SCM_STRING_SIZE and SCM_STRING_START
is deprecated.
* src/*.{c,stub}, ext/*/*.{c,stub}: adapted to the above changes.
2005-10-09 Shiro Kawai <shiro@acm.org>
* doc/libgauche-ref.texi: dumped.
* doc/gauche-dev.texi: started.
2005-10-07 Shiro Kawai <shiro@acm.org>
* ext/srfi/srfi-19-lib.scm (tm:integer-reader-exact): fixed typo.
2005-10-06 Shiro Kawai <shiro@acm.org>
* src/class.c (generic_initialize): It turned out we don't need a
special initialization method for <generic>. We can just let
the default initialization method to handle it. The custom
initialization method had a problem of initializing slots defined
in a subclass of <generic>.
* lib/dbi.scm : added some more backward-compatibility code.
2005-10-05 Shiro Kawai <shiro@acm.org>
* lib/srfi-55.scm (require-extension): when srfi number unknown to
the Gauche runtime is given, it expands to (use srfi-N) anyway,
so that it may work if the user put srfi-N.scm in the load-path.
(This is useful to make Alex Shinn's common-scheme work).
2005-10-04 Shiro Kawai <shiro@acm.org>
* src/vector.c (Scm_MakeVector): check the size argument.
* ext/srfi/srfi-43-lib.scm: added support of srfi-43.
* ext/srfi/test.scm: ditto.
2005-10-03 Shiro Kawai <shiro@acm.org>
* src/list.c (Scm_ListTail): added fallback argument for consistency.
* src/vector.c (Scm_ListToVector): added start and end arguments
to support srfi-43's extended list->vector.
* src/*.c : some files are affected by the above API changes.
2005-10-02 Shiro Kawai <shiro@acm.org>
* src/prof.c (Scm_ProfilerStart): fixed bugs that the temporary file
wasn't reopened after profiler reset, and profiler-show/profiler-stop
segfaulted if profiler-start hadn't been called. Patch from
Michael Campbell.
* src/autoloads.scm (profiler-show): autoloads gauche.vm.profiler.
2005-09-30 Shiro Kawai <shiro@acm.org>
* src/system.c (Scm_NormalizePathname): fixed memory corrupting bug.
2005-09-22 Shiro Kawai <shiro@acm.org>
* lib/rfc/http.scm (receive-body-chunked): added error checking of
premature end of chunked body, and fixed a bug referring a
nonexistent variable (patch from Michael Campbell).
2005-09-20 Shiro Kawai <shiro@acm.org>
* src/load.c (Scm_LoadAutoload): fixed a bug that autoload's
definition enviornment and resolution environment didn't match.
2005-09-18 Shiro Kawai <shiro@acm.org>
* lib/gauche/common-macros.scm (until): missing => as a literal
identifier.
2005-09-13 Shiro Kawai <shiro@acm.org>
* libsrc/file/util.scm (relative-path?): recognize pathnames beginning
with '~' as a relative pathname. Tilda expansion must be done
before any operation on pathnames anyway.
2005-09-12 Shiro Kawai <shiro@acm.org>
* lib/dbi.scm, lib/dbd/null.scm, test/dbidbd.scm : reverted the change
in 9/6, and we use <dbi-query> and dbi-execute again. It is because
some drivers require an explicit deallocation of resources used
by prepared query, and we can't do it nicely with closures.
2005-09-11 Shiro Kawai <shiro@acm.org>
* src/class.c (accessor_get_proc, accessor_set_proc): fixed a long
standing bug about an undesired interaction of modules and accessor
methods. Check out test/object.scm "module and accessor" section
for an explanation and an example.
* lib/gauche/let-opt.scm, lib/gauche/singleton.scm,
lib/gauche/validator.scm : issue warning when used. preparation
of removing these obsoleted modules.
* src/genstub, *.stub : added define-enum-conditionally to abbreviate
the common idiom of defining Scheme enum constant only if it is
defined in C. Rewrote some .stub files by using it.
* ext/net/netaux.scm, ext/net/net.scm: compile Scheme part into
libnet.so.
* ext/net/netlib.stub (socket-status): made returned symbol lowercase,
in sync with the documentation.
* src/gauche.h (SCM_FOREIGN_POINTER_P): use SCM_ISA to check.
* src/syslib.stub: exposed some unix error codes (such as EINTR)
as predefined constants.
2005-09-10 Shiro Kawai <shiro@acm.org>
* configure.ac (--enable-multibyte): Switched the default encoding
from euc-jp to utf-8. Issue a warning and wait for user's
reaction if --enable-multibyte is not given to ./configure,
in order to avoid confusion.
* lib/dbi.scm, lib/dbd/null.scm : dropped <dbi-object> and
<dbi-result-set>. Moved dbi-get-value to the deprecated section.
Defines fallbacks of dbi-open? and dbi-close.
* lib/util/relation.scm (util.relation): exports <simple-relation>
and <object-set-relation>.
* src/module.c (Scm_FindBinding): fixed a bug that inadvertently
exposes non-exported symbols to outside.
2005-09-09 Shiro Kawai <shiro@acm.org>
* ext/mt-random/mt-random.c (mt_allocate): allow u32vector to be
given to :seed initarg.
* ext/srfi/srfi-19-lib.scm (tm:integer-reader-exact): fixed typo
in function name.
* src/genstub : added 'code' spec to the cproc body so that
the cproc can perform some checking before 'call' or 'expr' spec.
* ext/charconv/convaux.scm: splitted Scheme-defined functions
from charconv.scm and compile them into charconv.so.
2005-09-06 Shiro Kawai <shiro@acm.org>
* lib/dbi.scm, lib/dbd/null.scm: Revised API. Now dbi-prepare
returns a closure that executes the prepared query when invoked.
Dropped dbi-execute. Dropped dbd-prepare and dbd-execute, since
the driver can now just overload dbi-prepare.
Renamed dbd-make-connection to dbi-make-connection to make
every method is called dbi-* now (the legacy dbi-make-connection
can be distinguished by the signature). Sets the default method
of legacy dbi-make-query and dbi-execute-query so that the old
client code that uses legacy DBI API can work with the new dbi/dbd.
* libsrc/srfi-13.scm (%string-prefix-int): fix (Patch by
Michal Maruška).
2005-09-05 Shiro Kawai <shiro@acm.org>
* src/main.c (further_options): comment options for internal use.
2005-09-04 Shiro Kawai <shiro@acm.org>
* m4/*, aclocal.m4 : adapetd to the newer autotools convention.
* acinclude.m4: removed. superseded by m4/gauche.m4.
2005-09-03 Shiro Kawai <shiro@acm.org>
* ext/template.configure.ac : renamed configure.in -> configure.ac
* src/gauche-package.in : ditto
* examples/mqueue-cpp/configure.ac: ditto
* examples/spigot/configure.ac: ditto
2005-09-02 Shiro Kawai <shiro@acm.org>
* lib/gauche/common-macros.scm (while, until): now these are
supported officially, with additional syntax to bind a variable
during execution of repetition body.
* src/class.c (Scm_ForeignPointerAttr etc): added 'attributes' alist
to a foreign pointer. See the comments in gauche.h for its usage.
2005-09-01 Shiro Kawai <shiro@acm.org>
* lib/dbi.scm : ensure dbi-parse-dsn always return a string and
a list as option-string and option-alist.
2005-08-31 Shiro Kawai <shiro@acm.org>
* lib/gauche/interactive/info.scm (viewer): check whether TERM is
"dumb", for the newer XEmacs sets it.
* src/genstub: reverted to tolerate 'void' to be a return type
as well as '<void>' (to accept legacy stub files).
(define-type): fixed the behavior when #f is specified for
predicate/unboxer/boxer names.
* src/gencomp: adds #include <gauche/macro.h> to the output C code
(necessary if a traditional macro is compiled in).
* lib/gauche/package/util.scm, lib/gauche/package/build.scm: changed
to ask password immediately after "gauche-package install" command
is invoked with "--install-as" option. The previous versions asked
pass before actual installation, which was annoying when the build
process took long.
2005-08-30 Shiro Kawai <shiro@acm.org>
* doc/extract : switched to generate Japanese document in utf-8.
Partly because the new texi2html uses utf-8 if I specify --lang=jp.
* lib/text/sql.scm: renamed text.sxql to text.sql, since I keep
being confused (was it sqxl or sxql?) and also it's awkward to type.
2005-08-29 Shiro Kawai <shiro@acm.org>
* lib/dbi.scm (dbi-escape-sql): changed not to add surrounding quotes.
* src/module.c (Scm_FindBinding): fixed a problem that export
shadowed the binding that should be visible in the module body.
* src/moplib.stub (%ensure-generic-function): ensure the method
definition always inserts the binding of the generic function
in the current module.
* lib/dbi.scm: let the default methods for legacy API raise an
error, to catch the case a dbd implentation fails to implement
necessary methods.
* util/relation.scm : changed its name to singular for the consistency
of gauche.collection etc.
2005-08-28 Shiro Kawai <shiro@acm.org>
* src/gencomp: improved macro handling
* Reorganized to compile some Scheme libraries as extension modules.
* libsrc/* : library sources that are compiled as extension modules,
_and_ required during compilation, are moved here from lib.
* src/main.c : when -ftest flag is given, add ../libsrc to the
search path as well.
* lib/gauche/cgen.scm : added regexp literal support.
* src/stdlib.stub : added regexp-case-fold?
* lib/gauche/procedure.scm: partial evaluated versions of srfi-1
procedures are moved here.
2005-08-27 Shiro Kawai <shiro@acm.org>
* src/main.c (main): reversed search priority of 'lib' and 'src'
when -ftest option is given. See the comment for the details.
* src/gencomp: added -o option to specify the output .c name
(experimental).
2005-08-26 Shiro Kawai <shiro@acm.org>
* src/Makefile.in: introduced HOSTGOSH macro to be used whenever
host gosh is required.
* gc/configure.in: set LARGE_CONFIG.
2005-08-25 Shiro Kawai <shiro@acm.org>
* ext/xlink: removed dependency to the library modules.
2005-08-24 Shiro Kawai <shiro@acm.org>
* src/objlib.scm (%expand-define-class): avoid embedding literal
closure to the macro output, for it prevents the code using
define-class from being pre-compiled by gencomp. Instead we
insert an identifier.
* src/gauche-init.scm: removed compatibility hack of loading
gauche.object for transition of 0.8.3->0.8.4.
* lib/gauche/object.scm: removed, for it is no longer needed.
* src/gencomp: Experimentally added --ext-module option to allow
gencomp to emit a module interface scm file, so that it can be
used to compile extension modules out of Scheme library easily.
This is highly experimental; interface and build process may
likely change.
* src/core.c: changed accordingly.
* ext/sxml/*: using the above change, compile sxml.ssax, sxml.sxpath
and sxml.tools into extension modules.
* ext/uvector/uvseq.scm : added to compile collection & sequence
framework stuff into libgauche-uvector.so.
* ext/srfi-19/*: this is also turned to an extension.
2005-08-23 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen.scm (<cgen-scheme-char-set>): added support for
the literal char-set.
2005-08-22 Shiro Kawai <shiro@acm.org>
* src/gauche.h (SCM_FOREIGN_POINTER_REF): takes type argument for
casting.
* lib/gauche/logger.scm (log-default-drain): exposed the default
drain as a parameter.
* src/module.c, src/gauche.h, src/symbol.c: put the information
of whether a binding is exported or not in gloc, instead of
module->exported list. We keep the exported list only for backward
compatibility and the convenience of meta-module utilities.
This change makes Scm_FindBinding faster, since it doens't need
to scan the exported list. We also removed the weird convention
of putting #t to the exported list to show export-all status---now
exported list always keeps the list of exported symbols, even
the module is export-all-ed ('define' adds the defined symbol to
the exported list).
As a side effects, the 'export' syntax is interpreted in more
strict way; specifically, you shouldn't export a symbol which you
don't define in the module. It used to be ignored, but now it
shadows the earlier binding of the symbol.
2005-08-19 Shiro Kawai <shiro@acm.org>
* src/main.c (main): use GC_INIT macro instead of our own #ifdef-ed
GC initialization stuff.
2005-08-18 Shiro Kawai <shiro@acm.org>
* src/vm.c (Scm_EvalCString): added for convenience.
2005-08-15 Shiro Kawai <shiro@acm.org>
* src/number.c (IEXPT10_TABLESIZ): we need to enlarge pre-calculated
exp10 table to handle denormalized numbers.
2005-08-12 Shiro Kawai <shiro@acm.org>
* src/vm.c, src/vmstat.c: added some code to record instruction
and instruction pair frequency (enabled only if vm.c is compiled
with COUNT_INSN_FREQUENCY defined). The collected data will be
useful for tuning.
* src/extlib.stub: the spec of hash-table-update! was broken. PROC
should be called with the default value, when the given key hasn't
been in the table.
2005-08-11 Shiro Kawai <shiro@acm.org>
* src/vm.c: experimentally added the custom mark procedure for the
VM stack under USE_CUSTOM_STACK_MARKER flag. It doesn't show
any improvement, so currently it's turned off.
2005-08-10 Shiro Kawai <shiro@acm.org>
* gc/* : upgraded to Boehm GC 6.5.
2005-08-09 Shiro Kawai <shiro@acm.org>
* ext/net/netlib.stub, ext/net/net.scm : added sys-htonl, sys-htons,
sys-ntohl and sys-ntohs (based on the patch by John Kilburg).
* src/genstub: fixed a bug in <uint> stub-type handling.
2005-08-07 Shiro Kawai <shiro@acm.org>
* lib/Makefile.in: enable installation of dbi.
* lib/util/queue.scm: added copy-queue.
* src/genstub: allow 'maybe' type qualifier to have stub-generated
code to handle #f <-> NULL conversion. also supports multiple
value return in 'body' spec.
* *.stub: adapted to the new specs.
2005-08-06 Shiro Kawai <shiro@acm.org>
* lib/util/isomorph.scm (object-isomorphic?): was a normal procedure,
which should be a generic function.
2005-08-05 Shiro Kawai <shiro@acm.org>
* src/hash.c, test/hash.scm: hash-table-type has been broken for
a while. (Patch from Ueyama Rui)
2005-08-04 Shiro Kawai <shiro@schemearts.com>
* src/gauche/char_utf_8.h: fixed u_char*/char* pointer confusion.
2005-08-01 Shiro Kawai <shiro@acm.org>
* configure.ac: 0.8.6_pre1
* examples/mqueue-cpp: An example of writing bindings to C++ libraries.
* src/genstub: rewriting genstub 2nd stage: added new CPROC specs,
'body' and 'expr'. They can make typical cproc body much shorter.
The 'return' spec is deprecated, in favor of 'call' spec.
Also added C++ exception handling support---with 'catch' spec,
the stub body is surrounded by try-catch construct and C++ exceptions
raised in the body is converted to Gauche exception.
* *.stub: adapted to the new CPROC specs.
2005-07-31 Shiro Kawai <shiro@acm.org>
* src/genstub: rewriting genstub 1st stage: adopted gauche.cgen
framework to generate code.
2005-07-30 Shiro Kawai <shiro@acm.org>
* lib/file/util.scm (path-sans-extension): fixed abnormality when
passed a pathname without dirname part.
* lib/gauche/logger.scm (default-lock-policy): select 'file lock
policy only for MacOSX 10.2 and before. 10.3 and later supports
fcntl (Patch from Tatsuya BIZENN).
* src/gauche-package.in: add --cc flag in 'compile' command to
specify alternative C compiler; handy when you're writing a bridge
to C++ library.
* src/genstub: added <const-cstring> stub type.
* src/class.c: revised foreign-pointer API to take flags. supports
the mode that keeps one-to-one mapping between foreign pointer and
wrapping ScmObj, for easier resource management.
* src/weak.c: added WeakBox C API.
2005-07-28 Shiro Kawai <shiro@acm.org>
* src/hash.c, src/gauche.h, src/*: rehashed hashtable API to allow
raw C data in keys and values.
* src/*: code cleanup: replaced SCM_HASHTABLE -> SCM_HASH_TABLE and
SCM_WEAKVECTOR -> SCM_WEAK_VECTOR for naming consistency.
SCM_HASHTABLE remains as alias for a while, since it may be used
in some extensions, but should go away very soon.
2005-07-24 Shiro Kawai <shiro@acm.org>
* src/vm.c (run_loop): Fixed handling of numVals. Some instructions
used not to set numVals so that the previous numVals 'leaked',
yielding incorrect result.
2005-07-22 Shiro Kawai <shiro@acm.org>
* src/core.c (Scm_AddCleanupHandler, Scm_DeleteCleanupHandler):
Added API for C-level handlers that are called before exitting
Scheme.
(Scm_Exit, Scm_Cleanup): allows the application to call cleanup
part separately, for the apps that wants some operation after
shutting down Scheme system.
* src/main.c : rewritten profiler and statistics output using
the new cleanup handler API.
2005-07-21 Shiro Kawai <shiro@acm.org>
* src/module.c (Scm_FindModule): API CHANGE for consistency. Now
it takes bitflags as the second arg, and returns ScmModule*
instead of ScmObj. Also it signals an error if flags = 0 and
named module doesn't exist.
This shouldn't affect typical usages, for most of them are either
passing TRUE in the second arg (in new API it's the same meaning),
and casting the returned value immediately to ScmModule*.
* src/error.c (Scm_Raise): Make Scm_VMThrowException an internal API,
and provide Scm_Raise instead.
(Scm_RaiseCondition): A convenience procedure to create a condition
and raise it.
* src/gauche.h, src/vm.c, src/read.c, src/main.c, src/load.c,
src/gencomp, src/extlib.stub, src/exclib.stub, ext/* :
Changed accordingly.
2005-07-18 Shiro Kawai <shiro@acm.org>
* src/class.c, src/gauche.h (ScmForeignPointer): added convenience
procedures to wrap foreign pointers.
* src/syslib.stub (sys-strerror): added.
2005-07-16 Shiro Kawai <shiro@acm.org>
* lib/file/util.scm (make-directory*): do not call sys-mkdir if the
last component of the path is ".".
* src/gauche-install.in : added -U (uninstall) option.
* ext/template.DIST, src/gauche-package.in, examples/spigot/README:
Let "gauche-package generate" put DIST script, too. Changed
description in spigot/README to reflect the new way of using
gauche-package.
* lib/util/stream.scm: added srfi-40 and more.
2005-07-15 Shiro Kawai <shiro@acm.org>
* src/promise.c, src/gauche.h, src/compile.c, src/extlib.stub,
src/vm.c: Adopted srfi-45 semantics of lazy evaluation. A new
primitive syntax 'lazy' is added. See srfi-45 for the details.
* lib/util/relations.scm (util.relations): added. A generic
framework of dealing with relations. This module will grow later.
2005-07-11 Shiro Kawai <shiro@acm.org>
* src/error.c, src/exclib.stub, src/scmlib.scm (error, errorf):
implement error and errorf in Scheme, allowing to specify
condition class to throw.
* lib/slib.scm.in : additional interface for slib3 (patch from
Dai Inukai).
2005-07-10 Shiro Kawai <shiro@acm.org>
* src/extlib.stub: deprecate symbol-bound?, superceded by
global-variable-bound?. See the manual for the reason.
Also added global-variable-ref.
* src/scmlib.scm (symbol-bound?): implemented here for the backward
compatibility; will go away in future.
* ext/auxsys/auxsys.scm, ext/net/net.scm, ext/net/test.scm,
ext/termios/test.scm, lib/gauche/modutil.scm, test/*.scm:
replaced symbol-bound? for global-variable-bound?
2005-07-06 Shiro Kawai <shiro@acm.org>
* src/vm.c (save_env, save_cont): improved stack-overflow handling
performance. (x5.7 compared to 0.8.5).
2005-07-02 Shiro Kawai <shiro@acm.org>
* lib/gauche/package/compile.scm : utility to compile & link
extension modules.
* src/gauche-package.in: added 'compile' and 'generate' command
to ease extension module building.
* ext/template.*: template files for extension modules.
"gauche-package generate" creates the skeleton from these files.
2005-07-01 Shiro Kawai <shiro@acm.org>
* lib/gauche/regexp.scm (regexp-replace*, regexp-replace-all*):
useful fns to apply multiple regexp replace on a string.
2005-06-30 Shiro Kawai <shiro@acm.org>
* release 0.8.5
* src/signal.c : fixed a problem that with-signal-handlers reset
SIGCHLD handler to SIG_IGN afterwards.
* src/number.c (double_print): changed notation of infinity to #i1/0
to emphasize inexactness. (this notation might change depending
on how srfi-70 comes out).
* src/port.c, src/system.c : set O_BINARY by default on MinGW.
For sys-rename, unlink the destination file before calling rename()
on MinGW, since Windows doesn't allow rename over an existing file.
(NB: this breaks atomicity of rename operation).
* src/mingw-exify, src/Makefile.in : to run gauche-* utilities on
Windows, we decided to generate .exe files for them.
* lib/file/util.scm (find-file-in-paths): Adapt MinGW, which uses
#\; for PATH directory separator.
2005-06-29 Shiro Kawai <shiro@acm.org>
* src/genconfig.in, Makefiles : better MinGW support
* src/system.c (Scm_Globdirectory): support on MinGW
* lib/file/util.scm: better MinGW support
2005-06-27 Shiro Kawai <shiro@acm.org>
* lib/www/cgi.scm (cgi-default-output): make sure cgi-default-output
writes out everthing even if output conversion port is inserted.
2005-06-23 Shiro Kawai <shiro@acm.org>
* src/genconfig.in : introduced to make gauche-config a compiled
executable.
* src/gauche-config.in : removed, for a shell script doesn't work
well on Windows/MinGW. Instead, src/genconfig generates a C
file gauche-config.c, which is then compiled to gauche-config.
2005-06-22 Shiro Kawai <shiro@acm.org>
* src/Gauche.spec : change Copyright: entry to License: for newer
version of rpm.
* src/gauche.h, src/string.c, ext/uvector/uvector.c.tmpl,
ext/mt-random/mt-lib.stub, ext/digest/sha1.stub,
ext/digest/md5.stub : code cleanup to eliminate warnings.
2005-06-20 Shiro Kawai <shiro@acm.org>
* src/vector.c (Scm_VectorCopy): added fill argument to adopt srfi-43.
* src/extlib.stub (vector-copy): ditto.
2005-06-16 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen.scm (cgen-emit-c): added some kludge to save cygwin.
* src/number.c : let division by zero yields infinity instead of
an error. Adopted a notation of 1/0 and -1/0 for positive and
negative infinity, following the current srfi-70 draft.
Treatment of NaN should be considered later.
2005-06-15 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen.scm (cgen-with-output-file): close the port
before unlinking or renaming the file, since Win32 doesn't like
a unclosed file to be removed.
* src/compile.scm (inliner/-): There was a bug in constant-folding
path that yields a wrong value. Gosh!
2005-06-08 Shiro Kawai <shiro@acm.org>
* src/compile.scm (and-let*): fix to handle lone BOUND-VARIABLE
case (patch provided by Michael Campbell).
2005-06-05 Shiro Kawai <shiro@acm.org>
* src/compile.scm : typo fix (Patch from Hisazumi Kenji).
2005-06-01 Shiro Kawai <shiro@acm.org>
* src/system.c (time_nsec_set): fixed a format string bug in the
error message that caused double fault.
2005-05-31 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen.scm (cgen-allocate-static-datum): avoid generating
cast exprsesion when the value can be used as an lvalue.
2005-05-30 Shiro Kawai <shiro@acm.org>
* release 0.8.4
* src/compile.scm (stmt-context): fixed typo.
* src/gencomp (compile-toplevel-form): avoid emitting useless toplevel
code that only contains CONSTU-RET instruction (such code is
sometimes generated as the result of macro expansion).
* src/code.c : expose codeSize field as size slot.
2005-05-29 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen.scm: revised handling of static C data for Scheme
literals to avoid forward-reference problem.
* src/gencomp: ditto
2005-05-28 Shiro Kawai <shiro@acm.org>
* src/macro.c: fixed module handing during syntax-rules compilation
(passing current module explicitly instead of relying on
CURRENT_MODULE).
* src/gauche/compaux.c (Scm_MakeIdentifier): API fix. Removed
Scm_MakeIdentifierWithModule.
* src/gauche/vm.h, src/macro.c, src/intlib.stub, src/gencomp,
src/compile.scm: changed accordingly
2005-05-27 Shiro Kawai <shiro@acm.org>
* src/compile.scm (pass1 program): added a check for function
application syntax being a proper list.
2005-05-26 Shiro Kawai <shiro@acm.org>
* configure.ac: added --enable-runtime-pseudo-reloc ld flag for MinGW.
2005-05-25 Shiro Kawai <shiro@acm.org>
* lib/gauche/procedure.scm (compose): allow zero or one arguments
to compose (Suggested by Ueyama Rui).
2005-05-24 Shiro Kawai <shiro@acm.org>
* examples/spigot/Makefile.in : remove rpath link option, for it is
not portable and not necessary anyway.
2005-05-23 Shiro Kawai <shiro@acm.org>
* lib/srfi-55.scm: added srfi-55.
* ext/auxsys/auxsys.scm (sys-getloadavg), ext/auxsys/auxsyslib.stub,
ext/auxsys/auxsysconf.h.in, configure.ac, src/autoloads.scm:
Added sys-getloadavg (based on a patch from John Kilburg).
* ltmain.sh, configu.guess, config.sub: updated for the latest version.
* src/gauche/arith_i386.h : Applied patch from NIIBE Yutaka for
better register allocation.
* src/regexp.c, test/regexp.scm, src/builtin-syms.scm : Added
support of lookahead assertion (Patch from Ueyama Rui)
2005-05-22 Shiro Kawai <shiro@acm.org>
* lib/srfi-42.scm : Added srfi-42 support; it is a port of srfi-42
reference implementation. Contributed by Alex Shinn.
* lib/Makefile.in : changed accordingly.
2005-05-21 Shiro Kawai <shiro@acm.org>
* src/gauche.h (ScmSyntax), src/compaux.c: simplified ScmSyntax
handling. Now syntax handlers are defined in Scheme and called
from VM, so we can use Scm_VMApply to call them.
* src/compile.scm : we don't change vm-current-module during
compilation anymore. VM's current module info is taken at
the beginning of COMPILE as the default module, but then the
info is kept private throughout the compiler and the constructs
such as WITH-MODULE won't affect the VM's current module.
This may affect CURRENT-MODULE call in the traditional macro
(which used to be the module of the code being compiled).
This is a provisional change: we need to consider semantics of
SELECT-MODULE.
Also various small optimization is done.
* src/autoloads.scm, src/gauche-init.scm, lib/gauche/modutil.scm:
EXTEND, EXPORT-ALL and REQUIRE are now recognized by the compiler.
2005-05-17 Shiro Kawai <shiro@acm.org>
* ext/threads/mutex.c (Scm_MutexLock, Scm_MutexUnlock): added
protection for the case that mutex can be locked indefinitely
by killed thread. (Patch from Michael Campbell).
* lib/srfi-19/format.scm (tm:locale-long-month->index): fixed
incorrect call to find-index (Patch from Michael Campbell).
2005-05-16 Shiro Kawai <shiro@acm.org>
* src/compile.scm (compile), src/compaux.c (Scm_Compile): API fix.
2005-05-15 Shiro Kawai <shiro@acm.org>
* src/gencomp (vectorize-code): fix to make the dumped code work on
both 32bit and 64bit architecture.
2005-05-13 Shiro Kawai <shiro@acm.org>
* src/load.c (Scm_VMLoadFromPort): Lock port during loading. This
slightly improves script loading performance.
* src/compile.scm, src/code.c: rewrote instruction emitting & combining
routine (pass3/emit!) in C for better compiler performance.
(20-25% gain!). Also optimized pass1/global-call.
* src/intlib.stub: changed accordingly.
2005-05-11 Shiro Kawai <shiro@acm.org>
* src/vm.c (Scm_NewVM): removed redundant 'module' parameter.
(Scm_AttachVM): added API.
* ext/threads/threads.c: changed accordingly.
* src/regexp.c : added range check of jump offset.
2005-05-10 Shiro Kawai <shiro@acm.org>
* ext/dbm/gdbm.scm (dbm-db-copy, dbm-db-rename): didn't work. fixed.
* ext/uvector/uvlib.stub.tmpl: some linear-updating binop didn't
reuse the arg.
2005-05-01 Shiro Kawai <shiro@acm.org>
* lib/srfi-1.scm, lib/srfi-1/*.scm: removed some procedures that are
already defined in the core.
2005-04-30 Shiro Kawai <shiro@acm.org>
* src/objlib.scm: embed gauche/object.scm into the core library.
* src/gencomp: Fixed handling of identifiers.
* src/compile.scm: Object system macros (define-class etc) are now
handled as syntax, though this should be transient until gencomp
properly handles macros.
* src/gauche-init.scm, src/core.c, src/autoloads.scm:
changed accordingly.
2005-04-28 Shiro Kawai <shiro@acm.org>
* src/code.c (Scm_CompiledCodeDump): unwrap syntax from the source
code info display of the disassembler output.
2005-04-27 Shiro Kawai <shiro@acm.org>
* src/compile.scm: fixed a critical bug in the stack handling.
2005-04-26 Shiro Kawai <shiro@acm.org>
* src/configure.ac: 0.8.4_pre2
* src/vm.c, src/compile.scm: changed sematics of LOCAL_ENV_JUMP's
parameter to indicate the # of environment frame to discard.
It is required to keep the correct frame adjustment.
NB: you need working 0.8.4_pre2 to build this version.
2005-04-24 Shiro Kawai <shiro@acm.org>
* src/compile.scm (define-simple-struct): rewrote the macro for
simpler use.
* lib/gauche/cgen.scm: improved literal registration handling.
The time for compiling compile.scm becomes a tenth of the previous
version.
2005-04-22 Shiro Kawai <shiro@acm.org>
* src/vm.c (run_loop): changed LOCAL-ENV-JUMP, LOCAL-ENV-CALL, and
LOCAL-ENV-TAIL-CALL to get the nargs from SP - ARGP, instead of
the insn param. The insn param will be used for other purpose.
2005-04-21 Shiro Kawai <shiro@acm.org>
* lib/gauche/vm/debugger.scm, src/autoloads.scm: removed procedures
obsoleted by the new VM.
* src/main.c: changed the profiler option to '-p' from '-fprofiler',
to allow future extensions.
2005-04-20 Shiro Kawai <shiro@acm.org>
* lib/gauche/interpolate.scm (%string-interpolate): insert bare symbols
instead of procedures themselves. Not hygiene, but necessary for
the program that reads and writes the forms that containts #`"..."
syntax.
* src/gencomp: allow the filename to have '+'/'-' char.
* src/compile.scm: fixed a few serious bugs.
2005-04-19 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen.scm: define scm__staticStrings as const.
* src/gencomp: substitute (current-module) during compilation to
avoid the expanded form from containing literal modules, and from
exposing temporary anonymous module used in the compilation.
In the dumped code, a call to current-module becomes a call to
find-module.
2005-04-18 Shiro Kawai <shiro@acm.org>
* src/stdlib.stub (real-part, imag-part): moved back here, for there's
not much advantage to having these outside the core.
* lib/gauche/numerical.scm: changed accordingly.
* src/autoload.scm: changed accordingly.
* lib/slib.scm.in (*features*): removed slib from *features* list
to avoid (use slib) to load srfi-29, which overrides builtin 'format'
by the incompatible srfi-29's format.
* src/gauche.h (SCM_EXTENDED_PAIR_P): fixed a bug that caused SEGV
when the macor was applied to statically allocated objects.
* src/extlib.stub (hash-table-update!): added, based on John Kilburg's
patch.
* test/hash.scm: added test for hash-table-update!, based on
John Kilburg's patch.
2005-04-13 Shiro Kawai <shiro@acm.org>
* src/prof.c: do not use one-shot timer, for it misses too many
samples.
* src/link-dylib: fix build problem on MacOS X (Patch from
Tatsuya BIZENN).
* src/compile.scm (pass2/local-call-optimizer): fixed a bug that
messes up argument list when the lambda node is traversed twice
in pass2.
2005-04-11 Shiro Kawai <shiro@acm.org>
* joined NVM0_8_3 branch to the trunc.
* configure.ac: version 0.8.4_pre1
* src/compile.scm, src/vm.c, src/vminsn.scm : Removed most of
the new instructions in the past several days, since it turned
out that they don't have much effect on the performance. Let's
keep the VM ISA simple for now; we might find more effective way
later.
2005-04-10 Shiro Kawai <shiro@acm.org>
* src/compile.scm: emit BNEQC, BNEQVC, BNUMNEF, BNLTF, etc.
* src/vm.c (Scm_VMDefaultExceptionHandler), src/gauche/vm.h:
fixed a bug that may cause SEGV when stack overflow occurs
during error handlers. The 'cont' pointer of currently
executing escape point wasn't updated by the continuation
frame relocation.
2005-04-05 Shiro Kawai <shiro@acm.org>
* src/compile.scm : refactored.
* src/vminsn.c : added quite a few new instructions.
2005-04-03 Shiro Kawai <shiro@acm.org>
* src/compile.scm (pass2): fixed closure optimizer.
2005-04-02 Shiro Kawai <shiro@acm.org>
* src/compile.scm (pass3): calculate maximum stack depth.
(pass2/$IF): more optimization.
* src/code.c (Scm_CompiledCodeFinish): take maximum stack depth arg.
* src/vm.c: now we know how much stack each closure would consume,
we need to CHECK_STACK only when we enter a new closure (and some
stack-manipulating places at runtime).
* src/vminsn.scm: renamed from EXTEND-ENV to
LOCAL-ENV-CLOSURES, and removed unused insns PRE-TAIL, POP and DUP
EXTEND-ENV-POP1 is also dropped for now, since it seems too
kludgy (we may be resurrect it, but only after we try other
optimization strategies).
2005-04-01 Shiro Kawai <shiro@acm.org>
* src/compile.scm (pass2/$IF): optimize to omit redundant jumps.
* src/vminsn.scm, src/vm.c : added LOCAL-ENV-TAIL-CALL insn.
2005-03-31 Shiro Kawai <shiro@acm.org>
* src/compile.scm, src/compaux.scm, src/intlib.stub : implement the
most frequently called procedure "cenv-lookup" in C to improve
compiler performance.
2005-03-30 Shiro Kawai <shiro@acm.org>
* src/compile.scm, src/vminsn.scm, src/vm.c, src/code.c: start adding
closure analysis. Also cleaned up some code.
2005-03-22 Shiro Kawai <shiro@acm.org>
* src/comp.scm -> src/compile.scm : renamd
* src/compile.c -> src/compaux.c : renamed
* src/core.c, src/Makefile.in : changed accordingly.
* src/gauche/vm.h, src/comp.scm, src/intlib.stub, src/main.c:
splitted COMPILE_NOINLINE flag into three categories for the
better debuggability.
2005-03-21 Shiro Kawai <shiro@acm.org>
* src/comp.scm: more local closure inlining
* src/scmlib.scm: some more srfi-1 procedures implemented here
to be used in comp.scm.
2005-03-20 Shiro Kawai <shiro@acm.org>
* src/comp.scm: eliminate binding of some locally bound closures and
inline it.
2005-03-19 Shiro Kawai <shiro@acm.org>
* src/comp.scm: enable closure inlining (global inlining of
define-inline'd procedures, and local inlining of directly
called lambdas).
NOTE: With this feature enabled, the compiled code (by gencomp)
contains a literal vector of intermediate form. If we change the
IForm definition, make sure to build the bootstrap version of
compiler with -fno-inline.
* src/gauche/code.h (ScmCompiledCode): added intermediateForm slot
to keep IForm for later inlining.
* lib/gauche/cgen.scm : allow literal vectors to be emitted
statically.
2005-03-16 Shiro Kawai <shiro@acm.org>
* src/comp.scm: tweaked typical patterns of letrec and named let.
* src/vminsn.scm: added more combined instructions, and removed
obsoleted ones.
2005-03-15 Shiro Kawai <shiro@acm.org>
* prefix.scm (%string-suffix-int): fixed a bug that returned wrong
character count.
2005-03-14 Shiro Kawai <shiro@acm.org>
* src/comp.scm: turned on the pass2 optimization. added some more
combined instructions. selection of specialized instructions
(e.g. NUMADDI) is pushed back to pass3/$ASM, instead of in the
inliner functions, so that we can take advantage of constant
folding and local variable renaming.
* src/vminsn.scm, src/vm.c: added CONSTx, CONSTx-PUSH, EQVI, BNEQVI,
PEEK-CHAR, CURIN, CUROUT, CURERR instructions.
2005-03-13 Shiro Kawai <shiro@acm.org>
* src/comp.scm: separate $let and $letrec intermediate forms. emit
EXTEND-ENV-CLOSURES instruction for letrec.
* src/vminsn.scm, src/vm.c, src/code.c:
Support EXTEND-ENV-CLOSURES instruction. Removed a few obsoleted
instructions. Made Scm_Apply more efficient.
2005-03-12 Shiro Kawai <shiro@acm.org>
* src/vminsn.scm, src/vm.c: removed obsoleted LET and TAIL-LET
instructions.
2005-03-11 Shiro Kawai <shiro@acm.org>
* src/*: removed SCM_VM_INSN stuff. The compiled code vector is
created by compiled code builder API (in code.c), and the VM
instruction themselves are no longer distinct Scheme objects.
Instead, the VM instructions are dealt with simple integers.
By this change, the older-style compiled program representation,
i.e. a directed graph of VM instructions, is completely gone.
2005-02-28 Shiro Kawai <shiro@acm.org>
* src/code.c, src/gauche/code.h: refactored out compiled-code stuff
to separate files.
2005-02-21 Shiro Kawai <shiro@acm.org>
* src/comp.scm: improved quasiquote handling so that it generates
compile-time constant structure if the unquoted expressions are
all constant (including references to the constant variables).
* test/primsym.scm: added more tests for quasiquotes.
2005-02-19 Shiro Kawai <shiro@acm.org>
* src/scmlib.scm: moved some autoloaded built-ins into this, which
is compiled into libgauche.
* src/autoload.scm, src/core.c, src/Makefile.in: changed accordingly.
* lib/gauche/listutil.scm, lib/gauche/with.scm: removed accordingly.
* src/gauche-init.scm: moved some definitions to scmlib.scm.
2005-02-17 Shiro Kawai <shiro@acm.org>
* src/load.c (Scm_Load): fixed a bug that treats LOAD_QUIET_NOFILE
flag incorrectly.
* src/main.c: added -fprofile option to profile the script.
* lib/gauche/vm/profiler.scm : fix
2005-02-16 Shiro Kawai <shiro@acm.org>
* src/vminsn.scm, src/vm.c : changed LAMBDA insn to CLOSURE insn,
dropping arg # parameters (now they're in compiled code). Also
integrated DEFINE-CONST into DEFINE; two are now distinguished
by its parameter.
* src/gauche/vm.h : added evalSituation field to ScmVMRec to support
eval-when construct.
* src/comp.scm: added eval-when construct.
2005-02-13 Shiro Kawai <shiro@acm.org>
* src/comp.scm (and-let* form cenv): support and-let* natively.
(quasiquote): improved generated code.
* src/gauche-init.scm, src/load.c : provide srfi-2 by default, for
and-let* is now supported natively.
* lib/srfi-2.scm: removed.
2005-02-12 Shiro Kawai <shiro@acm.org>
* src/vm.c: fix positions of SCM_PROF_COUNT_CALL to properly record
method invocation. assign names to the code created internally
at runtime (e.g. apply, eval) so that they can be shown in the
profiler output.
* src/builtin-syms.scm: added some symbols for the profiling purpose
described above.
* src/comp.scm: series of performance tuning.
2005-02-09 Shiro Kawai <shiro@acm.org>
* src/prof.c, src/gauche/prof.h: moved experimental profiler code
from core.c to here, and make the profiler buffer VM-local instead
of global.
2005-02-05 Shiro Kawai <shiro@acm.org>
* src/comp.scm: changed intermediate structure to use nested vectors.
changed define-builtin-inliner to assign inliner function directly
to the builtin subrs.
2005-02-04 Shiro Kawai <shiro@acm.org>
* src/core.c: added experimental sampling profiler code. it uses
ITIMER_PROF, so it won't be available for all platforms.
* lib/gauche/vm/profiler.scm: profiler utilities.
2005-02-02 Shiro Kawai <shiro@acm.org>
* configure.ac, src/gauche/config.h.in (DOUBLE_ARMENDIAN):
added check to support ARM processor.
* src/number.c (union ieee_double), ext/binary/binary.c (SWAPD):
support ARM's mixed endian
* ext/uvector/uvectorP.h (s8unbox): ensure return type is signed
char.
2005-01-25 Shiro Kawai <shiro@acm.org>
* lib/gauche/condutil.scm (extract-condition): fixed a bug that
error was used where errorf should have been. Patch from
Ueyama Rui.
2005-01-24 Shiro Kawai <shiro@acm.org>
* extlib.stub (append!): fixed to allow non-list in the last arg,
for consistency of srfi-1.
2005-01-16 Shiro Kawai <shiro@acm.org>
* lib/gauche/vm/insn.scm.src, src/gencomp: calculate generated code
vector using the target compiler's instruction set, instead of
the host compiler's.
* src/vminsn.scm: rearranged.
2005-01-15 Shiro Kawai <shiro@acm.org>
* src/comp.scm: implemented builtin procedure inlining.
2005-01-14 Shiro Kawai <shiro@acm.org>
* src/compile.c, src/vm.c, src/comp.scm, etc: snapshot of replacing
the legacy compiler for the new compiler. Legacy code is #ifdef-ed
out. Procedure inlining is not supported, but other functionalities
work.
2005-01-09 Shiro Kawai <shiro@acm.org>
* src/vm.c, src/gauche/vm.h (ScmSyntacticClosure): Added syntactic
closure object. Although most functionalities that deal with
syntactic closures will be written in Scheme, we need a disjoint
type for this, and we need it without bootstrapping.
2005-01-08 Shiro Kawai <shiro@acm.org>
* src/list.c (Scm_Length): changed API to return distinct values for
dotted and circulare lists (SCM_LIST_DOTTED and SCM_LIST_CIRCULAR,
respectively). This shouldn't affect existing code, since they
all checks if the return value is negative or not.
* src/gauche.h : added the enums for above change, and also added
three macros, SCM_PROPER_LIST_P, SCM_DOTTED_LIST_P and
SCM_CIRCULAR_LIST_P.
* src/extlib.stub : included srfi-1's proper-list?, dotted-list?
and circular-list?.
2005-01-07 Shiro Kawai <shiro@acm.org>
* ext/net/net.scm (make-server-socket, make-server-sockets): added
:sock-init keyword arguments (Patch from Tatsuya BIZENN).
2005-01-05 Shiro Kawai <shiro@acm.org>
* ext/mt-random/mt-random.scm (mt-random-integer): fixed a bug in
rarely-executed branch of the code.
2004-12-30 Shiro Kawai <shiro@acm.org>
* src/intlib.stub : moved some APIs from extlib which are only intended
to be used by Gauche internal routines.
2004-12-27 Shiro Kawai <shiro@acm.org>
* src/class.c (Scm_ClassOf, Scm_EOFObjectClass, Scm_UndefinedObjectClass):
added classes for singleton immediate object #<eof> and #<undef>.
* src/vm.c : added some API needed to run pre-compiled code.
* src/gencomp : added initial version of a script to pre-compile
the compiler.
* src/comp.scm : added a skeleton of the compiler.
2004-12-26 Shiro Kawai <shiro@acm.org>
* lib/gauche/condutil.scm, lib/gauche/object.scm (object-apply):
moved object-apply of <condition-type> from condutil.scm to
object.scm, so that condition-type-as-predicate works without
loading condutil.scm.
* src/compile.c, src/class.c (<identifier>): expose identifier
internals to Scheme. This is temporary solution until the compiler
is revised.
* lib/gauche/cgen.scm : handles static literals more wisely.
* src/autoloads.scm, src/builtin-syms.scm : changed accordingly.
* src/gauche.h (SCM_STRING_CONST_INITIALIZER): separated constant
string initializer to an individual macro.
2004-12-24 Shiro Kawai <shiro@acm.org>
* lib/file/util.scm: added decompose-path, path-extension,
path-sans-extension and path-swap-extension.
* Makefile.in, src/Makefile.in, lib/Makefile.in (pre-package):
added a target 'pre-package', which should be run before creating
distribution tarball. It generates some files that requires
pre-installed Gauche.
* lib/gauche/vm/insn.scm.src : added. It generates insn.scm from
src/vminsn.scm.
* src/compile.c (Scm_Compile): changed API to make Scm_Compile as
the default gate to the compiler module.
* src/vm.c, src/gauche.h: changed accordingly.
2004-12-23 Shiro Kawai <shiro@acm.org>
* src/vminsn.scm, src/geninsn: added. manage VM insn definition
in Scheme format instead of *.h and cpp trick.
* src/gauche/vminsn.h: removed. Now it is generated from vminsn.scm.
* src/gauche/vm.h: no longer include vminsn.h. The C files that needs
vminsn symbols must include gauche/vminsn.h explicitly.
* src/vm.c, src/compile.c, src/macro.c, src/stdlib.stub,
src/extlib.stub, src/moplib.stub: changed accordingly.
* src/Makefile.in: added rules to generate vminsn.[ch].
2004-12-22 Shiro Kawai <shiro@acm.org>
* src/vm.c, src/gauche/vm.h,
src/compile.c, src/proc.c, src/builtin-syms.scm :
Changed VM to use code-vector instead of directed graph.
The compiled code is now converted to ScmCompiledCode before
executed. This is the first stage of the new VM/compiler
architecture.
* src/core.c, src/main.c :
Added -fcollect-stats option experimentally, to collect and
display VM stats info.
* lib/gauche/vm/disasm.scm : removed. the functionality is
supported by core.
* lib/gauche/procedure.scm : the 'disasm' function (wrapper
of more primitive subrs) are defined here.
2004-12-21 Shiro Kawai <shiro@acm.org>
* src/gauche/arith_i386.h (UMULOV, SMULOV): use "g" constraint to
avoid gcc from failing to allocate registers in some cases.
* acinclude.m4, aclocal.m4 (AC_GAUCHE_OPTFLAGS): check $target instead
of $host. Use 'case' to check if the compiler is gcc or not.
2004-12-18 Shiro Kawai <shiro@acm.org>
* lib/gauche/sortutil.scm (stable-sort!): fixed a bug when sorting
vectors.
2004-12-17 Shiro Kawai <shiro@acm.org>
* src/gauche.h, src/gauche/class.h, src/gauche/memory.h,
src/list.c, src/compile.c, src/macro.c, src/read.c, src/vm.c,
src/error.c, src/builtin-syms.scm: Changed tagging scheme
to make ScmPair 2 words.
2004-12-15 Shiro Kawai <shiro@acm.org>
* ext/digest/md5.stub, ext/digest/md5.scm,
ext/digest/sha1.stub, ext/digest/sha1.scm,
ext/digest/Makeifle.in: modified to use u8vector as a buffer
instead of string. Based on the patch from Michal Maruška.
2004-12-14 Shiro Kawai <shiro@acm.org>
* lib/gauche/collection.scm (fold2, fold3, map-accum,
group-collection): added these procedures.
* lib/gauche/sequence.scm (group-sequence): added a procedure.
* test/colseq.scm, doc/modgauche.texi: updated accordingly.
2004-12-11 Shiro Kawai <shiro@acm.org>
* lib/util/queue.scm (queue-push-unique!, enqueue-unique!): added
these procedures.
* test/util.scm, doc/modutil.texi: updated accordingly.
2004-12-03 Shiro Kawai <shiro@acm.org>
* src/Makefile.in: changed LDFLAGS to have -L. before the directories
given in --with-local=DIR, to avoid conflicts against the existing
libgauche in DIRs.
2004-12-02 Shiro Kawai <shiro@acm.org>
* release 0.8.3
* lib/slib.scm.in (software-type): check architecture so that
it returns MS-DOS on Windows/MinGW version.
* src/port.c (look_for_encoding): ignore '-(unix|dos|mac)' suffix
of encoding name in the coding magic comment, for Emacs
compatibility.
* src/number.c (Scm_PrintDouble): added API to use Burger&Dybvig
algorithm.
* ext/uvector/uvgen.scm: fixed to print values of f32 and f64 vectors
accurately.
2004-12-01 Shiro Kawai <shiro@acm.org>
* src/port.c (coding_port_recognize_encoding): fixed a bug that
caused misbehavior of coding-aware ports with CRLF line terminators.
2004-11-29 Shiro Kawai <shiro@acm.org>
* release 0.8.2
* src/error.c (porterror_cpl): added missing terminating NULL of CPA.
(porterror_allocate): added missing initialization of 'message slot.
* src/gauche/vm.h (SCM_SIGPENDING): recovered, for some extensions
use this macro. Should be considered deprecated.
* lib/gauche/exclib.stub (extract-condition): added slot-bound check.
2004-11-28 Shiro Kawai <shiro@acm.org>
* lib/gauche/condutil.scm (define-condition-type): extended to
allow #f as predicate and omitting accessors.
* lib/www/cgi.scm: added some condition types to be raised on
invalid requests.
2004-11-27 Shiro Kawai <shiro@acm.org>
* ext/uvector/array.scm (share-array): fix to support uniform arrays
(pointed out by OGURISU Osamu).
2004-11-25 Shiro Kawai <shiro@acm.org>
* src/core.c (Scm_Init): setting of GC_finalize_on_demand was
reversed. fixed.
* lib/rfc/mime.scm (make-mime-port): fixed a bug that incorrectly
treated CR-CR-LF sequence just before a boundary.
* lib/www/cgi.scm (cgi-parse-parameters): use limited-length-port
to read POST message body if content-length is specified. It is
necessary when the progam is communicating with persistent
connection, which doesn't delimit the message body by EOF.
2004-11-24 Shiro Kawai <shiro@acm.org>
* ext/vport/vport.scm (open-input-limited-length-port): added
experimentally.
* lib/www/cgi.scm (cgi-parse-parameters): better API to support
POST with multipart/form-data.
2004-11-23 Shiro Kawai <shiro@acm.org>
* ext/charconv/charconv.scm (ces-convert): close temporary ports
properly to avoid unnecessary finalizer invocation.
2004-11-22 Shiro Kawai <shiro@acm.org>
* src/write.c (write_ss): close temporary port to avoid unnecessary
finalizer call.
* src/vm.c (run_loop): fixed a bug that didn't save VM regs before
calling Scm_SigCheck, which sometimes caused SEGV after getting
signals. Also changed to check queued finalizer as well.
(process_queued_requests): handles queued signal handlers and
finalizers properly.
* src/core.c: implemented finalizer queue.
* src/signal.c: slightly changed data structure.
* src/gauche/vm.h: ditto
* ext/uvector/array.scm (initialize): fixed write-object method
to avoid stale shared-structure output.
2004-11-21 Shiro Kawai <shiro@acm.org>
* src/core.c (Scm_LibraryDirectory etc): made these API instead of
configure-time macro reference, to hide difference in MinGW.
* src/load.c (Scm__InitLoad): ditto
* DIST, src/Makefile.in: tweaks to create MinGW binary distribution.
2004-11-20 Shiro Kawai <shiro@acm.org>
* lib/rfc/mime.scm (make-mime-port): fixed a bug that didn't
consume '\n' following '\r' after the boundary.
* lib/www/cgi.scm (get-mime-parts): supports file+name handler
action.
2004-11-19 Shiro Kawai <shiro@acm.org>
* ext/vport/vport.c (Scm_Init_vport): added missing SCM_INIT_EXTENSION
2004-11-13 Shiro Kawai <shiro@acm.org>
* ext/binary/test.scm: exclude denormalized 32-bit floating point
test on Alpha, since they're not precisely supported on that
architecture.
* src/number.c, ext/uvector/*: various fixed on LP64 architecture.
2004-11-12 Shiro Kawai <shiro@acm.org>
* lib/rfc/mime.scm (mime-parse-message etc.):
INCOMPATIBLE CHANGE: Re-implemented MIME body parser to use
procedural port to recognize MIME boundary. The previous approach
turned not to work if the body contains raw binary data.
This change make the 'READER' argument for handlers unnecessary,
and the API has been changed accordingly.
* lib/www/cgi.scm : Adjusted to the above API change.
2004-11-11 Shiro Kawai <shiro@acm.org>
* lib/gauche/procedure.scm (let-keywords*): fixed a bug that corrupts
expansion when used in r5rs macro.
* src/builtin-syms.scm: added SCM_SYM_BIG_ENDIAN and
SCM_SYM_LITTLE_ENDIAN.
* ext/binary/binarylib.stub: changed accordingly.
* ext/uvector: EXPERIMENTAL: added byte-swapping APIs
(TAGvector-byte-swap, TAGvector-byte-swap!, uvector-byte-swap,
uvector-byte-swap!), and added optional `endian' argument to
read-block! and write-block. Not completely sure if they have to
be here, so let's say they're experimental.
* ext/vport: added open-input-uvector and open-output-uvector,
uvector backed-up ports.
2004-11-10 Shiro Kawai <shiro@acm.org>
* src/class.c (Scm_DeleteMethod): fixed a bug that caused infinite
loop during class redefinition.
* lib/text/csv.scm (make-csv-reader|writer): made quote-char
customizable (Patch from Alex Shinn).
2004-11-09 Shiro Kawai <shiro@acm.org>
* lib/binary/pack.scm (read-one-packer): fixed a bug of '@' handling
in unpack.
2004-11-04 Shiro Kawai <shiro@acm.org>
* src/number.c, src/bignum.c: fixed bugs in boundary cases of
integer conversions. changed API of Scm_GetInteger* to allow
more flexible handling of clamping behavior. See the comment
in src/gauche.h (`Converting a Scheme number to a C number'
for the details.
* src/gauche.h: changed accodringly.
* src/extlib.stub: changed acoodringly.
* src/test-arith.c : added test for integer conversion APIs.
* src/gauche/scmconst.h, src/number.c (SCM_2_64_MINUS_1): new constant.
* ext/uvector/*: replaced the dreaded shell scripts for friendy
Scheme scripts (uvgen.scm) to generate C code. The API is
cleaned up a lot, particularly the humble task of conversions
and clamping between Scheme integers and 32/64-bit C integers
are integrated to the Gauche core.
- also added string->[su]8vector!
- also changed the API of TAGvector-copy! to be parallel with
srfi-13(string-copy!) and srfi-43(vector-copy!). The old API
is still supported, dispatched by the argument type, but will
be deprecated.
* ext/mt-random/*: changed according to the modification of uvector.
2004-11-03 Shiro Kawai <shiro@acm.org>
* src/portapi.c (Scm_Putb, Scm_Putc): size argument of the
bufport_flush call was not good, causing excess flusing of
buffer to make buffered output inefficient.
* ext/vport/* : supported bufferd-input|output-port.
2004-11-01 Shiro Kawai <shiro@acm.org>
* lib/file/util.scm (directory-list): fix not to include "." and
".." even if :filter-add-path? is #t.
* lib/srfi-19.scm (date->julian-day): fix a bug to honor tz-offset.
* configure.ac, ext/Makefile.in : added ext/vport
* src/gauche.h : removed 'Getline' entry from ScmPortVTableRec; it
seems only to add extra complexity. Also changed the return value
of Scm_ClosePort to void, since the return value hasn't used at all.
* src/port.c : fixed accordingly.
* ext/vport/* : the first phase of supporting virtual ports.
2004-10-31 Shiro Kawai <shiro@acm.org>
* src/extlib.stub (byte-ready?): added.
2004-10-21 Shiro Kawai <shiro@acm.org>
* src/gauche.h, src/port.c : fixed return type of vtable entries.
2004-10-17 Shiro Kawai <shiro@acm.org>
* src/error.c, src/gauche.h, src/gauche/exception.h: added
<io-unit-error>.
* lib/gauche/parseopt.scm (let-args): fixed a bug of 'else' clause
formal parameter handling.
2004-10-12 Shiro Kawai <shiro@acm.org>
* src/gauche.h: avoid using 'template' as an argument name.
2004-10-10 Shiro Kawai <shiro@acm.org>
* lib/gauche/condutil.scm : added. defines miscellaneous srfi-35
compatible APIs. autoloaded.
* lib/Makefile.in : added condutil.scm
* src/error.c : changed the name of 'conditions' slot of
<compound-condition> to '%conditions', to avoid name conflict
with its members.
2004-10-09 Shiro Kawai <shiro@acm.org>
* src/port.c, src/portapi.c : revised to use Scm_PortError instead
of Scm_Error when appropriate.
* src/read.c : replaced some Scm_Error by Scm_ReadError.
* src/class.c (Scm_InitStaticClassWithMeta): exported for tricky
use, if the builtin class wants to control both metaclasses and
superclasses.
(Scm_ObjectAllocate): expose object_allocate so that
other C-defined placeholding "base" class (i.e. classes only
introduced for inheritance, but does not introduce C-specific
slots) can be used as a a superclass of other C-defined classes.
* src/error.c (Scm_PortError): added utility function.
(Scm_PrintDefaultErrorHeading): use condition's class name to
display the error message heading.
(Scm_ConditionTypeName): for convenicne.
* src/exclib.stub : some srfi-35 procedures.
* src/vm.c (Scm_VMThrowException): changed the non-continuable
exception check according to the new condition hierarchy.
* test/exception.scm : modified according to the recent change.
2004-10-08 Shiro Kawai <shiro@acm.org>
* src/class.c: revised class initialization API. Scm_InitBuiltinClass
is obsoleted; use Scm_InitStaticClass instead.
Also added Scm_InitStaticClassWithSupers for the builtin class
with multiple inheritance (used for condition hierarchy).
* src/error.c, src/gauche/exception.h : revised to support condition
hierarchy. Renamed ScmException -> ScmCondition, for the consistency
with srfi-35.
* src/gauche-init.scm : make <exception> a synonym of <condition>,
for backward compatibility.
* various files: modified according to the change of class
initialization API.
2004-10-05 Shiro Kawai <shiro@acm.org>
* ext/charconv/guess.c: fixed initializer type mismatch.
* lib/rfc/822.scm (rfc822-parse-date) : fix off-by-one error of
return value of month.
* test/rfc.scm : ditto
* src/gauche.h, src/portapi.c : code clean up
2004-10-03 Shiro Kawai <shiro@acm.org>
* src/port.c: removed dead code.
* test/dynwind.scm: added a few tests (Patch from Ueyama Rui)
2004-09-20 Shiro Kawai <shiro@acm.org>
* src/portapi.c, src/gauche.h : changed ScmPortVTable.Ready to take
extra arg to distinguish between byte-ready? and char-ready?.
2004-09-19 Shiro Kawai <shiro@acm.org>
* src/gauche.h : added missing prototypes of several number-related
APIs. (Thanks to OGURISU Osamu for pointing this out).
* src/number.c (roundeven): fixed a bug.
(Scm_PromoteToComplex): fixed a bug (Patch from OGURISU Osamu).
2004-09-17 Shiro Kawai <shiro@acm.org>
* src/load.c (Scm_VMLoad): use coding-aware port to load source file
by default. Changed the API to take bitmask flags.
* src/port.c : changed some API to allow port subclasses.
* src/gauche.h : changed accordingly.
* src/gauche.h (ScmPort): supports line counting feature in generic
port level, instead of only in buffered ports.
* src/port.c, src/portapi.c, src/read.c : changed accordingly.
2004-09-16 Shiro Kawai <shiro@acm.org>
* src/port.c (Scm_MakeCodingAwarePort): preparation of enabling
'coding:' magic comment in the source file.
* src/gauche.h: ditto
* src/extlib.stub (open-coding-aware-port): ditto
* ext/charconv/charconv.c: ditto
* tests/io.scm, ext/charconv/test.scm: ditto.
* src/portapi.c (Scm_ByteReady): added
* src/gauche/char_sjis.h: added some more encoding aliases of sjis.
* src/char.c (Scm_SupportedCharacterEncodingP): compare the encoding
names case-insensitively.
2004-09-14 Shiro Kawai <shiro@acm.org>
* ext/charconv/jconv.c (sjis2eucj): fix for sjis 2nd plane convesion
(patch from Kimura Fuyuki).
* lib/www/cgi.scm (cgi-header): put :status first if specified.
2004-09-13 Shiro Kawai <shiro@acm.org>
* gc/* : updated to gc6.3
* src/Makefile.in : ditto
* ext/uvector/array.scm (gauche.array): added exported symbols.
2004-09-12 Shiro Kawai <shiro@acm.org>
* lib/gauche/regexp.scm (regexp-replace-all): detect the case when
regexp matched to null string, and raises an error to avoid infinite
loop.
* lib/dbm/fsdbm.scm : allow binary data to be stored.
2004-09-11 Shiro Kawai <shiro@acm.org>
* ext/termios/* : Added support of termios.c_cc (Based on the patch
from Kogule, Ryo).
2004-09-01 Shiro Kawai <shiro@acm.org>
* ext/fcntl/fcntl.c (Scm_SysFcntl): Supports F_GETOWN and F_SETOWN
if the system provides them.
* ext/fcntl/fcntl.scm, ext/fcntl/fcntlib.stub: ditto
2004-08-28 Kimura Fuyuki <fuyuki@hadaly.org>
* src/bignum.c (Scm_BignumToUI64): Avoid using `a=a=1' style
assignment. Newer gcc versions don't like it and say that
operation "may be undefined".
* ext/termios/gauche/termios.h, ext/uvector/uvlib.stub.sh,
src/bignum.c: Include more header files to suppress compiler
warnings such like "implicit declaration".
2004-08-23 Shiro Kawai <shiro@acm.org>
* lib/util/match.scm (validate-pattern): fixed a bug in quasipattern.
2004-08-19 Shiro Kawai <shiro@acm.org>
* src/compile.c, src/genstub, src/stlib.stub, src/gauche.h,
src/gauche/vm.h: got rid of Scm_CompileInliner.
2004-08-18 Shiro Kawai <shiro@acm.org>
* configure.ac (SONAME_FLAG), src/Makefile.in : attach
SONAME to libgauche.so when the linker takes --soname flag.
* src/compile.c, src/stdlib.stub, src/gauche/vm.h:
making an inliner into a generic compiler macro, stage 3.
Now the inliner is (Sexpr, Env, Context) -> (Sexpr), which is
the same as the macro transformer.
2004-08-14 Shiro Kawai <shiro@acm.org>
* src/compile.c, src/macro.c, src/genstub, src/gauche.h:
making an inliner into a generic compiler macro, stage 2.
2004-08-12 Shiro Kawai <shiro@acm.org>
* src/gauche.h (ScmSubr, ScmInliner),
src/compile.c (compile_int),
src/genstub, src/stdlib.stub: making an inliner into a generic
compiler macro, stage 1.
2004-08-04 Shiro Kawai <shiro@acm.org>
* lib/Makefile.in (slibcat-in-place): fix. patch from Kogulé, Ryo.
* ltmain.sh (EGREP): fix. patch from Kogulé, Ryo.
2004-08-02 Shiro Kawai <shiro@acm.org>
* release 0.8.1
* ext/net/net.h : moved to ext/net/gauche/net.h, for consistency.
* ext/net/*.c : adapted to the above change
* ext/Makefile.ext.in : fixed header installation.
2004-08-01 Shiro Kawai <shiro@acm.org>
* configure.ac : disable using -rpath if --with-rpath=no is given.
disable using makeverslink on cygwin.
* Makefile.in (install-pkg): make install under lib/ and ext/ before
src/. Since "make install" under lib and ext requires gosh, we want
to make sure we use just-built libgauche.so; thus we want to run them
before relinking with new -rpath.
* ext/sxml/ssax.scm.in (sxml.ssax): extend srfi-11 and sxml.adaptor,
since the macro generated by ssax:make-parser will include references
to the symbols defined in them. This won't be a problem once
ssax is rewritten by R5RS macros, so this should be regarded as
a temporary fix.
* src/link-hpux : fixed dynamic link search path problem.
* src/makeverslink : avoid creating links if they are already created.
* ext/Makefile.ext.in, src/charconv/Makefile.in, src/sxml/Makefile.in:
avoid using GNU make specific feature.
2004-07-31 Shiro Kawai <shiro@acm.org>
* src/compile.c (Scm_UnwrapSyntax): expose this as an API.
* src/extlib.c (unwrap-syntax): made it a subr.
* lib/gauche/common-macros.scm (unwrap-syntax): made it a subr.
* src/error.c (Scm_ShowStackTrace): a bit of cleanup.
* src/gauche/char_euc_jp.h (SCM_CHAR_GET): tighten the rules to
accept euc-jp sequence.
2004-07-29 Shiro Kawai <shiro@acm.org>
* lib/www/cgi.scm (cgi-add-temporary-file, cgi-main): added capability
to clean up temporary files upon exit of cgi-main.
2004-07-28 Shiro Kawai <shiro@acm.org>
* lib/util/match.scm (gen) : fixed a bug that reused a temporary
variable for intermediate match, which confused the match optimizer.
(Pointed out by HIRAUCHI Hideyuki).
2004-07-27 Shiro Kawai <shiro@acm.org>
* lib/srfi-0.scm: typo fix
* src/load.c: typo fix
* src/system.c (Scm_GlobDirectory): fixed potential memory leak on
error of glob() call.
2004-07-26 Shiro Kawai <shiro@acm.org>
* lib/www/cgi.scm (cgi-parse-parameters): added support for
multipart/form-data posting (e.g. file uploading).
* lib/file/util.scm (temporary-directory): added.
* src/module.c (Scm_FindBinding): fixed meaningless if-condition.
* lib/gauche/package/fetch.scm (gauche-package-ensure): typo fix.
2004-07-25 Shiro Kawai <shiro@acm.org>
* lib/srfi-0.scm (cond-expand) : changed to a legacy macro, in order
to use different feature ids depending compiler options.
* src/load.c (Scm__InitLoad) : initialize *cond-features* list
with compiler-options specific values.
* src/buildin-syms.scm : added some symbols for pre-defined feature
ids for *cond-features*.
* test/srfi.scm : added more srfi-0 tests.
2004-07-24 Shiro Kawai <shiro@acm.org>
* lib/file/util.scm (make-directory*) : remove trailing '/' if any,
for mkdir of some platforms complains on it.
2004-07-20 Shiro Kawai <shiro@acm.org>
* src/makeverslink: fixed to follow the convention of symlinks, i.e.
it renames the real sofile to libgauche.so.$(VERSION), and make
libgauche.so a symlink to it, etc.
* src/syslib.stub, src/system.c (Scm_SysMkstemp): provides alternative
of mkstemp() for platforms that don't have one (e.g. Win32).
* src/load.c : for MinGW, changed the default load path to look for
subdirectories.
* DIST: preparing MinGW packaging (not quite working yet).
2004-07-20 Kimura Fuyuki <fuyuki@hadaly.org>
* ext/charconv/Makefile.in: Add three C files to the GENERATED
variable since they should be cleaned out by `make distclean'.
2004-07-18 Shiro Kawai <shiro@acm.org>
* src/write.c (write_ss_rec): fixed a bug to avoid numbers from
begin written out by srfi-38 notation.
2004-07-17 Kimura Fuyuki <fuyuki@hadaly.org>
* ext/dbm/test.scm: Some ndbm implementations create a single file
with the suffix .db and it needs to be cleaned up even though
that behavior is considered an XPG violation.
2004-07-16 Shiro Kawai <shiro@acm.org>
* src/port.c (bufport_fill): somehow it called filler() with
minimum buffer size when the buffering mode is PORT_BUFFER_LINE.
It should be able to use maximum buffer size---only PORT_BUFFER_NONE
need to fetch minimum chunk at a time.
* src/system.c (pipe): implemented via _pipe().
(fork, kill, etc): sets windows error ERROR_CALL_NOT_IMPLEMENTED
before returning.
* src/error.c (Scm_SysError): on MinGW, retrieve error message using
FormatMessage instead of strerr; the former covers wider range of
Windows errors.
* ext/net/net.c, ext/net/net.h: adapted to winsock on MinGW.
At least TCP connection seems working.
2004-07-15 Shiro Kawai <shiro@acm.org>
* src/load.c (Scm__InitLoad): on MinGW, use the program path to resolve
library/dll directories, instead of embedding them at make time.
* src/parameter.c (Scm_ParameterTableInit etc.): fixed a problem that
a thread may inadvertently refer to wrong parameter which the thread
does not have.
* lib/gauche/parameter.scm: ditto
* src/gauche/vm.h: ditto
* src/core.c: ditto
* ext/threads/test.scm: ditto
2004-07-14 Shiro Kawai <shiro@acm.org>
* lib/srfi-19.scm (tm:time-difference): fixed bad args for error
procedure (pointed out by Michal Maruška)
* src/gauche/mingw-compat.h: added for MinGW port.
* doc/mingw-memo.txt: added for MinGW port.
* DIST, configure.ac, src/system.c, src/syslib.stub, src/load.c,
src/dl_win.c, src/signal.c, src/main.c, ext/auxsys/auxsys.c,
ext/auxsys/auxsyslib.stub, ext/fcntl/fcntl.c, ext/net/net.c
ext/net/net.h, ext/termios/termiolib.stub, ext/termios/temios.c,
gc/gc.h:
added MinGW support (first stage; very rudimentatl).
2004-07-13 Shiro Kawai <shiro@acm.org>
* src/compile.c (compile_body): fixed a bug that passes
(define (a) 1 (define b 2) b)
2004-07-12 Shiro Kawai <shiro@acm.org>
* src/compile.c (compile_body): supports internal defines generated
by macro expansion.
* macro.c, compile.c, gauche.h, class.c : introduced ScmMacro structure
apart from ScmSyntax to represent macros. necessary to separate
the transform pass and the compile pass, in order to support
internal defines generated as a result of macro expansion.
2004-07-10 Shiro Kawai <shiro@acm.org>
* examples/spigot/configure.in: removed AC_PROG_INSTALL and commented
out AC_CANONICAL_SYSTEM, since they are not really necessary.
2004-07-09 Shiro Kawai <shiro@acm.org>
* lib/rfc/uri.scm (uri-parse): added.
(uri-decompose-hierarchical): accept #f as an argument for the
convenience.
(uri-decompose-authority): ditto.
2004-07-05 Shiro Kawai <shiro@acm.org>
* src/load.c (Scm_MakeAutoload): fixed a bug of autoload that
fails assertion. (Reported from SEINO Katsuhiro).
* src/autoloads.scm : ditto
* src/gauche.h (Scm_MakeAutoload): ditto
* src/extlib.stub (%make-autoload): commented out since it isn't
(shouldn't) used.
2004-06-27 Shiro Kawai <shiro@acm.org>
* src/macro.c (macro_autoload, Scm_MacroExpand): resolve autoloaded
macro in macroexpand as well.
* lib/gauche/interactive.scm (%apropos): search ancestors of imported
modules as well.
* src/gauche-cesconv.in (main): fixed --help.
* src/number.c (Scm_Divide): fixed a bug when complex numbers
appear in more than 2 arg cases.
2004-06-22 Shiro Kawai <shiro@acm.org>
* examples/spigot/Makefile.in (*_INSTALL_DIR): there shouldn't
be a '/' between $(DESTDIR) and the actual pathname.
2004-06-17 Shiro Kawai <shiro@acm.org>
* src/compile.c (unwrap_identifier): fixed a bug when expanded
syntax has a quoted vector (patch by teranishi).
* src/number.c (Scm_Divide): fixed a bug when '/' takes more than
two args and involves bignum. (patch by anonymous).
* src/bignum.c (bignum_gdiv): fixed the problem of bignum division,
when the estimated quotient becomes greater than one digit value
(e.g. #x10001). Pointed out by 'hipster'.
2004-06-04 Shiro Kawai <shiro@acm.org>
* src/compile.c (compile_cond_int): fixed a bug that 'case' didn't
work when it appeared in the macro-expanded form (Pointed out by
Grzegorz Chrupała).
2004-05-31 Shiro Kawai <shiro@acm.org>
* src/regexp.c: enable regexps to be compared by equal?.
* ext/net/net.ac: avoid checking getprotobyname_r etc on NetBSD,
since these are not supposed to be used by user programs on the
current NetBSD. (Patch from MINOURA Makoto)
* ext/net/netdb.c (Scm_GetHostByAddr): fix for referring a wrong
preprocessor symbol (Patch from MINOURA Makoto)
* doc/extract (filter pattern-in pattern-out): fix for breaking
dirs entry (Patch from MINOURA Makoto).
* ext/Makefile.ext.in (install-std): use gauche-install to install
extension files instead of @INSTALL@. It can be
$(top_srcdir)/install-sh as a fallback, but $(top_srcdir) isn't
what we desired. Besides that, using gauche-install makes rules
simpler.
* ext/net/net.scm (make-sockaddrs): check the return value of
sys-getservbyname and sys-gethostbyname for more comprehensive
error.
2004-05-22 Shiro Kawai <shiro@acm.org>
* release 0.8
* lib/gauche/package/build.scm (gauche-package-build): clean builddir
before untar.
* src/gauche-cesconv.in: fixed command-line argument handling bug.
2004-05-21 Shiro Kawai <shiro@acm.org>
* src/module.c (modules): make sure the global module name map is
placed in the data region instead of bss.
* src/gauche.h, src/gauche/class.h : avoid using C++ reserved words
(pointed out by Laurent Marzullo).
* src/extlib.stub (rxmatch-num-matches): added.
* lib/gauche/object.scm: added 'ref' method specialized for hash-table.
* doc/modgauche.texi (Low-level socket interface): added descrption
of socket-getsockname, socket-getpeername, socket-send,
socket-sendto, socket-recv, and socket-recvfrom.
(Array): added description of uniform numeric arrays.
* src/compile.c (compile_define): added check to prevent non-toplevel
use of define family ('internal' defines should be resolved
elsewhere).
* lib/text/html-lite.scm (frameset): added frame-related tags
(patch from Nekoie).
* lib/file/util.scm (build-path): ignore empty string in the components
(patch from Grzegorz Chrupała).
2004-05-20 Shiro Kawai <shiro@acm.org>
* src/vm.c (run_loop): fixed a problem of application of user-defined
<generic> subclass.
* src/class.c (class_cpl_set): set 'applicable' bit of the class if
it inherits applicable base class.
* lib/gauche/object.scm (define-generic): allow :class keyword argument
to specify the class of the generic fn.
* src/keyword.c, src/extlib.stub :
added delete-keyword and delete-keyword!.
* src/gauche-init.scm (add-load-path): reverted afterp optional
argument that was dropped inadvertently.
* src/portapi.c (port-seek): invalidate ungotten character if
port position is moved. Pointed out by Alex Shinn.
* src/gauche.h (ScmReadError): added <read-error>
* src/error.c: ditto
* src/read.c: ditto
2004-05-19 Shiro Kawai <shiro@acm.org>
* lib/gauche/test.scm (write-object): fixed output of display.
* lib/gauche/common-macro.scm (guard): added srfi-34 guard.
* src/autoloads.scm (guard): added guard as a autoloaded macro.
* test/exception.scm: added.
* src/exclib.stub:
* src/error.scm: moved the definitions of exception classes from
exclib.stub to error.scm. Needed to allow user-defined error
types.
2004-05-16 Shiro Kawai <shiro@acm.org>
* src/gauche-package.in: added --reconfigure option for install
and build.
* lib/gauche/package/build.scm (gauche-package-build): fetch older
verion's configure options if reconfigure is specified.
* lib/gauche/package.scm (call-with-iterator): avoid getting duplicate
gpd entries; only picks the most recent ones.
2004-05-15 Shiro Kawai <shiro@acm.org>
* src/gauche-package.in: added --install-as option for install.
use :all-versions to search gpd files for reconfigure and list.
* lib/gauche/package.scm (gauche-package-description-paths): added
:all-versions keyword argument to search library directories
of older Gauche versions.
* lib/gauche/package/build.scm: allow sudo option to specify the
username.
2004-05-14 Shiro Kawai <shiro@acm.org>
* lib/file/util.scm (file->string, file->string-list, file->ilst,
file->sexp-list): added convenience procedures.
* lib/gauche/ioutil.scm, src/gauche-init.scm: moved contents of
ioutil to gauche-init.scm, and removed ioutil.scm.
* src/autoloads.scm: removed reference to ioutil. added autoload
of values-ref.
2004-05-13 Shiro Kawai <shiro@acm.org>
* src/stdlib.stub : moved open-input-file and open-output-file to
the autoloaded file lib/gauche/with.scm
* lib/gauche/with.scm (open-input-file, open-output-file): defined
them here, and calls either internal %open-*-file or charconv's
%open-*-file/conv depending on :encoding keyword argument.
* src/extlib.stub (%open-input-file, %open-output-file): implements
core part of open-*-file here.
* ext/charconv/charconv.scm : removed open-input-file etc. Instead,
defines %open-*-file/conv, which is called from the system's
open-*-file when :encoding is given. Handles :if-does-not-exist #f
case, according to HIRAUCHI Hideyuki's patch.
* src/autoloads.scm: added autoloads for open-*-file and
%open-*-file/conv.
* lib/util/match.scm (get-setter, get-getter): cleaned up by using
srfi-17 and srfi-26 mechanism.
2004-05-12 Shiro Kawai <shiro@acm.org>
* lib/www/cgi.scm: export cgi-get-metavariables (alias of get-meta).
* lib/util/match.scm: changed object pattern syntax.
2004-05-11 Shiro Kawai <shiro@acm.org>
* lib/util/match.scm: added Andrew Wright's match macro, tailored
for Gauche.
* lib/Makefile.in: ditto
* test/match.scm: test for util.match
* test/TESTS: ditto
* src/test.scm : added *test-report-error* variable to control
showing stack trace of captured errors.
2004-05-07 Shiro Kawai <shiro@acm.org>
* src/Makefile.in : added dependency of symbol.o on builtin-syms.c
2004-05-06 Shiro Kawai <shiro@acm.org>
* src/gauche-package.in : cleaned up the source a bit.
* src/Makefile.in : echo script generation.
2004-05-05 Shiro Kawai <shiro@acm.org>
* lib/gauche/sortutil.scm (stable-sort, stable-sort!): added stable
sort API.
* src/autoloads.scm : added stable sort API.
2004-05-04 Kimura Fuyuki <fuyuki@hadaly.org>
* doc/gosh.1.in: added the ENVIRONMENT section.
* src/load.c (break_env_paths): Don't trust environment variables
only if setugid'd. This change allows the superuser to set his
own GAUCHE_LOAD_PATH or GAUCHE_DYNLOAD_PATH.
2004-04-27 Shiro Kawai <shiro@acm.org>
* lib/gauche/process.scm (gauche.process): export process-command.
2004-04-24 Shiro Kawai <shiro@acm.org>
* lib/gauche/package/build.scm, src/gauche-package: added --sudo
option for 'install' command.
* src/system.c (Scm_SysExec): display program name as well when
failed (Patch from Kouhei Sutou).
2004-04-23 Shiro Kawai <shiro@acm.org>
* src/module.c (Scm_FindBinding): avoid using cons and memq in
temporary data. It speeds up loading quite a bit.
(other fns): changed to use global lock instead of per-module
lock for module operations. It is faster.
* src/gauche.h (ScmModule) : dropped mutex according to above change.
* src/port.c, src/gauche/port.h: added PORT_PRELOCK macro for
'pre-owned' private port, i.e. the ports that are known to be
used privately in a thread. It avoids call to pthread_mutex_lock.
* src/write.c (write_ss_rec): integrated the non-shared-structure
writer inner loop and shared-structure write inner loop.
2004-04-22 Shiro Kawai <shiro@acm.org>
* src/gauche-package.in, src/gauche-install.in : added.
* src/gauche-cesconv.in : renamed from cesconv.
* src/Makefile.in : installs gauche-* scripts to bindir.
* examples/spigot/configure.in : adapted to the package manager
* lib/gauche/package/build.scm : added
* lib/gauche/package/util.scm : added
* lib/gauche/package/fetch.scm : added
* acinclude.m4 (AC_GAUCHE_MAKE_GPD): a macro to create PACKAGE.gpd
file.
2004-04-21 Shiro Kawai <shiro@acm.org>
* lib/gauche/package.scm : added (experiemntal; not completed).
2004-04-20 Kimura Fuyuki <fuyuki@hadaly.org>
* config.guess, config.sub, install-sh, mkinstalldirs : updated
autotools' scripts.
2004-04-16 Shiro Kawai <shiro@acm.org>
* lib/file/util.scm (file-is-symlink?): added.
2004-04-13 Kimura Fuyuki <fuyuki@hadaly.org>
* doc/corelib.texi, doc/mapping.texi : enhanced documentation for
pathname normalizers.
2004-04-11 Shiro Kawai <shiro@acm.org>
* lib/gauche/parseopt.scm (get-optargs, compose-entry): added support
for "optional option-argument".
2004-04-10 Kimura Fuyuki <fuyuki@hadaly.org>
* configure.ac, ext/auxsys/*, src/autoloads.scm,
src/gauche/config.h.in : added sys-lchown and sys-realpath
2004-04-01 Shiro Kawai <shiro@acm.org>
* src/read.c (read_internal): added #;expr style commend (a la Chez).
* lib/gauche/common-macros.scm (let/cc): added let/cc (a la PLT).
* src/autoloads.scm: ditto.
2004-03-15 Shiro Kawai <shiro@acm.org>
* src/vm.c (user_eval_inner): saves signal mask. it appears that
not saving mask here would cause hang on cygwin (Reported by
HIRAUCHI Hideyuki).
2004-03-14 Shiro Kawai <shiro@acm.org>
* src/genstub (process-setter): fixed typo (Pointed by Michal Maruška)
2004-03-13 Shiro Kawai <shiro@acm.org>
* ext/xlink : not to make a link when there's already a desired link.
* ext/charconv/guess.c (guess_jp): returns IAEA-compliant CES name.
* lib/srfi-13/searcher.scm (string-contains, string-contains-ci):
Return value was wrong when start1 is given (patch from
Grzegorz Chrupała).
2004-03-04 Shiro Kawai <shiro@acm.org>
* src/gauche/vm.h, src/vm.c and src/regexp.c: make sigsetjmp not
to save signal mask. Those sigsetjmps were introduced around
release 0.5 when I implemented the signal stuff. But I cannot
recall why I needed to save a signal mask. (The initial version
of Scm_SigCheck did use SCM_UNWIND_PROTECT while it altered
signal mask, so it needed some handling. It is irrelevant for
the current version, however). Since sigsetjmp(_, TRUE) issues
a system call every time while sigsetjmp(_, FALSE) doesn't,
the latter has significant performance advantage.
2004-02-29 Shiro Kawai <shiro@acm.org>
* src/read.c (skipws): fixed a bug that didn't increment line count
after comments.
2004-02-26 Shiro Kawai <shiro@acm.org>
* release 0.7.4.2
2004-02-25 Shiro Kawai <shiro@acm.org>
* src/class.c (Scm_UpdateDirectMethod): updates the new class'
direct-method as well. This bug caused the re-redefined classes
to lose original methods.
* ext/threads/threads.c (thread_entry): displays thread's stack trace
when non-handled error is thrown and the thread is about to die
(by unhandled-exception). It will help debugging, and won't be
a problem of apps that properly handles errors in threads.
2004-02-24 Shiro Kawai <shiro@acm.org>
* lib/srfi-13/revapp.scm (string-concatenate-reverse): optional arg
handling was missing.
* lib/www/cgi.scm (cgi-get-query): fixed a funky behavior when used
interactively (Patch from Grzegorz Chrupała).
* lib/srfi-1/set.scm (lset-xor, lset-xor!): fixed bad call
of lset-difference (pointed out by Ueyama Rui).
2004-02-23 Shiro Kawai <shiro@acm.org>
* src/read.c (skipws): comment may contain unexpected character
encoding, so using getb to skip the comment after semicolon.
(We can't do that for srfi-30 nested comment, since the second
byte of shift_jis code can be '|', so we can't determine the end
of the srfi-30 comment without knowing the encoding.)
2004-02-20 Shiro Kawai <shiro@acm.org>
* src/hash.c (delete_entry): fixed a bug that didn't decrement
numEntries when an entry was deleted.
2004-02-17 Shiro Kawai <shiro@acm.org>
* src/portapi.c (readline_body): fixed a line count problem
(Patch from HIRAUCHI Hideyuki).
2004-02-08 Shiro Kawai <shiro@acm.org>
* ext/sxml/src/sxpath-ext.scm (sxml:equality-cmp): replaced
let-values* for let*-values (latter is srfi-11; the former was
used in the original sxml).
2004-02-04 Shiro Kawai <shiro@acm.org>
* src/number.c (Scm_GetInteger32Clamp, Scm_GetIntegerU32Clamp):
APIs for routines sensitive to integer width.
* ext/binary/binary.c : adopted the above APIs.
* release 0.7.4.1
* lib/dbm/fsdbm.scm (path->hash): avoid using string-hash, since
the current implementation doesn't produce a portable hash value.
Instead, I use Scheme-implemented version.
2004-02-03 Shiro Kawai <shiro@acm.org>
* release 0.7.4
* src/link-dylib : avoid linking old library to gosh.
* ext/net/netlib.stub : check existence of definitions of MSG_*
symbols.
* configure.ac, gc/configure.in (LOCAL_INC, LOCAL_LIB): avoid
putting newlines in the command line when more than one paths
are given to --with-local.
(CFLAGS): when the architecture is alpha, add -mieee option to
avoid SIGFPE on denormalized/infinity numbers.
* src/read.c (define-reader-ctor): Experimental feature to process
srfi-38 syntax in srfi-10 read-time constructor. define-reader-ctor
takes a optional procedure, which is responsible to fix up the
read reference objects. This API isn't official yet.
* src/write.c (Scm_Format, Scm_PrintfShared): added features
to handle shared structure writing.
* src/extlib.stub (read-reference? etc.) : added read-reference object
related API. These are not official yet.
(%format): now a part of 'format' is handled in Scheme.
* lib/gauche/ioutil.scm : added. definition of 'format' API etc.
* lib/gauche/vm/debugger.scm, lib/gauche/test.scm, src/error.c:
adapted to the changes.
2004-02-02 Shiro Kawai <shiro@acm.org>
* src/system.c (Scm_SysExec): added a flag argument to enable
fork&exec. It is essential to do fork&exec atomically when
multiple thread is running.
* src/syslib.stub (sys-fork-and-exec): new API that does fork&exec
atomically.
* lib/gauche/process.scm : use sys-fork-and-exec.
2004-02-01 Shiro Kawai <shiro@acm.org>
* src/gauche.h, src/port.c, src/write.c, src/gauche-init.scm :
first batch of proper srfi-38 support w/ user-defined writers.
2004-01-30 Shiro Kawai <shiro@acm.org>
* src/gauche.h, src/port.c, ...: rearranged port structure.
dropped open-*-string/private, and used keyword arg :private?
instead. (NB: it is still an experimental feature and shouldn't
be relied on). some fixups.
* lib/gauche/listener.scm (output-port): typo fix.
2004-01-29 Shiro Kawai <shiro@acm.org>
* doc/modutil.texi : added text.gettext description.
2004-01-28 Kimura Fuyuki <fuyuki@nigredo.org>
* ext/net/* : added socket-getsockname, socket-getpeername,
socket-send, socket-sendto, socket-recv, socket-recvfrom.
Note that these features aren't officially supported yet.
2004-01-27 Shiro Kawai <shiro@acm.org>
* ext/binary/* : implemented primitive binary i/o in C.
NOTE: the API is likely to be changed when binary i/o srfi
is done. This module shouldn't be used directly unless you're
aware of it. Use binary.pack whenever possible.
* lib/binary/io.scm, test/binary.scm : moved to ext/binary.
* src/read.c (read_escaped_symbol): recognize single escape '\'
within multiple escapes '|' while reading symbol name. This
is CL compatible. I haven't decided how to treat a single escape
outside of multipe escapes.
* src/gauche.h, src/number.c, src/bignum.c, src/gauche/int64.h,
src/gauche/scmconst.h : fixup for 64bit integer support.
* ext/uvector/*, ext/digest/sha.* : changed accordingly.
uvector isn't rewritten to use the new API, but just renamed
some typedefs to avoid conflict. it will be revised to use
the new API soon.
2004-01-26 Shiro Kawai <shiro@acm.org>
* lib/rfc/mime.scm (mime-decode-word): capture the error from
ces-convert so that illegal encoded sequence won't stop the
processing.
* src/cesconv : added generally useful CES conversion script.
* lib/text/gettext.scm : updated to the new version from Alex Shinn.
* test/gettext.scm, test/data/Makefile, test/gettext.data.utf-8.scm,
test/data/locale/* : added test routines for gettext, written by
Alex Shinn.
2004-01-25 Shiro Kawai <shiro@acm.org>
* lib/math/const.scm : added missing definition of 2pi.
* lib/www/cgi-test.scm : documented officially.
* src/gauche.h, src/number.c (Scm_GetIntegerCheck etc), src/bignum.c
(Scm_BignumToSICheck etc): added boundary-checking integer
extraction primitives.
2004-01-23 Shiro Kawai <shiro@acm.org>
* doc/*.texi : reorganized a bit. Made each index to an individual
appendix, so texinfo-multiple-files-update won't mangle the toplevel
menu.
* lib/srfi-7.scm (program) : added srfi-7 support
* lib/srfi-29.scm, lib/srfi-29/bundle.scm, lib/srfi-29/format.scm:
added srfi-29 support
* above two changes are based on the code form Alex Shinn.
* lib/srfi-0.scm : updated accordingly.
* lib/srfi-13/revapp.scm (string-concatenate): made it robust for
long list.
* lib/rfc/mime.scm (mime-retrieve-body): use string-port for
intermediate buffer.
* above two changes are based on the patch from Tatsuya BIZENN.
2004-01-19 Shiro Kawai <shiro@acm.org>
* src/read.c, src/gauche.h (Scm_ReadReference) : added support of
SRFI-38 reference syntax. For the time being, circular reference
is only supported for lists and vectors.
* src/compile.c (compile_quote) : added a workaround so that
the quoted literal that contains circular reference won't cause
circular recursion during unwrap_identifier.
* src/extlib.stub (hash-table-num-entries) : added.
* src/hash.c (STRING_HASH, HASH2INDEX) : improved hash function.
the previous one isn't optimal for string keys.
2004-01-18 Shiro Kawai <shiro@acm.org>
* src/extlib.stub (promise?): added promise?.
* lib/gauche/procedure.scm (case-lambda): added case-lambda.
* lib/srfi-5.scm : added.
* lib/srfi-0.scm : updated to support new srfis.
* doc/*.texi : removed module name from the node names, for the dot
in the module names interferes with some info browsers. Also
added detailmenu of index sections in the master menu, so that
'i' command works in the emacs info mode.
(Suggested by Katsuhiro Seino).
2004-01-17 Shiro Kawai <shiro@acm.org>
* lib/gauche/cgen.scm : added experimentally. An internal utility
module for C code generators.
* src/builtin-syms.scm : This generates the C files that
defines and creates builtin symbols. Replaces gauche/predef-syms.
* src/gauche/predef-syms.h : removed.
* src/symbol.c : changed to include C code generated by builtin-syms.
* src/*.c : includes builtin-syms.h necessary, and replaced the code
that creates symbols at init time for static references.
* src/autoloads.scm : revised using gauche.cgen.
2004-01-16 Shiro Kawai <shiro@acm.org>
* src/boolean.c (Scm_EqualP) : loop over list spine instead of
recursive call to CDR - it's more robust for very long lists.
* src/list.c (Scm_Length) : removed redundant code.
(Scm_Delete, Scm_AssocDelete) : loop over list spine instead of
recursive call to CDR.
* src/char.c (Scm_CharsetAddRange): removed redundant code.
* src/string.c (count_size_and_length): fixed a bug that potentially
access beyond a terminating char.
(Scm_ConstCStringArrayToList, Scm_CStringArrayToList): fixed bugs
that doesn't make intended result when size is given.
* src/system.c (Scm_SysGlob): handles the case when GLOB_NOMATCH
isn't defined.
* test/* : added some more tests.
* The above changes are based on a patch from Ueyama Rui.
* src/vm.c (save_env): discarded the old sloppy code that took
too much time when recursion gets very deep. Rewritten with a
new code which runs proportional in the amount of stack-allocated
activation records, whose upper bound is not large. This change
improves performance of deep recursion code in order of magnitude.
* src/extlib.stub (read-block) : allow 0 to be passed as nbytes.
read-block returns a null string in such a case.
2004-01-12 Shiro Kawai <shiro@acm.org>
* lib/rfc/uri.scm (uri-decompose-authority): fixed regexp to exclude
the following '@' from userinfo.
2004-01-08 Shiro Kawai <shiro@acm.org>
* src/gauche/char_euc_jp.h (Scm_CharBackwardEUC): made the algorithm
more permissive, so that it will be more robust when illegal
mbstring is passed accidentally.
2004-01-06 Shiro Kawai <shiro@acm.org>
* src/syslib.stub (sys-truncate, sys-ftruncate): Added interface
to truncate(2) and ftruncate(2).
2004-01-04 Shiro Kawai <shiro@acm.org>
* ext/net/netlib.stub (socket-output-port): fixed buffering keyword
argument handling. (Pointed by Yoshiharu Fujisawa).
2004-01-02 Shiro Kawai <shiro@acm.org>
* src/main.c (sig_setup): fixed a problem that threads hang on
FreeBSD. SIGUSR[12] is used by GC on FreeBSD!
2003-12-29 Shiro Kawai <shiro@acm.org>
* lib/rfc/822.scm (rfc822-header->list): changed to deal with
the cases that header field contains illegal character sequences
(thus the line reader yields incomplete strings).
2003-12-26 Shiro Kawai <shiro@acm.org>
* lib/util/list.scm (util.list): it no longer inherits srfi-1.
inheriting srfi-1 causes a problem when this module is imported
after gauche.collection---then procedures like 'find' or 'map'
are resolved as srfi-1's, which is usually not the intended
behavior.
* src/system.c (Scm_GlobDirectory): fixed return value check
for portability (pointed by kou).
* src/main.c (sig_setup): exclude SIGPROF from Scheme-monitored
signals.
* src/module.c (Scm_ImportModules) : reorder multiply imported
modules, so that the last "import" supercedes the previous ones.
2003-12-18 Shiro Kawai <shiro@acm.org>
* lib/www/cgi-test.scm : added.
* test/www.scm : added tests for www.cgi-test.
2003-12-17 Shiro Kawai <shiro@acm.org>
* lib/slib.scm.in : let (require 'format) use slib's format.
* configure.ac, src/link-hpux : fixed compilation problem on
HP-UX 11.11.
* src/port.c (MIN, MAX): #undef before defining. Some platforms
defines them and warns the duplicate definition.
2003-12-16 Shiro Kawai <shiro@acm.org>
* release 0.7.3
* src/boolean.c (Scm_EqualP): Experimentally put code that compares
identifiers by name in equal?. See the comment in the source.
2003-12-15 Shiro Kawai <shiro@acm.org>
* Makefile.in (install-pkg): fix aclocal.m4 installation directory;
there shouldn't be a slash after $(DESTDIR); it would cause error
on cygwin.
* src/core.c (Scm_Init), src/gauche.h, src/gauche/config.h.in,
src/main.c : API Change: Scm_Init now takes const char *signature
argument, in order to detect version mismatch between main
app and libgauche.so.
* ext/charconv/jconv.c (jconv_open): conversion to/from "none"
should always be allowed, and it should be just pass-through.
* src/autoloads.scm : added missing #define LIBGAUCHE_BODY --- it
matters on cygwin.
* src/main.c, src/load.c : added ad-hoc support of legacy DOS
drive letter under __CYGWIN__.
2003-12-14 Shiro Kawai <shiro@acm.org>
* lib/rfc/mime.scm (mime-parse-message, etc): revised API.
2003-12-13 Shiro Kawai <shiro@acm.org>
* lib/gauche/redefutil.scm, lib/gauche/object.scm : Oops.
Yesterday's support of the optional slot specifier doesn't work
well with inheritance. I remove the feature for now.
* src/macro.c (compile_rule1): Checks if template ellipsis level
matches pattern variables'. Without catching this error, such
erroneous macro would cause infinite loop at expansion time.
(add_pvar) : fixed wrong condition to check duplicated pattern
variables.
(These patches from teranishi)
2003-12-12 Shiro Kawai <shiro@acm.org>
* lib/gauche/redefutil.scm (change-object-class): properly support
the optional slots argument. also made the default slot carry-over
routine handles class-allocated slots.
* lib/gauche/mop/propagate.scm (compute-get-n-set): changed to
support bound?-protocol, and make it robust for class redefinition.
* lib/gauche/object.scm (class-slot-bound?): added bound?-protocol
to the class slot accessor.
* lib/slib.scm.in (home-vicinity): make sure it ends with directory
separator.
(slib:load): adjusted to SCM behavior.
* lib/rfc/mime.scm : added experimentally.
2003-12-11 Shiro Kawai <shiro@acm.org>
* lib/rfc/822.scm : added basic tokenizers.
2003-12-09 Shiro Kawai <shiro@acm.org>
* src/autoloads.scm, src/gauche-init.scm, lib/gauche/fileutil.scm,
lib/gauche/modutil.scm : Moved autoload settings from gauche-init.scm
to autoloads.scm, which is compiled into the binary; this improve
start-up time of gosh quite a bit.
* src/gauche.h, src/load.c (Scm_DefineAutoload), src/extlib.stub:
Implemented autoload feature in C.
* src/gauche-init.scm, src/gauche/interactive.scm : moved the
feature to load ~/.gaucherc from gauche-init to gauche.interactive.
2003-12-08 Shiro Kawai <shiro@acm.org>
* src/gauche.h (SCM_NEW_ARRAY), src/*.c : replaced most of SCM_NEW2
to SCM_NEW_ARRAY for clearity.
* src/parameter.c (Scm_ParameterTableInit): fixed a bug that corrupts
memory.
2003-12-07 Shiro Kawai <shiro@acm.org>
* src/list.c (Scm_MonotonicMerge), src/class.c, src/module.c,
src/gauche.h, src/extlib.stub : Changed to use C3 linearization
instead of Dylan linearization. C3 is more intuitive.
* ext/charconv/charconv.c (Scm_MakeInputConversionPort,
Scm_MakeOutputConversionPort) : fixed a bug that didn't
initialize all the members of ScmPortBuffer.
2003-12-05 Shiro Kawai <shiro@acm.org>
* src/gauche.h (SCM_SYSCALL), src/system.c, src/syslib.stub,
src/port.c, ext/net/net.c, ext/fcntl/fcntl.c,
ext/auxsys/auxsyslib.stub: Wrapped system call by a macro
so that signal-interrupted system calls are restarted unless
signal handler throws an exception. The old wrappers,
Scm_SysCall and Scm_PreSysCall, which didn't restart syscall,
are obsoleted.
2003-12-04 Shiro Kawai <shiro@acm.org>
* src/genstub : updated according to Scm_InitBuiltinClass change.
* lib/text/html-lite.scm (html-doctype): added missing dtd url.
handles XHTML doctypes as well.
* lib/slib.scm.in : added system -> sys-system alias (Patch from
KIMURA Fuyuki).
* src/error.c (Scm_SError) : allow non-string as a first arg.
This is only for supporting third-party code without obscuring
where an error occurred. New code should pass a string there
specified SRFI-23. Suggestion and patch from Kimura Fuyuki.
2003-12-03 Shiro Kawai <shiro@acm.org>
* lib/text/tr.scm (build-transliterator) : changed it to
use current-i/o ports when the created transliterator is
called instead of the ones when the transliterator is created;
the former is more useful, since the latter can be achieved
by passing :input (current-input-port) etc., to build-transliterator.
Patch from Alex Shinn.
* lib/text/html-lite.scm (html-escape-string): call x->string on
the argument so that it can handle non-string argument.
(Suggested by Kouhei Sutou).
2003-11-27 Shiro Kawai <shiro@acm.org>
* src/class.c : cleaned up internal protocols. The fourth
argument of Scm_InitBuiltinClass is changed to a flag withMeta.
Treatment of ScmClass.coreSize is straighten up.
* lib/gauche/object.scm, lib/gauche/redefutil.scm : splitted
class-redefinition implementation into an autoloaded file.
Fix instance update protocol so that only instance-allocated
slots (in the old instance) will be carried over.
2003-11-24 Shiro Kawai <shiro@acm.org>
* lib/dbm.scm : added dbm-db-* to the export list. (Pointed out
by Hosaka Y).
2003-11-22 Shiro Kawai <shiro@acm.org>
* src/port.c (Scm_GetRemainingInputString), src/extlib.stub,
src/gauche.h, test/string.scm : Added get-remaining-input-string.
2003-11-21 Shiro Kawai <shiro@acm.org>
* acinclude.m4, aclocal.m4 : make sure OBJEXT and EXEEXT are
substituted.
* examples/spigot/Makefile.in : parameterize OBJEXT and DSOEXT.
* src/number.c (read_uint): Now the number reader recognizes
'#'-padded numeric literal format.
* src/portapi.c (Scm_ReadLine):
* src/extlib.stub (read-line): Added allow-byte-string parameter
so that read-line can be used for a port whose character encoding
is unknown.
2003-11-20 Shiro Kawai <shiro@acm.org>
* lib/srfi-14.scm (ucs-range->char-set!) : this procedure didn't
work for large charset if gauche was compiled for other than utf-8.
2003-11-19 Shiro Kawai <shiro@acm.org>
* src/hash.c (Scm_EqHash, Scm_EqvHash), src/extlib.stub :
experimentally added eq-hash and eqv-hash functions.
2003-11-18 Shiro Kawai <shiro@acm.org>
* src/list.c (Scm_Assoc, Scm_AssocDelete, Scm_AssocDeleteX) :
added (fixed) checks of 'alist' argument.
2003-11-18 Kimura Fuyuki <fuyuki@nigredo.org>
* ext/net/test.scm : Relax checking of (sockaddr-name v6addr).
The result string of inet_ntop() varies among implementations.
2003-11-14 Shiro Kawai <shiro@acm.org>
* src/class.c (Scm_VMSlotSet) : fix calling slot-missing.
* src/list.c (Scm_Assq, Scm_Assv) : check 'alist' argument if
it's a list.
2003-11-11 Shiro Kawai <shiro@acm.org>
* lib/gauche/mop/validator.scm : make slot-bound? work on a slot
with validator, using new :slot-bound? protocol of virtual slots.
* lib/gauche/object.scm (change-class) : exclude builtin slots
from processing. They are copied by %transplant-instance
anyway, and sometimes cause problems if we copy them in Scheme
level.
(compute-slot-accessor) : Changed according to <slot-accessor>
class change. Virtual slot now can have :slot-bound? option.
* lib/gauche/mop/instance-pool.scm : export some accessors; without
them, weird things happen when other modules creates subclasses
of <instance-pool-meta>. This fix is just to dodge the real
problem, which is the interaction between generic function and
namespaces.
* src/class.c : added missing delete-method! generic function
registration. Changed Scm_SlotAccessor structure to have
Scheme-defined bound? procedure, so that the virtual slot can
specify a way to determine whether the slot is bound or not.
2003-11-10 Shiro Kawai <shiro@acm.org>
* src/class.c, lib/gauche/object.scm, src/moplib.stub,
src/gauche/class.h, src/gauche.h : implemented change-class
method, which completes class redefinition protocol.
* ext/*/test.scm : removed kludge code that allowed to load modules
from the testing directory---now 'make' creates links so we
no longer need them.
* lib/srfi-1.scm : added missing autoload fro list= (Patch from
Michal Maruška).
2003-11-09 Shiro Kawai <shiro@acm.org>
* ext/sxml/adaptor.scm (make-char-quotator) : the signature didn't
match with usage. Patch from Nobuo YAMASHITA.
2003-11-08 Shiro Kawai <shiro@acm.org>
* lib/gauche/process.scm (process-wait-any) : avoid calling
sys-waitpid unless there are child processes regsitered in
process-list; sys-waitpid raises an error when no child
process to wait.
2003-11-07 Shiro Kawai <shiro@acm.org>
* example/oointro.scm, doc/object.texi : added "introduction to
the object system" section, and the code snippet of the
examples.
2003-11-05 Shiro Kawai <shiro@acm.org>
* ext/sxml/sxpath.scm.in, ext/sxml/tools.scm.in : added missing
APIs to export list (sxml:id-alist, sxml:not-equal?,
sxml:string->xml) and corrected misspelling of exported fn
(sxml:attr-list-node). Pointed by Nobuo YAMASHITA.
2003-11-02 Kimura Fuyuki <fuyuki@nigredo.org>
* aclocal.m4, acinclude.m4 : Add a description for GAUCHE_VERSION
to make autoheader happy.
2003-10-30 Shiro Kawai <shiro@acm.org>
* lib/gauche/selector.scm (selector-delete!): fixed an error when
only procedure is specified. Also added unit test for selector.
2003-10-29 Shiro Kawai <shiro@acm.org>
* lib/gauche/process.scm (process-wait, process-wait-any) : added
nohang optional arg to process-wait, so the user can just check
the exit status without suspending. Also added process-wait-any
for convenience.
2003-10-28 Shiro Kawai <shiro@acm.org>
* lib/util/queue.scm (remove-from-queue!): fixed a bug that raises
an error when the only element in the queue is removed.
2003-10-28 Kimura Fuyuki <fuyuki@nigredo.org>
* ext/mt-random/mt-random.c (genrand_int_small): Add a special
case for n==1. Now (random-integer 1) correctly returns 0.
2003-10-27 Kimura Fuyuki <fuyuki@nigredo.org>
* configure.ac : Add a missing comma.
2003-10-25 Shiro Kawai <shiro@acm.org>
* src/gauche.h, src/class.c, src/gauche/class.h, src/moplib.stub,
lib/gauche/object.scm : snapshot of class redefinition logic.
Not enabled yet, but closer to the final structure.
* lib/dbm/fsdbm.scm (dbm-fold): fixed a bug that dbm-fold passes
a bogus key to the iteratee procedure.
2003-10-25 Kimura Fuyuki <fuyuki@nigredo.org>
* examples/spigot/Makefile.in : Respect DESTDIR.
2003-10-24 Shiro Kawai <shiro@acm.org>
* src/regexp.c : added non-greedy match (*?, +?, ??, {n,[m]}?).
2003-10-24 Kimura Fuyuki <fuyuki@nigredo.org>
* Makefile.in, examples/spigot/Makefile.in : Add configure.lineno
to CONFIG_GENERATED. That file is automatically generated by the
configure script if /bin/sh does not support the LINENO
environment variable. (i.e. most Linux users never see it.)
2003-10-23 Shiro Kawai <shiro@acm.org>
* src/extlib.stub (bufport_flusher): updated according to the
protocol change on 2003-10-20. Note that the Scheme buffered port
API itself is not final, and will probably be replaced.
* src/gauche.h, src/class.c, src/genstub, src/moplib.stub,
src/gauche/class.h : fixed low-level mechanism for class
redefinition, still a snapshot. Cleaned up the meaning of
"flags" of class---now the role of class categories are well
defined and commented in gauche.h, and the class category is
visible from Scheme as well.
* lib/gauche/object.scm : a snapshot of skeleton code for
class redefinition stuff. Not active yet.
2003-10-22 Shiro Kawai <shiro@acm.org>
* ext/charconv/charconv.scm (with-input-conversion,
with-output-conversion): added. Manual entry is also created
accordingly.
2003-10-23 Kimura Fuyuki <fuyuki@nigredo.org>
* ext/dbm/gdbm.scm, ext/dbm/ndbm.scm, ext/dbm/odbm.scm,
lib/dbm/fsdbm.scm, lib/rfc/cookie.scm, lib/srfi-19/format.scm :
Use "error" rather than "errorf" if not needed.
2003-10-21 Shiro Kawai <shiro@acm.org>
* Makefile.in, Gauche.spec : installs acinclude.m4 as gauche.m4 under
$(datadir)/aclocal. Patch from Kimura Fuyuki.
* src/Makefile.in : make uninstall remove libgauche.so. Patch from
Kimura Fuyuki.
* src/gauche-init.scm : evaluates "~/.gaucherc" in the user module.
NB: this is still not an official feature, and might be moved to
gauche.interactive in future.
2003-10-20 Shiro Kawai <shiro@acm.org>
* src/port.c, src/portapi.c, ext/charconv/charconv.c : changed the
internal protocol of flush routine of buffered port, so that it
can behave differently when the flush request is a final one or not.
See the comment at buffererd port implementation of port.c for
the detailed discussion.
2003-10-20 Kimura Fuyuki <fuyuki@nigredo.org>
* ext/net/*, doc/modgauche.texi : added sockaddr-addr and
sockaddr-port.
* lib/srfi-37.scm : Fixed a typo in the export list. We seem to
need some sort of "duplication checker".
2003-10-18 Shiro Kawai <shiro@acm.org>
* ext/charconv/jconv.c : fixed a bug in utf8->eucjp conversion routine
that incorrectly rejected 2-byte utf8 sequences which end with 0xbf
(Thanks to Kimura Fuyuki for identifying the problem).
2003-10-17 Shiro Kawai <shiro@acm.org>
* src/class.c, src/gauche.h, src/moplib.stub, lib/gauche/object.scm :
Checked in the preparation of class-redefinition support.
Instance slots are now stored in an array separately allocated
from the object itself (so the number of instance slots can be
changed). Some bookkeeping routines are added to the ScmClass.
Class flags has been changed, but not fixed its meanings.
* src/vm.c, src/gauche/vminsn.h : added some code to support
instruction vectorization. Not yet finalized.
* lib/dbm.scm (dbm-open): fixed a bug when a custom accessor
specification is given (Patch from Grzegorz Chrupała).
2003-10-08 Shiro Kawai <shiro@acm.org>
* lib/Makefile.in (slibcat-in-place): use $(top_builddir)
instead of $(exec_prefix), since at this moment gosh isn't
installed there yet.
2003-10-07 Shiro Kawai <shiro@acm.org>
* src/regexp.c (is_distinct): fixed a bug in the optimizer, which
makes a regexp that contains "a repeat of complemented charset
followed by something except a char or a charset" fails.
2003-10-07 Kimura Fuyuki <fuyuki@nigredo.org>
* lib/dbm/fsdbm.scm: typo fix
2003-10-05 Shiro Kawai <shiro@acm.org>
* configure.ac, ext/auxsys/auxsys.scm, ext/auxsys/auxsyslib.stub :
added sys-setenv and sys-unsetenv (Patch from Kimura Fuyuki).
* src/gauche/config.h.in, ext/auxsys/auxsysconf.h.in : moved
#defines that only used in auxsys into auxsysconf.h.in.
* lib/util/lcs.scm (lcs-with-positions) : fixed an error in
the edge case, when both sequences are empty.
2003-10-04 Shiro Kawai <shiro@acm.org>
* release 0.7.2
* src/gauche-config.in : records OBJEXT and EXEEXT.
* aclocal.m4, acinclude.m4 : added adjustment of OBJEXT, EXEEXT,
SOEXT and DYLIBEXT in AC_GAUCHE_CC macro.
* ext/Makefile.ext.in : expose BIN_INSTALL_DIR etc.
2003-10-03 Shiro Kawai <shiro@acm.org>
* ext/fcntl/fcntl.scm: added missing F_SETFD to the export list
(patch from Kimura Fuyuki).
* src/compare.c, lib/gauche/sortutil.scm, src/extlib.stub,
src/gauche.h :
use the internal sort function when a compare fn is not given.
* lib/gauche/stringutil.scm (string-split) : raises an error when
splitter matches a null string.
2003-10-02 Shiro Kawai <shiro@acm.org>
* lib/gauche/process.scm (run-process): make sure the fds opened for
redirection are closed in the parent process side.
* src/gauche/extend.h (SCM_INIT_EXTENSION): under __CYGWIN__, add
a region between _bss_start__ and _bss_end__ to the root set,
instead of Scm__bssstart/end. The new ld reorders bss area,
so the latter doesn't work. (It may be the case with other
lds. Need to investigate).
2003-09-29 Shiro Kawai <shiro@acm.org>
* ext/net/net.scm, example/scheme-server.scm : added 'proto' optional
argument to make-sockaddrs, and refactored make-server|client-socket
using make-sockaddrs (Patch provided by Kimura Fuyuki).
2003-09-28 Shiro Kawai <shiro@acm.org>
* ext/mt-random/mt-random.c : fixed a bug that
(random-integer (expt 2 16)) generates a value larger than 2^16.
Patch provided by Alex Shinn.
2003-09-27 Shiro Kawai <shiro@acm.org>
* ext/net/net.scm : added make-server-sockets and make-sockaddrs
in order to open multiple server sockets (esp., when the host
has both ipv4 and ipv6 interface). Patch provided by Kimura Fuyuki.
* ext/charconv/charconv.scm : added call-with-input|output-conversion.
* src/macro.c (compile_rule1): fixed the problem of macro-defining
macro.
* ext/net/net.c (Scm_SocketClose) : do not shutdown the connection
when a socket is closed; other forked process may still be using
it. Also fixed a socket's finalizer not to refer to the ports
(it is not guaranteed that they are valid when the finalizer is
called).
2003-09-24 Shiro Kawai <shiro@acm.org>
* ext/sxml/sxpath.scm.in : fixed typo in the export list (pointed out
by Makoto Satoh).
2003-09-22 Shiro Kawai <shiro@acm.org>
* src/srfi-1/filter.scm : fixed typo, and changed (not (pair? ...))
to (null-list? ...). The latter change makes the code check an
improper list more strictly, and the original srfi-1 reference
implmentation uses null-list? consistently, but "not pair?" sneaked
in when I tuned some procedures. (Patch from Grzegorz Chrupała).
2003-09-18 Shiro Kawai <shiro@acm.org>
* src/number.c (Scm_Quotient, Scm_Modulo): fixed a bug that yielded
wrong error message when the first arg wasn't a number.
2003-09-15 Shiro Kawai <shiro@acm.org>
* lib/dbm/fsdbm.scm : added.
2003-09-14 Shiro Kawai <shiro@acm.org>
* src/extlib.stub : added gauche-dso-suffix to query dlopen()-able
suffix of the system.
* src/compare.c, lib/gauche/sortutil.scm, src/extlib.stub :
replaced sort and sort! implementation with Scheme version
(by Richard A. O'Keefe, based on the code by D.H.D.Warren).
The C version performs terribly when compare function is
provided from Scheme; more than 15 times slower than Scheme
version.
* src/gauche-init.scm : sets autoload to sort and sort!.
2003-09-13 Shiro Kawai <shiro@acm.org>
* ext/*/Makefile.in : added missing $(LIBS) in the link rule.
This caused hang in the test of ext/threads during pthrad_cond_wait
(see http://sources.redhat.com/ml/libc-hacker/2003-09/msg00002.html)
* lib/gauche/libutil.scm, lib/gauche/reload.scm : added libutuil.
* src/gauche-init.scm : set autoloads for gauche.libutil.
2003-09-12 Shiro Kawai <shiro@acm.org>
* ext/charconv/jconv.c : fixed a bug that caused buffer overflow
and/or premature conversion output under certain condition.
Also added test cases (jp4.*) that particularly tests the condition.
* lib/gauche/interactive.scm : added autoloads for gauche.reload,
so that `reload' would be available in interactive development
by default. It's useful enough to do so.
2003-09-08 Shiro Kawai <shiro@acm.org>
* src/hash.c, src/class.c, src/gauche.h, src/extlib.stub : Exposed
hash procedure to Scheme. Added object-hash generic function
so that the user-defined class can be used in hash table with
its own hash function.
2003-09-07 Shiro Kawai <shiro@acm.org>
* lib/dbm.scm, lib/dbm/* : moved abstract dbm implementation under lib.
2003-09-06 Shiro Kawai <shiro@acm.org>
* src/module.c, src/gauche-init.scm : incorporate module-name->path
in the core binary, so that the future extension can add
nontrivial translations between module names and pathnames.
From now on, any interface that needs to translate module name
to pathname or vice versa must go through this API (they shouldn't
assume replacing '.' to '/' is enough).
* lib/gauche/common-macros.scm : moved check-arg and get-keyword*
to here from gauche-init.scm, as autoloaded macros.
2003-09-04 Shiro Kawai <shiro@acm.org>
* lib/gauche/process.scm : Added various keyword arguments to
process ports to allow redirection and character encoding conversion.
Also extended the command syntax so that it can take a list of
argv and call exec directly.
(INCOMPATIBLE CHANGE) open-{input|output}-process-port now return
two values, the port and the process object. I found they are pretty
useless without getting process object.
2003-09-03 Shiro Kawai <shiro@acm.org>
* lib/util/lcs.scm (lcs-with-positions) : rewrote to use Eugene Myers'
O(ND) algorithm which performs much better in typical case,
then the previous DP algorithm that requires O(NM).
2003-09-01 Shiro Kawai <shiro@acm.org>
* lib/www/cgi.scm (cgi-parse-parameters) : accept ';' as well as '&'
as a parameter separator. (Support of ';' is recommended in the
B.2.2 of HTML4.01 specification).
2003-08-30 Shiro Kawai <shiro@acm.org>
* src/list.c (Scm_ListTail): fixed error message when arg is out
of range.
2003-08-29 Shiro Kawai <shiro@acm.org>
* ext/sxml/sxpath.scm.in: added missing txpath.scm (Patch from
Hisazumi Kenji).
2003-08-25 Shiro Kawai <shiro@acm.org>
* ext/Makefile.ext.in, ext/xlink : let each 'make' in exit/$dir
to create appropriate links in the source tree, so that the
newly built gosh can run without installation.
2003-08-17 Shiro Kawai <shiro@acm.org>
* src/compile.c (Scm__InitCompiler): moved with-module and
select-module from 'null' module to gauche module. This makes
'null' and 'scheme' module pure R5RS. Side-effect: once
you enter these modules, there will be no way to get out from them.
2003-08-16 Shiro Kawai <shiro@acm.org>
* ext/net/test.scm : adapted to ipv6
2003-08-09 Shiro Kawai <shiro@acm.org>
* src/portapi.c (Scm_ReadLine): removed the big overhead of
read-line related to port locking.
2003-08-08 Shiro Kawai <shiro@acm.org>
* ext/fcntl/fcntl.c, ext/net/addr.c, ext/termios/termios.c :
corrected usage of memset() (Pointed by NISHIO Yasuhiro)
* ext/charconv/Makefile.in : changed LDFLAGS so that @ICONV_LDFLAGS@
will be added before $LDFLAGS. Patch from Kogule, Ryo.
2003-08-07 Shiro Kawai <shiro@acm.org>
* lib/slib.scm.in : provides substitute of slib's "byte" module---
the original one uses a string for a byte-string, which doesn't
work on Gauche.
* aclocal.m4, ext/net/net.ac, src/gauche/config.h : added test for
socklen_t, which appears to be necessary on MacOS X when using
ipv6. (Patch from Hisazumi Kenji).
* Makefile.in, lib/Makefile.in, lib/mklibcat : added 'slibcat-in-place'
make target which creates 'slibcat' within the source tree before
installing gauche. This is useful to make a package of the
system that doesn't allow to run a postinstall script.
2003-08-05 Shiro Kawai <shiro@acm.org>
* lib/util/record.scm : added SCM compatible make-record-type
and other stuff, built on top of srfi-9. This is derived from
the patch provided by Alex Shinn.
2003-07-23 Shiro Kawai <shiro@acm.org>
* lib/rfc/uri.scm (uri-decode): handle gracefully the case that
input string ends with '%'.
* release 0.7.1
2003-07-22 Shiro Kawai <shiro@acm.org>
* configure.ac, src/Makefile.in, src/link-dylib, src/makeverslink:
fixed link and installation process. Introduced a couple of
helper script to keep configure.ac and Makefile.in simple.
* ext/sxml/adaptor.scm : added cerr, cout and nl for sxml-tools
* ext/sxml/sxpath.scm.in : use srfi-2 and srfi-11.
2003-07-21 Shiro Kawai <shiro@acm.org>
* src/Makefile.in : On Cygwin, installs libgauche.dll to bindir
as well as libdir, or it won't be found by the shell.
* doc/Makefile.in : honors DESTDIR for installation.
* ext/sxml : updated SXPath to the newer version in sxml-tools
by Kirill Lisovsky and Dmitry Lizorkin. Also added sxml.tools.
2003-07-20 Shiro Kawai <shiro@acm.org>
* ext/sxml/sxpath.scm, ext/sxml/trans.scm : incorporated Alex Shinn's
patch for sxpath support, and Kiyoka Nishiyama's patch on it.
* ext/sxml/src/SSAX.scm : updated to the newest CVS version of SSAX.scm
2003-07-19 Shiro Kawai <shiro@acm.org>
* ext/dbm/dbmconf.h.in : splitted dbm-specific configure settings
to this file from the main config.h.in.
* configure.ac, src/Makefile.in : run relink before installing
gosh with --relink option, so that the installed gosh dynamically
links the proper libgauche.so.
2003-07-18 Shiro Kawai <shiro@acm.org>
* configure.ac, src/gauche-config.in, ext/Makefile.ext.in :
revised some compiler options. removed spurious -lgauche-uvector
flag from gauche-config.
2003-07-16 Shiro Kawai <shiro@acm.org>
* ext/sxml : integrated Oleg Kiselyov's SXML. Just incorporated
sxml-gauche 0.9 sources with minor modifications; need to catch
up the current SXML versions.
2003-07-15 Shiro Kawai <shiro@acm.org>
* gc/*, src/gauche/memory.h : upgraded to Boehm GC 6.2
2003-07-14 Shiro Kawai <shiro@acm.org>
* ext/Makefile.ext.in : Added $(DESTDIR) to the install
destination (Thanks to Kogule Ryo for a patch).
2003-07-09 Shiro Kawai <shiro@acm.org>
* src/gauche/char_none.h (SCM_CHAR_GET): make sure retrieval of
char is not sign-extended.
2003-07-08 Shiro Kawai <shiro@acm.org>
* configure.in, configure.ac, ext/charconv/charconv.ac,
ext/dbm/dbm.ac, ext/net/net.ac : renamed configure.in to
configure.ac. Splitted out the extension-specific tests
into ext/*/*.ac files.
* src/main.c (main): changed to set up *program-name* and *argv*
before evaluating -u, -l, and -e options, so that the files
loaded by these options can refer to the proper *program-name*
and *argv*.
* ext/dbm/gdbm.scm (dbm-fold): fixed to use %dbm-s2v to convert
value field (it was %dbm-s2k). Thanks to Alex Shinn for pointing
this out.
2003-07-05 Shiro Kawai <shiro@acm.org>
* lib/www/cgi.scm : allow cgi-header to accept arbitrary keyword
argument to add extra headers. :location argument no longer
suppresses set-cookie header.
2003-07-04 Shiro Kawai <shiro@acm.org>
* lib/text/html-lite.scm : generate "<tag />" for empty element.
2003-06-25 Shiro Kawai <shiro@acm.org>
* configure.in, Makefiles : de-libtool-ized. Tested on Cygwin,
possibly breaking build process on other platforms.
On cygwin, you need to add $(libdir) to PATH in order to
run gosh after installation.
2003-06-20 Shiro Kawai <shiro@acm.org>
* doc/extract : fixed a problem of @include when Gauche is compiled
other than euc-jp as a native encoding.
2003-06-19 Shiro Kawai <shiro@acm.org>
* src/stdlib.stub (char-ready?) : made char-ready?'s argument optional
to comply R5RS.
2003-06-16 Shiro Kawai <shiro@acm.org>
* lib/rfc/http.scm (receive-body) : added fallback case when neither
content-length nor transfer-encoding is provided by the server.
2003-06-11 Shiro Kawai <shiro@acm.org>
* doc/gauche-ref.texi : splitted chapters into separate texi files.
2003-06-10 Shiro Kawai <shiro@acm.org>
* example/spigot/* : added example of an extension module.
2003-06-08 Shiro Kawai <shiro@acm.org>
* src/gauche-init.scm, lib/gauche/common-macros.scm : added fluid-let
macro provided by Dorai Sitaram.
2003-06-04 Shiro Kawai <shiro@acm.org>
* Makefile.in, lib/Makefile.in : recover the rule to create slibcat
after installation; it was inadvertently dropped sometime
since 0.6.8.
2003-06-03 Shiro Kawai <shiro@acm.org>
* src/gauche.h (ScmPortRec): renamed a member 'private' to 'priv',
to be C++ friendly.
2003-05-31 Shiro Kawai <shiro@acm.org>
* src/number.c (read_number), src/stdlib.stub (make-polar): changed
to use a common function Scm_MakeComplexPolar, to avoid the
difference of the result due to compiler's optimization.
2003-05-30 Shiro Kawai <shiro@acm.org>
* release 0.7
* src/gauche.h (SCM_CHAR_MAX), src/extlib.stub (%char-set-add-range!):
fixed the range check bug that prevents
(char-set-delete char-set:full #\;) from running.
* src/syslib.stub (sys-access): the last change didn't work.
Reverted to the original code, but kept the check if we're
running suid/sgid code.
* ext/uvector/Makefile.in : changed again the name of the DSO to
libgauche-uvector.la; some extension modules depended on the name.
2003-05-29 Shiro Kawai <shiro@acm.org>
* src/syslib.stub (sys-access): let it signal an error if real
uid/gid differs from effective uid/gid. Sys-access should never
be used in suid/sgid program anyway. And if we exclude that,
there's no difference between access() and stat(), so I changed
it to use stat() on all platforms.
* src/Makefile.in (install): avoid using -m 444 to install
libgauche.la, for on some platforms libtool tries to run ranlib
on the installed libgauche.a and fails if it is not writable.
libtool then changes its permission to 644; it is hardcoded in
the AC_PROG_LIBTOOL macro.
* mkinstalldirs, src/Makefile.in, ext/Makefile.ext.in, lib/Makefile.in,
doc/Makefile.in : changed to use mkinstalldirs instead of
"install -d", for some system's install doesn't understand -d option.
* ext/*/Makefile.in : added explicit dependency between *.stub and *.c
files, for some 'make' can't infer how to make .lo from .stub
only by the inference rules.
* ext/syslog/syslog.scm : exported LOG_* constants only when they
are defined.
* configure.in : bypasses the test for select(2) on HP-UX; it doesn't
like the way autoconf tests the select's existence. Also replaced
reference of $host for $target, for better support of
cross-compiling.
2003-05-28 Shiro Kawai <shiro@acm.org>
* src/syslib.stub : exclude sys-fdset and sys-select if select(2) is
not available on the system.
* Makefile.in, src/Makefile.in, ext/Makefile.in, ext/Makefile.ext.in,
test/*, ext/*/test.scm : created install-check target, which runs
tests with installed gosh.
* src/load.c (Scm_DynLoad): reports dynamic loading if -fload-verbose
flag is set.
2003-05-27 Shiro Kawai <shiro@acm.org>
* ext/net/net.scm : made make-client-socket and make-server-socket
take a <sockaddr> instance as well.
* lib/text/diff.scm : changed API.
* INSTALL.esc : added description of --enable-ipv6
* ext/uvector/ : changed to create libuvector.la instead of uvector.la,
for linking by -luvector is required by ext/mt-random.
2003-05-25 Shiro Kawai <shiro@acm.org>
* lib/gauche/vm/debugger.scm : removed dependency on gauche.thread
* lib/util/lcs.scm : added lcs-fold and lcs-edit-list.
2003-05-23 Shiro Kawai <shiro@acm.org>
* ext/threads/thrlib.stub, src/extlib.stub : moved current-thread
back to the main library. It is handy to have it even if we're
not using threads.
2003-05-20 Shiro Kawai <shiro@acm.org>
* lib/binary/pack.scm, lib/binary/io.scm, test/binary.scm :
incorporated Alex Shinn's binary.pack module.
2003-05-18 Shiro Kawai <shiro@acm.org>
* configure.in, */Makefile.in's : tweaks to make them work on Cygwin.
2003-05-17 Shiro Kawai <shiro@acm.org>
* ext/net/net.scm : export some constants of socket options
conditionally by export-if-defined.
2003-05-16 Shiro Kawai <shiro@acm.org>
* configure.in, ext/Makefile.ext.in, ext/mt-random/Makefile.in,
src/Makefile.in : more support for compiling on MacOSX
2003-05-15 Shiro Kawai <shiro@acm.org>
* gc/include/private/gcconfig.h: undef MPROTECT_VDB on MACOSX, for
it caused 'make check' to stall. This flag is undefined in newer
boehm gc anyway.
* src/dl_darwin.c: include <mach-o/dyld.h>
* src/load.c : changed DynLoad stuff so that the platform-dependent
code are in separate files and #included in src/load.c conditionally.
* src/dl_dlopen.c, src/dl_dummy.c, src/dl_win.c, src/dl_darwin.c :
platform-dependent dynload stubs. Not tested yet except dl_dlopen.
2003-05-10 Shiro Kawai <shiro@acm.org>
* lib/util/lcs.scm, lib/text/diff.scm, lib/Makefile.in : added
Alex Shinn's LCS finding utility.
* lib/net/netlib.stub, lib/net/net.scm : made 'flags' argument of
sys-getnameinfo optional, and export a bunch of IPPROTO_* enums.
(Patch from Kimura Fuyuki)
* lib/util/list.scm : incorporated Alex Shinn's associative list
library.
* src/bignum.c (Scm_BignumCmp3U): fixed a bug that caused the last
digit of certain floating point numbers to be printed incorrectly.
(Thanks to OGURISU Osamu for finding this bug).
2003-05-02 Shiro Kawai <shiro@acm.org>
* ext/net/addr.c, ext/net/net.scm, ext/net/netdb.c,
ext/net/netlib.stub: added seamless ipv6 support in
make-{server|client}-socket, and sys-getnameinfo support.
(Patch from Kimura Fuyuki).
* configure.in, src/gauche/config.h.in : checks if sin_len is in
sockaddr_in (and sin6_len in sockaddr_in6). It is reported that
FreeBSD has them, and needs them to be set up for getnameinfo
to work correctly.
* src/Makefile: ensure BIN_INSTALL_DIR's existence at the installation
time.
2003-05-01 Shiro Kawai <shiro@acm.org>
* src/configure.in, src/gauche/config.h.in (HAVE_IPV6),
ext/net/addr.c, ext/net/net.scm, ext/net/netdb.c,
ext/net/netlib.stub, ext/net/net.h : applied experimental IPv6
support patch from Kimura Fuyuki. The support can be turned on
by giving --enable-ipv6 to configure (and your OS supports it,
of course).
2003-04-30 Shiro Kawai <shiro@acm.org>
* src/gauche-init.scm (export-if-defined): added. This macro
is to overcome the difficulty to keep exported symbol list
consistent when some of module's external APIs are defined
conditionally. The implementation is a kludge, though.
Should be used with care.
* src/genstub (define-cclass): fixed a bug that #if directive was
ineffective for define-cclass.
* src/*.c: avoid having uninitialized variables. On some platforms,
gc doesn't scan bss area of DSO modules, which causes a problem
when libgauche is used as a DSO. (Note that in dlopen-ed
extensions gc is properly informed to scan bss area, by
SCM_INIT_EXTENSION).
* src/load.c (Scm_DynLoad): use requested library name to derive
init function name, instead of the one given in libtool .la library
when the requested name is libtool library. On some platforms
(e.g. cygwin) a different name is used for actual DLL and
libtool library).
* ext/mt-random/* : enabled functinality that uses uvector on cygwin,
which has been disabled because of link problem on cygwin.
2003-04-29 Shiro Kawai <shiro@acm.org>
* ext/uvector/Makefile.in, ext/mt-random/Makefile.in : avoid
making separate libgauche-uvector - this causes libtool
to issue warning, but the separate library doesn't work well
on cygwin.
* configure.in: fixes to support cygwin and darwin
* gc/configure.in: let the toplevel --with-local argument propagate
to gc compilation. Define GC_PTHREADS to 1 on darwin to make
it parallel with toplevel config.h.
2003-04-25 Shiro Kawai <shiro@acm.org>
* ext/Makefile.ext.in (check): make 'check' depend on 'all' (Patch
from Kimura Fuyuki)
2003-04-24 Shiro Kawai <shiro@acm.org>
* src/system.c, doc/gauche-ref.texi: typo fix
(Patch from Kimura Fuyuki)
2003-04-21 Shiro Kawai <shiro@acm.org>
* Makefile.in, acinclude.m4, aclocal.m4, configure.in,
gc/configure.in, ltmain.sh, gc/Makefile.am, src/Makefile.in,
src/core.c : snapshot to make things work on cygwin (not quite, yet).
* doc/gauche-ref.texi : fix in srfi-37 description
(patch from Grzegorz Chrupała).
* Makefile.am's, Makefile.in's, ext/Makefile.ext.in, DIST:
Removed automake dependency.
* ltmain.sh, config.guess, config.sub, aclocal.m4 : added to
CVS, so that the developer can build from CVS without having
the same version of libtool on his/her machine. Requires
autoconf 2.54 or higher, though.
* src/load.c : removed libltdl dependency. libltdl is nice,
but it has a subtle problem when libgauche is linked with other
libraries that embeds libltdl.
* src/gauche-config.in : added -lgauche-uvector -lgauche to
"gauche-config -l" output.
2003-04-16 Shiro Kawai <shiro@acm.org>
* lib/gauche/parseopt.scm (let-args): added Alex Shinn's let-args
macro.
2003-04-14 Shiro Kawai <shiro@acm.org>
* various Makefile.am's and configure.in: made "make install" work.
* various files: revised build process of built-in extensions (ext/*).
They no longer have separate configure.in; the toplevel configure.in
takes care of all the Makefiles. All of them uses Makefile.am now.
Removed ext/example, for the example of extension must be shown
elsewhere. This check-in passes "make check", but not tested
for installation.
* Replace src/gauche/config.h for src/gauche-config.h, because
automake adds -I flag for config.h.in location automatically
even I don't want that.
* In ext/uvector, arranged the Makefile so that libuvector.so is
created as a shared library which is used by a dlopen module
uvector.so. This should help to solve the DLL problem on cygwin
but not tested.
2003-04-11 Shiro Kawai <shiro@acm.org>
* various files: automake+libtoolized, based on a patch from
Yokota Hiroshi.
The building process from CVS tree has been siginificantly changed;
see HACKING file for the details.
This check-in is a kind of working snapshot; it builds and passes
tests, but haven't yet checked if it can be properly packaged and
installed.
2003-03-31 Shiro Kawai <shiro@acm.org>
* ext/uvector/array.scm (tabulate-array): referred to non-existent
procedure. (Patch from Alex Shinn).
2003-03-30 Shiro Kawai <shiro@acm.org>
* release 0.6.8
2003-03-29 Shiro Kawai <shiro@acm.org>
* src/char.c, src/regexp.c : #[\w] to include underscore (following
the convention of Perl's).
2003-03-28 Shiro Kawai <shiro@acm.org>
* configure.in, gc/configure.in, gc/include/gc.h,
gc/include/private/gc_priv.h, gc/linux_threads.c,
src/gauche/config.h.in : applied a patch from HISAZUMI Kenji
to make pthreads work on Darwin.
2003-03-23 Shiro Kawai <shiro@acm.org>
* src/charset.c (Scm_CharSetLE): implemented two-arg char-set<= in C,
for it is used in regexp optimizer. Available as %char-set<=?
from Scheme.
* lib/srfi-14.scm (char-set<=): revised to use the native %char-set<=?.
* src/regexp.c (Scm_RegOptimizeAST, rex_rec): added regexp optimizer
that works on AST. Added regexp byte-code instructions that
works on the special optimized paths.
* lib/slib.scm : provided object->string and object->limited-string.
2003-03-22 Shiro Kawai <shiro@acm.org>
* src/regexp.c : Total rewrite. The compilation paths are divided
more clearly. Pass 1 and pass 2 are available individually from
Scheme, as regexp-parse and regexp-compile. Added bounded repetition
"{n,m}", non-capturing group "(?:...)", scoped case sensitivity
control "(?i:...)" and "(?-i:...)".
2003-03-03 Shiro Kawai <shiro@acm.org>
* lib/rfc/822.scm (rfc822-parse-date): fixed behavior to conform
RFC2822 more closely (Patch provided from OGURISU Osamu).
2003-03-01 Shiro Kawai <shiro@acm.org>
* src/gauche.h, src/bignum.c: takes more bits for bignum size,
and checks vailidity of bignum size in make_bignum.
2003-02-28 Shiro Kawai <shiro@acm.org>
* src/vm.c (Scm_VMEval): resets numVals before evaluating the
compiled code, in order to prevent wrong numVals from propagating.
2003-02-27 Shiro Kawai <shiro@acm.org>
* lib/util/list.scm : extends srfi-1, instead of uses it.
* src/regexp.c (Scm_RegExec): fixed a bug regarding multibyte
regexp match.
* src/char.c (Scm_CharSetCaseFold): fixed a bug that case folding
charset didn't consider 'z' and 'Z'.
2003-02-26 Shiro Kawai <shiro@acm.org>
* lib/gauche/common-macros.scm (values-ref): added values-ref
experimentally.
* lib/util/list.scm (intersperse): added intersperse
2003-02-17 Shiro Kawai <shiro@acm.org>
* lib/srfi-19.scm (make-time): Fix the order of argument to match
SRFI specification. This whould break existing code that depends
on the wrong definition of make-time.
2003-02-15 Shiro Kawai <shiro@acm.org>
* src/gauche.h (SCM_CHECK_START_END): pass through start==end case.
* src/load.c, src/gauche.h : made autoload MT-safe.
* src/vm.c, src/gauche/vm.h : renamed PCTYPE to SCM_PCTYPE to avoid
namespace pollution.
2003-02-14 Shiro Kawai <shiro@acm.org>
* ext/net/netdb.c (Scm_GetHostByName etc.): made the fallback code
(when no reentrant version of gethostbyaddr_r etc. are found)
thread-safe, using global lock.
* ext/net/addr.c (sockaddr_in_allocate): made address lookup
thread-safe.
2003-02-10 Shiro Kawai <shiro@acm.org>
* lib/text/parse.scm (next-token) : fixed error message handling
(Patch from Grzegorz Chrupała).
2003-02-09 Shiro Kawai <shiro@acm.org>
* src/compile.c (compile_define): check the module existence in
define-in-module (Patch from Kimura Fuyuki).
* lib/gauche/collection.scm : fixed hash table's call-with-iterator
which wasn't updated for the new hash table iterator.
(Patch from Kimura Fuyuki).
2003-02-08 Shiro Kawai <shiro@acm.org>
* src/gauche/char_euc_jp.h (Scm_CharBackwardEUC): made string pointer
backward operation work more precisely so that it won't be confused
with ASCII/Kanji mixed situation.
2003-02-07 Shiro Kawai <shiro@acm.org>
* release 0.6.7.1
* lib/gauche/portutil.scm : fixed typo (%do-copy/limitN).
* ext/charconv/charconv.c : fixed a bug that caused ces-convert
returns null string when it tried to convert one kanji character
string in EUCJP or SJIS to UTF8. The cause was that the allocated
buffer was too small in that case. I set minimum size of buffer.
2003-02-06 Shiro Kawai <shiro@acm.org>
* release 0.6.7
* lib/charconv/charconv.scm : fixed bug in wrap-* (keyword typo)
* doc/extract : fixed extract script so that it can deal with the
euc-jp document under gosh with any internal encodings.
* src/gauche/char_none.h : add "NONE" to the compatible encoding names.
* src/compile.c, src/macro.c : added some code to support NVM (not
yet completed).
* lib/text/html-lite.scm : inserting newlines before closing tags
instead of after, to prevent extra whitespaces appear in the rendered
output.
2003-02-05 Shiro Kawai <shiro@acm.org>
* lib/www/cgi.scm : allow character encoding conversion of CGI output
via cgi-output-character-encoding parameter. Added output-proc
keyword arg to cgi-main.
* ext/charconv/charconv.c : allows a symbol as a CES name, as well
as a string. Supports a special CES name "none".
Also added ces-equivalent?, ces-upper-compatible?,
wrap-with-{input|output}-conversion.
* lib/file/util.scm (directory-list) : added :filter-add-path?
keyword argument. refactored using cond-list and every-pred.
2003-02-04 Shiro Kawai <shiro@acm.org>
* src/port.c : added privatep flag to Scm_MakeInputStringPort and
Scm_MakeOutputStringPort, which pre-locks the created string port
so that mutex will be omitted. Various files that uses those
functions are revised.
* src/portapi.c, src/stdlib.stub, src/extlib.stub : added peek-byte,
and incorporated Scm_Peek* functions into the core from stub files.
* lib/util/combinations.scm : revised to support duplicated entries.
* lib/util/list.scm : added. additional list library.
* lib/gauche/sequence.scm : added fold-with-index, map-with-index,
map-to-with-index, for-each-with-index, find-index,
and find-with-index.
2003-02-03 Shiro Kawai <shiro@acm.org>
* src/extlib.stub (sort, sort!): allowed sorting vectors as well.
2003-01-31 Shiro Kawai <shiro@acm.org>
* ext/charconv/charconv.scm: adjust semantics of replaced call-with*
and with-*-file functions to close ports only when escaping
condition occurs.
2003-01-30 Shiro Kawai <shiro@acm.org>
* src/portapi.c, src/extlib.stub, lib/gauche/portutil.scm :
formerly supported with-port-locking. made I/O primitives
skip port locking if the port is already locked by the calling
thread (this eliminates the need of undocumented %-unsafe version
of I/O primitives).
* src/error.c : clear ERROR_BEING_REPORTED flag after normal exit
of Scm_ReportError.
* ext/net/net.c : keep a back reference to the socket in its
input/output stream, so that the socket won't be GCed when
the application only grabs the reference of the streams.
2003-01-29 Shiro Kawai <shiro@acm.org>
* lib/text/gettext.scm : updated to Alex's new version.
* lib/util/combinations.scm : added.
2003-01-20 Shiro Kawai <shiro@acm.org>
* src/class.c (Scm__InitClass) : initialization of <boolean> and
<character> to follow standard convention, i.e. defines
<boolean-meta> and <character-meta>.
2003-01-16 Shiro Kawai <shiro@acm.org>
* ext/auxsys/auxsyslib.stub (sys-putenv) : use system malloc to
allocate string to be passed to putenv(), to avoid the string
from being GCed.
2003-01-15 Shiro Kawai <shiro@acm.org>
* lib/srfi-37.scm : added.
2003-01-14 Shiro Kawai <shiro@acm.org>
* lib/text/gettext.scm : added text.gettext contributed from
Alex Shinn.
* src/genstub : fix in :base qualified define-cclass, which used
to pass wrong C type to calculate C object size.
* src/gauche/class.h : fixed a bug in the default value of
slotNumber of static slot accessors, which created invalid
setter access when the slot is read-only.
2003-01-11 Shiro Kawai <shiro@acm.org>
* src/vm.c : added experimental runtime flag that disables mutation
of binding from outside of the definining module.
2003-01-10 Shiro Kawai <shiro@acm.org>
* src/module.c, src/extlib.stub : added make-module, and allow
anonymous modules.
2003-01-08 Shiro Kawai <shiro@acm.org>
* lib/srfi-13.scm : fixed autoload typos. Patch from Kimura Fuyuki.
* lib/gauche/test.scm : added test-module procedure, which tests
autoloads and exported symbol bindings of the module, hopefully
to catch careless typos.
2003-01-07 Shiro Kawai <shiro@acm.org>
* lib/srfi-1.scm : added some missing autoloads. Patch provided
by Kimura Fuyuki.
2003-01-06 Shiro Kawai <shiro@acm.org>
* src/gauche/test.scm : Made default 'test' procedure catch an error.
The *test-error* variable is introduced to hold the "error value".
Introduced test* macro. The original primitive 'test' is renamed
to 'prim-test', and used to test primitive syntaxes before
error handler is tested.
2003-01-05 Shiro Kawai <shiro@acm.org>
* src/extlib.stub, lib/gauche/hashutil.scm : fixed the problem that
#<eof> in hash key stopped iteration. Also added hash-table
and hash-table-fold.
2003-01-04 Shiro Kawai <shiro@acm.org>
* ext/net/net.[ch]: applied a patch from John Kilburg to support
datagram socket.
2003-01-03 Shiro Kawai <shiro@acm.org>
* src/boolean.c (Scm_EqualP): check eq?-ness first.
* lib/gauche/mop/instance-pool.scm : renamed *-remove methods to
*-remove!. added map fns.
2003-01-01 Shiro Kawai <shiro@acm.org>
* src/vm.c : fixed Scm_VMEval to set the module to the specified
one during _executing_ the code, not only _compiling_ the code.
It involves dynamic-wind to restore the original module when
and error occurs. If the given module is the current module,
however, we skip the dynamic-wind (the previous version pushed
extra continuation, but it seems we don't need it).
* src/load.c : added :environment keyword argument to load and
load-from-port; this is necessary to force a specific file to
be loaded in the environment specified by the caller. (Since
'load' form itself is evaluated at run time, even
(eval '(load "foo") module) doesn't work, for the module
given to 'eval' is only effective during compiling the form
(load "foo").)
2002-12-29 Shiro Kawai <shiro@acm.org>
* src/load.c, src/read.c, ext/uvector/uvector.c.sh : added
read-context flag to control whether literal structure should
be immutable or not. The default ScmRead reads as mutable
object, while ScmLoad reads as immutable object.
Currently this only affects literal uvectors. (It's debatable
that string should obey this flag).
2002-12-26 Shiro Kawai <shiro@acm.org>
* lib/rfc/uri.scm (uri-encode): process byte-wise, instead of
character-wise, to avoid complexity of different character
encodings. Suggested by Fumitoshi UKAI.
2002-12-25 Shiro Kawai <shiro@acm.org>
* ext/uvector/* : added immutability check for all destructive ops.
made literal uvectors immutable.
* doc/gauche-ref.texi : added japanese translation of rfc.http etc.
provided by Makoto Satoh.
2002-12-24 Shiro Kawai <shiro@acm.org>
* ext/uvector/uvector.[ch].sh : added immutable and owner field
to uvector (preparation of immutable uvectors, and uvectors
pointing to somebody else's memory).
2002-12-23 Shiro Kawai <shiro@acm.org>
* ext/digest/sha.h : removed dependency on sys/cdefs.h
* src/genstub : added support of direct-supers specifier in
define-cclass. NB: this is an ad hoc kludge. Define-cclass
need to be redesigned.
2002-12-22 Shiro Kawai <shiro@acm.org>
* src/string.c : made string equality be tested by separate function
from comparison, so that a complete string and incomplete string
can be tested.
* src/class.c, src/gauche/class.h : made generic allocation macro
SCM_ALLOCATE to call Scm_AllocateInstance, which initializes
Scheme-slots defined in Scheme subclasses safely. The task used
to be a responsibility of *_allocate method, which was error-prone.
2002-12-21 Shiro Kawai <shiro@acm.org>
* src/genstub : supports :base qualifier in define-cclass to allow
to define base class in stub file.
* lib/text/csv.scm : provisional fix for the problem that the
consecutive tabs are ignored even if the separator is a tab.
The real fix should be to add the flag to csv-reader to
tell whether the reader should strip whitespaces surrounding
field data.
* ext/mt-random/mt-lib.stub : fixed a bug the mt-set-random-seed!
always sets the same value if a bignum is given.
2002-12-19 Shiro Kawai <shiro@acm.org>
* lib/gauche/regexp.scm (rxmatch-case): catch the case that caused
infinite loop (patch from Kimura Fuyuki)
2002-12-17 Shiro Kawai <shiro@acm.org>
* lib/srfi-0.scm : added srfi-31 and some missing feature ids.
2002-12-14 Shiro Kawai <shiro@acm.org>
* release 0.6.6
* ext/digest/{configure.in,md5.h,sha.h} : slight fix for portability.
* src/vm.c : added Scm_VMApply3
2002-12-13 Shiro Kawai <shiro@acm.org>
* ext/auxsys/* : moved sys-getgroups, sys-getlogin and sys-localeconv
here.
* src/genstub : have been generating a redundant type checking code
for scheme object. fixed.
2002-12-12 Shiro Kawai <shiro@acm.org>
* lib/gauche/test.scm, test/* : added test-error API, and rewrote
some tests with it.
* src/port.c, src/portapi.c : added Scm_PortSeek() API.
* src/stdlib.stub : allow :if-exists :overwrite option in
open-output-file.
2002-12-11 Shiro Kawai <shiro@acm.org>
* ext/digest/*.scm, lib/util/digest.scm : define digest-string
in util.digest (patch from Kimura Fuyuki).
* src/list.c, src/stdlib.stub, lib/gauche/listutil.scm : made
caar..cddr be inlined. got rid of less-frequently used
caaar...cddddr from gosh core and defines them in autoloaded
Scheme file.
2002-12-10 Shiro Kawai <shiro@acm.org>
* src/regexp.c : made regexp printed as #/.../
* lib/gauche/collection.scm (call-with-iterator): fixed a bug
(patch provided from Kimura Fuyuki).
* ext/digest/*, lib/util/digest.scm : revise some APIs.
2002-12-09 Shiro Kawai <shiro@acm.org>
* lib/gauche/hook.scm : added gauche.hook.
* src/port.c, src/vm.c, src/extlib.stub : allow with-*-to-port and
dynamic-wind to take non-procedure objects, enables object-apply
hook.
* src/gauche/vm.h, src/vm.c, src/parameter.c : added per-thread
parameter support.
2002-12-08 Shiro Kawai <shiro@acm.org>
* lib/gauche/mop/validator.scm (compute-get-n-set): added
:post-validator slot option.
2002-12-06 Shiro Kawai <shiro@acm.org>
* lib/srfi-14.scm : made ucs-range->char-set work on non-ASCII chars.
* src/string.c : added string-pointer-ref.
* lib/gauche/stringutil.scm, src/extlib.stub, src/gauche-init.scm:
now string-split can accept not only a character but also a char-set,
a string, a regexp or a predicate. The character case is handled
by built-in (Scm_StringSplitByChar, %string-split-by-char), and
the other cases are handled by autoloaded module gauche.stringutil.
* src/extlib.stub :added make-byte-string.
* lib/util/digest.scm, lib/rfc/hmac.scm, ext/digest/* : renamed
*-update and *-final for *-update! and *-final!, respectively.
* lib/srfi-31.scm : added srfi-31.
* src/object.scm : fixed the default method of slot-unbound and
slot-missin to avoid infinite loop in formatting the error message
via write-object.
2002-12-05 Shiro Kawai <shiro@acm.org>
* lib/gauche/regexp.c (regexp-quote): added regexp-quote,
contributed by Alex Shinn
* src/regexp.c : fixed a bug that didn't treat escaped '$' at
the end of expr as a literal character.
* lib/gauche/time.scm : fixed misspelling of slot name (patch from
Kimura Fuyuki).
2002-12-04 Shiro Kawai <shiro@acm.org>
* src/proc.c, src/extlib.stub : added has-setter?
* lib/gauche/mop/propagate.scm : added <propagate-mixin>.
2002-12-03 Shiro Kawai <shiro@acm.org>
* src/gauche/arith_i386.h (UADD): modified to avoid a "register
spilling error" on some processors.
* lib/gauche/procedure.scm (let-keywords*): take care of syntactic
unwrapping in case when let-keywords* appear in the expanded
form of R5RS macro.
* src/list.c : let <list> inherit <sequence> for clearity.
2002-12-02 Shiro Kawai <shiro@acm.org>
* lib/srfi-19/format.scm : fixed a bug in locale-dependent date
reader (Thanks to Shin-ichi Hirata for a patch).
* ext/digest/*, lib/util/digest.scm, lib/rfc/hmac.scm : integrated
Kimura Fuyuki's message digesting packages.
2002-12-01 Shiro Kawai <shiro@acm.org>
* lib/gauche/logger.scm : added lock-policy slot to <log-drain>
class to specify the file lock policy. This allows logger to
be used in MacOSX.
* lib/file/util.scm (define-time-comparer): fixed a bug that caused
file-mtime<? etc. to fail if filename is given.
2002-11-29 Shiro Kawai <shiro@acm.org>
* ext/net/addr.c (Scm_MakeSockAddr): fixed a nasty bug that
potentially clobbers heap area. (Thanks to KIMURA Shigenobu
for helping to identify the bug).
* doc/Makefile.in : put a sed line in generating html docs to fix
LANG attribute, as suggested by Kimura Fuyuki.
2002-11-28 Shiro Kawai <shiro@acm.org>
* src/read.c : fixed SRFI-30 syntax reader (Thanks to KIMURA
Shigenobu for pointing out this bug).
* src/compile.c, src/vm.c : dropped TAILBIND instruction, for it
doesn't work when the constructing argument frame is moved
to the heap by call/cc. I can't come up a nice way to fix that
without performance penalty. Instead, the do form is expanded
into letrec form in the compiler. And believe it or not, the
performance is actually better.
The compiler is also modified to keep hygienity on some
compiler-inserted symbols.
* src/regexp.c (re_exec_rec): fixed a bug in matching multibyte
char against RE_NSET1. (Thanks to Alex Shinn for reporting this).
2002-11-25 Shiro Kawai <shiro@acm.org>
* doc/gauche-ref.texi : applied patch from Kimura Fuyuki and
Jiro KANAYAMA. Added descriptions about SRFI-10 syntax as well.
2002-11-24 Shiro Kawai <shiro@acm.org>
* lib/rfc/cookie.scm, doc/gauche-ref.texi : applied patch from
KIMURA Shigenobu.
2002-11-20 Shiro Kawai <shiro@acm.org>
* src/read.c, src/gauche-init.scm, lib/gauche/interpolate.scm :
made string interpolation syntax is expanded in reader instead
of in macro; if it is done in macro, the read symbols do not
properly "see" their surrounding environment, and fail to work
if the referenced symbols are introduced by R5RS macro.
For example: (define-syntax foo (syntax-rules () ((_ a) #`",a")))
fails in the previous version.
* src/main.c : removed the special treatment of argv[0]=="./gosh"
for in-place test; instead, added -ftest option to do the job.
2002-11-19 Shiro Kawai <shiro@acm.org>
* lib/rfc/822.scm : deal with empty header (patch from Kimura
Shigenobu)
2002-11-17 Shiro Kawai <shiro@acm.org>
* src/string.c (Scm_MakeFillString): added arg range check (pointed
out by Kimura Fuyuki).
2002-11-15 Shiro Kawai <shiro@acm.org>
* release 0.6.5
2002-11-15 Shiro Kawai <shiro@acm.org>
* lib/gauche/reload.scm : updated to the Alex's newest version.
2002-11-13 Shiro Kawai <shiro@acm.org>
* lib/port/* -> lib/compat/* : moved. port.* is obsoleted.
* lib/japanize-euc.scm : moved to test/japanize-euc.scm
* lib/rfc/http.scm : added
2002-11-12 Shiro Kawai <shiro@acm.org>
* lib/rfc/uri.scm (uri-compose) : added uri-compose.
* src/read.c (read_internal): Finally, make old incomplete syntax
#"..." obsolete. The reader signals an error.
* lib/gauche/portutil.scm, src/gauche/extlib.stub : Renamed
gauche/port.scm to gauche/portutil.scm. Implemented copy-port
in Scheme instead of C (actually, it became faster by
locking the port during copying).
2002-11-10 Shiro Kawai <shiro@acm.org>
* ext/charconv/charconv.c (conv_input_filler): fixed a bug
of attempting to read from closed remote port. (pointed out
by Kimura Fuyuki).
* lib/srfi-19.scm : added missing exports (pointed out by
Kimura Fuyuki).
2002-11-09 Shiro Kawai <shiro@acm.org>
* gc/* : updated to Boehm GC 6.1
* lib/gauche/reload.scm : added module reloading utility
contributed by Alex Shinn.
2002-11-08 Shiro Kawai <shiro@acm.org>
* src/vm.c (Scm_VMApply): check if the length of argument list is
smaller than the VM stack size; otherwise VM can't handle it.
This fixes SEGV problem reported in bug #634598.
* src/genstub : typo fix (patch from Kimura Fuyuki).
* various files: started nvm-experiment branch for next VM
experiments.
2002-11-01 Shiro Kawai <shiro@acm.org>
* src/string.c (Scm_DStringAdd): fixed a bug that didn't handle
complete-string addition to DString.
* src/write.c : fixed a format problem that counts # of characters
incorrectly when maxcol argument is given to the ~a or ~s directive
(a bug pointed out by Kimura Shigenobu). Test cases for this is
also added.
2002-10-30 Shiro Kawai <shiro@acm.org>
* src/vm.c, src/gauche/vm.h : start adding experimental new VM
code under USE_NVM cpp flag. not working yet.
2002-10-25 Shiro Kawai <shiro@acm.org>
* various files: removed obsoleted macro l_ and reference to
gauche.get-opt. rewrote some procedures using new macros.
* lib/gauche/procedure.scm : moved let-optionals* here, with new
macros get-optional and let-keyword*. These are "official"
autoloaded macros now. Also added procedures any-pred and
every-pred.
* src/gauche-init.scm : added get-keyword* macro
2002-10-24 Shiro Kawai <shiro@acm.org>
* lib/gauche/listener.scm : fixed a bug around error handling.
The read buffer is cleared on error, and make prompt printed
correctly.
2002-10-23 Shiro Kawai <shiro@acm.org>
* lib/gauche/interactive/info.scm : use gauche.config module to
get info file path.
* lib/gauche/config.scm : added
2002-10-21 Shiro Kawai <shiro@acm.org>
* src/exclib.stub (report-error): exposed Scm_ReportError to Scheme.
* lib/gauche/mop/* : added <singleton-mixin> and <validator-mixin>
classes, to use the features of <singleton-meta> and
<validator-meta> conveniently.
* lib/gauche/listener.scm : added. working, but error handling
is not completed.
2002-10-20 Shiro Kawai <shiro@acm.org>
* src/genstub : renamed ulong -> u_long etc. in the generated
code. (a bug pointed out by Kimura Fuyuki)
2002-10-19 Shiro Kawai <shiro@acm.org>
* src/class.c (method_initialize): allow methods without required
arguments. (a bug pointed out by Kimura Fuyuki)
2002-10-17 Shiro Kawai <shiro@acm.org>
* lib/gauche/procedure.scm (arity-at-least-value): fixed a bug
(Thanks to Kimura Fuyuki).
* ext/auxsys/auxsyslib.stub (sys-times): fixed a bug that caused
sys-times fails on some platforms (Thanks to Kimura Fuyuki).
2002-10-16 Shiro Kawai <shiro@acm.org>
* ext/uvector/uvlib.stub.sh : fixed a bug that prevents uvlib.c
from compiling under some platforms.
* doc/gauche-ref.texi : applied a patch to fix many of erroneous
examples. (Thanks to Kimura Fuyuki for providing the patch).
* src/gauche-config.in : added --mandir and --infodir
2002-10-14 Shiro Kawai <shiro@acm.org>
* release 0.6.4
* doc/Makefile.in : reverted to use autoconf's default mandir and
infodir. For rpm files, let spec file override them. (Suggested
by MINOURA Makoto).
* ext/uvector/* : added read-block!, write-block, and uvector-alias.
* lib/gauche/singleton.scm : moved to lib/gauche/mop/singleton,
keeping the old file for compatibility.
* lib/gauche/propagated-slot.scm : renamed to propagate.scm.
2002-10-13 Shiro Kawai <shiro@acm.org>
* src/bignum.c (Scm_MakeBignumFromUIArray): accepts 2's complement
representation if sign == 0.
* ext/uvector/* : store true 64bit integer in s64 and u64 vector
on 32-bit architecture.
* lib/file/util.scm : added home-directory
* src/main.c : added -A and -E option. makes -A, -I, -E, -e, -l, -u
options be processed in the order of appearance.
* doc/gauche.ref.texi : added @direntry (suggested by MINOURA Makoto).
2002-10-12 Shiro Kawai <shiro@acm.org>
* lib/srfi-1/* : replaced several non-tail-recursive calls for
tail-recursive calls, since tail-recursion + reverse! is faster
in Gauche than simple non-tail-recursive calls.
* lib/gauche/time.scm : added
2002-10-11 Shiro Kawai <shiro@acm.org>
* src/port.c, lib/gauche/port.scm, src/extlib.stub : exposed 'unsafe'
port operations as well as %with-port-locking, for efficient port
handling. Removed redundant C-version of port->string (it hasn't
been used anyway).
2002-10-06 Shiro Kawai <shiro@acm.org>
* lib/gauche/mop/propagate-slot.scm : added
* lib/gauche/validator.scm, lib/gauche/mop/validator.scm :
moved gauche.validator to gauche.mop.validator.
keep gauche.validator as an alias of gauche.mop.validator.
* test/logger.scm ("log-open"): fixed test case that failed when
the day of month was between 1 and 9.
2002-09-26 Shiro Kawai <shiro@acm.org>
* ext/uvector/uvlib.stub.sh : added conversion routines between
string and uvectors (u8, s8, u32, s32). These are convenient to
manipulate strings in low-level.
* ext/uvector/uvector.[ch].sh : changed uvector struture to have
separate data area from the object header. This increases the
cost of allocation, but enables the future extensions to share
the vector storage.
* ext/charconv/jconv.c : use internal conversion routine for
"iso-2022-jp" as well.
2002-09-25 Shiro Kawai <shiro@acm.org>
* ext/charconv/jconv.c (jconv_iconv_reset): fixed a bug that caused
infinite loop when iconv is used and the output encoding is
stateful. A bug reported by Satoru Takabayashi.
2002-09-24 Shiro Kawai <shiro@acm.org>
* lib/gauche/sequence.scm : make gauche.sequence inherit
gauche.collection. Added (setter subseq).
2002-09-21 Shiro Kawai <shiro@acm.org>
* release 0.6.3
* ext/syslog/* : added syslog(3) interface.
* lib/gauche/logger.scm : allow a procedure for log prefix generator.
Also integrated to the syslog feature.
2002-09-20 Shiro Kawai <shiro@acm.org>
* src/read.c, src/string.c : changed incomplete string syntax
from #"..." to #*"...". The old syntax is still recognized,
but the written representation is switched to the new syntax.
This is a preparation for string interpolation to take #"..." syntax.
* lib/gauche/object.scm : added object-apply definitions for
<regexp> and <regmatch>.
* src/char.c (Scm_CharSetRead): support POSIX character class
notation such as '[:alpha:]'.
* src/regexp.c, src/char.c, src/read.c, src/extlib.stub : added
case-fold regexp match. New syntax #/.../i for it.
2002-09-19 Shiro Kawai <shiro@acm.org>
* src/vm.c, src/compile.c, src/gauche/vminsn.h : implemented
"combined push" instructions, like LREF-PUSH and PUSHI.
* src/compile.c : fixed a bug that didn't add bind-info of
internal defines properly.
2002-09-18 Shiro Kawai <shiro@acm.org>
* src/proc.c, src/vm.c, src/class.c : extend object-apply mechanism
to setter, i.e. defining (setter object-apply) allows non-procedural
object to be used as (set! (obj arg ...) arg ...).
* ext/mt-random/mt-random.scm, ext/threads/threads.scm : make symbols
in *.so exported. (Based on the discussion in gauche-devel).
2002-09-17 Shiro Kawai <shiro@acm.org>
* src/vm.c, src/compile.c, src/proc.c : changed VM_LAMBDA instruction
as well, to keep binding information in 'bind-info' pair attribute.
cleaned up stack dump and debug code to use the new bind-info
attribute.
2002-09-16 Shiro Kawai <shiro@acm.org>
* src/vm.c, src/compile.c : changed VM_LET, VM_VALUES_BIND and
VM_TAILBIND not to take extra debug info word after the instruction.
This shortens instruction stream and makes execution slightly faster.
The debug information is kept in the pair attribute 'bind-info'
of the instruction stream.
* src/vm.c : fixed a problem of inlined procedures being confused
if they passed multiple values.
2002-09-15 Shiro Kawai <shiro@acm.org>
* lib/rfc/quoted-printable.scm : fixed several bugs using test cases.
2002-09-12 Shiro Kawai <shiro@acm.org>
* lib/file/util.scm : fixed a problem in directory-fold etc. that
failed when there was a dangling symlink.
* src/promise.c : fixed a bug in force.
* src/core.c : added Scm_RegisterFinalizer
* configure.in, src/gauche/config.h.in : added GAUCHE_MAJOR_VERSION et al.
* src/gauche.h : added SCM_DECL_{BEGIN|END} macro
2002-09-11 Shiro Kawai <shiro@acm.org>
* src/compile.c, src/gauche/vm.h : changed the compiler to
generate local frame referencer and modifier counting from the end
of the frame, and modified ENV_DATA macro accordingly.
* src/vm.c : further optimization, and fixed a bug in the last change
that left env ptr invalid after tail call argument shifting.
* src/compile.c, src/vm.c : further optimization of omitting an empty
environment frames.
2002-09-10 Shiro Kawai <shiro@acm.org>
* src/stdlib.stub, src/proc.c : let map and for-each accept non-procedure
object as the 1st arg so that object-apply hook can work.
* src/vm.c : optimized subr call by omitting environment frame header.
* src/vm.c, src/class.c : added object-apply hook. If non-procedure
object is applied, like ("abc" 1), a method object-apply is
called as (object-apply "abc" 1).
2002-09-09 Shiro Kawai <shiro@acm.org>
* src/vm.c, src/gauche/vm.h : changed environment frame layout. see
the comment of vm.h.
* src/vm.c, src/gauche/vminsn.h, src/stdlib.stub : inline apply to
use SCM_VM_APPLY instruction.
2002-09-08 Shiro Kawai <shiro@acm.org>
* src/genstub (get-c-name): changed to preserve case of the input
scheme name.
* src/gauche/arith_i386.h, configure.in, src/gauche/config.h.in :
use some inline asm for primitive ops of bignum arithmetic.
2002-09-07 Shiro Kawai <shiro@acm.org>
* configure.in, doc/Makefile.in : changed autoconf variable GZIP to
GZIP_PROGRAM, for it interferes gzip's operation.
2002-09-06 Shiro Kawai <shiro@acm.org>
* src/genstub : fixed a bug that generates bad C predicate for <uint32>
stub type.
2002-09-02 Shiro Kawai <shiro@acm.org>
* release 0.6.2
* src/module.c : fixed for cygwin.
* src/syslib.stub : dropped sys-usleep, for the prototype of usleep(3)
doesn't agree among BSD and SysV, and it's obsolete anyway.
Instead, added sys-nanosleep.
2002-09-01 Shiro Kawai <shiro@acm.org>
* src/regexp.c : fixed a bug that compiled a regexp like #/a|(b)|c/
incorrectly. (Thanks to Alex Shinn for pointing it out).
* src/repl.c : changed API of read-eval-print-loop.
* src/main.c (usage): added explanation of -l and -e options.
2002-08-29 Shiro Kawai <shiro@acm.org>
* src/module.c (Scm_FindBinding): searches parent modules of imported
modules as well.
* src/gauche-init.scm (extend) : if specified module is not found,
try %require.
* src/repl.c (repl_proc): fixed a bug that didn't treat arguments
correctly.
2002-08-28 Shiro Kawai <shiro@acm.org>
* genstub : renamed the stub directive define-const to define-constant
for consistency, and allow boolean value for it.
* src/signal.c : changed the default handler behavior for SIGHUP,
SIGQUIT and SIGTERM to call Scm_Exit() instead of raise an error.
(This fixes the problem of remaining process under Emacs).
* src/write.c (Scm_Vprintf): added check if argument for %s is NULL.
2002-08-27 Shiro Kawai <shiro@acm.org>
* src/class.c (initialize_builtin_class) : made it recognize inherited
slots properly.
* ext/threads/thrlib.stub : adapted to the above fix of class.c.
* lib/gauche/mop/instance-pool.scm : added expreimentally.
2002-08-26 Shiro Kawai <shiro@acm.org>
* lib/util/queue.scm : added queue-length, list->queue, queue->list,
find-in-queue, remove-from-queue!.
* src/genstub : fixed a bug in string literal handling.
2002-08-25 Shiro Kawai <shiro@acm.org>
* src/genstub : snapshot of new architecture. Old syntax of
define-symbol (with initialization) is obsoleted and replaced by
define-variable.
* src/extlib.stub : added keyword->string
2002-08-24 Shiro Kawai <shiro@acm.org>
* src/genstub : reorganizing code.
* lib/gauche/interactive.scm (apropos): adapted to the new module
inheitance mechanism.
2002-08-23 Shiro Kawai <shiro@acm.org>
* src/extlib.stub : added fixnum? and bignum?
* src/string.c, src/extlib.stub : added string-pointer-copy,
string-pointer-byte-index and string-pointer-dump (under
SCM_DEBUG_HELPER), as suggested by Alex Shinn.
2002-08-22 Shiro Kawai <shiro@acm.org>
* src/gauche-init.scm, src/module.c : made them more robust for
invalid arguments.
* ext/uvector/srfi-4.scm : adapted to extend syntax.
2002-08-20 Shiro Kawai <shiro@acm.org>
* src/module.c, src/extlib.stub, src/gauche-init.scm : implements
module inheritance by extend syntax.
2002-08-19 Shiro Kawai <shiro@acm.org>
* src/gauche.h : added SCM_SIGPENDING macro (needed in gauche-gtk)
2002-08-18 Shiro Kawai <shiro@acm.org>
* src/read.c : added SRFI-30 nested multiline comment (#|...|#).
2002-08-17 Shiro Kawai <shiro@acm.org>
* lib/gauche/vm/debugger.scm : fixed an error in enable-debug
(was using obsolete 'current-vm' procedure).
* src/genstub : recognize <short>, <ushort> as stub types.
2002-08-16 Shiro Kawai <shiro@acm.org>
* src/module.c (Scm_DefineConst): don't issue warning if the redefined
constant has the same value (in the sense of equal?) to the old one.
* src/port.c (file_filler): fixed a bug that file_filler returned 0
when read(2) was interrupted by a signal, causing Scm_Read to
return EOF in such case. (Thanks to Julian Fondren for pointing
out the bug.)
2002-08-10 Shiro Kawai <shiro@acm.org>
* src/read.c: protect read ctor table by mutex.
2002-08-08 Shiro Kawai <shiro@acm.org>
* ext/uvector/uvector.scm : defines object-[+-*/] methods for uvectors.
* src/number.c : adding generic arithmetic mechanism: operations such
as '+' calls a generic function (object-+ for '+') when the
argument is not a built-in numeric type.
2002-07-31 Shiro Kawai <shiro@acm.org>
* release 0.6.1
* src/main.c : warn if pre-0.5 compatible mode is used.
* src/gauche/vm.h, src/error.c, src/vm.c : prevent an infinite loop
when an uncaptured erorr occurs inside the error reporter.
Introduced SCM_ERROR_BEING_REPORTED runtime flag to keep the
dynamic context of error handling; see the comment of Scm_ReportError
and Scm_VMWithErrorHandler.
2002-07-30 Shiro Kawai <shiro@acm.org>
* src/genstub : changed suffixes of autogenerated auxiliary C
variable names to avoid potential name collision. For example,
"__NAME" was used for C variable to keep the name of symbols,
instead of "_NAME".
* ext/dbm/gdbm.stub, ext/dbm/ndbm.stub : changed C predicate name
to follow the convention (SCM_GDBM_P -> SCM_GDBMP, etc).
2002-07-28 Shiro Kawai <shiro@acm.org>
* src/vm.c (Scm_VMDefaultExceptionHandler): fix the problem that
user-defined error handler can't get a proper stack trace.
* gc/configure.in: enable DONT_ADD_BYTE_AT_END option. Otherwise,
pair attribute field of cons wasn't scanned properly, losing
source-code information after GC.
2002-07-23 Shiro Kawai <shiro@acm.org>
* src/genstub : obsoleted 'assert' form, replacing it for bigloo-like
argument type annotations. revised stub type system management.
* various *.stub : rewrote according to the above change.
2002-07-22 Shiro Kawai <shiro@acm.org>
* src/genstub : added include, define-const, define-enum and return
forms.
* various *.stub : rewrote C-enum stuff by define-enum form,
and many SCM_RETURNs by return form.
2002-07-21 Shiro Kawai <shiro@acm.org>
* src/Makefile (INSTALL_SUBHEADERS): gauche/class.h to be installed.
2002-07-18 Shiro Kawai <shiro@acm.org>
* release 0.6
* DIST : includes pre-extracted info files in the distribution;
'extract' script doesn't work unless gosh is compiled with euc-jp
support.
* doc/Makefile.in : fixed info file installation when info directory
doesn't exist.
* aclocal.m4, configure.in, src/gauche-config.in : save the default
CFLAGS in gauche-config. includes AC_GAUCHE_OPTFLAGS in
AC_GAUCHE_FLAGS.
2002-07-17 Shiro Kawai <shiro@acm.org>
* src/main.c (main): fixed a bug that didn't flush buffered ports
after Scheme main procedure returns. (Thanks to Fujii-san for
pointing this out).
* all configure.in's and Makefile.in's : set OPTFLAGS on some
platforms by default. propagates it to submodules.
* src/port.c, src/write.c, src/gauche/port.h : inlined port lock
primitives in write.c.
* gc/configure.in: disabled THREAD_LOCAL_ALLOC for now, since it
caused significant performance loss on Linux/x86 when gosh is
compiled with pthreads but not using threads. The difference
of GC lock implementation may be the cause. Disabling local alloc
may damage multithreaded app, but at least on gosh, MT is more
for asynchronous event handling than performance benefit, I think.
2002-07-16 Shiro Kawai <shiro@acm.org>
* src/load.c (break_env_paths): fixed a bug (thanks to Alex Shinn).
* configure.in, src/gauche/config.h.in : check existence of sched_yield
and the library that includes it.
* src/core.c : refer to GC_pthread_create so that the GC thread
module will be linked in the gosh body.
* src/syslib.stub : avoid calling pause() from sys-pause; it won't
work in race conditions. sys-pause now uses sigsuspend instead.
also added sys-sigsuspend.
* src/signal.c, src/main.c : fixed a bug that messed up threads'
signal mask. Also add Scheme level support of sigsuspend.
2002-07-15 Shiro Kawai <shiro@acm.org>
* src/exclib.stub, src/extlib.stub, ext/threads/thrlib.stub : moved
the thread-exception stuff from core interpreter to ext/threads.
moved back the vm debugging support procs from ext/threads to
src/extlib.
2002-07-14 Shiro Kawai <shiro@acm.org>
* src/write.c (Scm_Vprintf): fixed to retrieve varargs before calling
a closure function, so that we can avoid fiddling va_list around.
* src/gauche.h, ext/threads/* : fixed some declarations for cygwin.
2002-07-13 Shiro Kawai <shiro@acm.org>
* src/thread.c, src/mutex.c, ext/threads/* : moved Scheme-level
thread support to ext/threads (module gauche.threads). This keeps
gosh core small, and also explicitly specifying (use gauche.threads)
may be a good idea for readers to be aware of the use of threads.
* src/read.c, src/write.c : let Scm_Read and Scm_Write (and likes)
to hold the port lock so that they can call faster version of
port primitives.
* src/port.c (PORT_UNLOCK): fixed a bug that didn't unlock mutex
properly inside recursive lock.
2002-07-12 Shiro Kawai <shiro@acm.org>
* gc/configure.in : undefine GC_GCJ_SUPPORT.
* ext/net/net.c (Scm_SocketGetOpt): fixed a bug that may returned
smaller data.
* ext/uvector/uvector.c.sh, ext/uvector/uvectorP.h : fixed a bug
that caused s64/u64 vector code crash. SCM_NEW2 should be used
instead of SCM_NEW_ATOMIC2 for these vectors on ILP32 architecture.
* configure.in, src/gauche/config.h.in : set proper thread-supporting
#defines accodring to the platform.
2002-07-11 Shiro Kawai <shiro@acm.org>
* src/port.c : added error flag to ScmPort and mark the port that
raised an error. Avoid calling flush to close such ports.
* lib/gauche/process.cm (call-with-input-process) : avoid sending
SIGTERM in call-with-input-process, for it may not succeed.
Instead, it counts on that closing pipe causes termination of
the source process.
* configure.in : check -lpthread by AC_CHECK_LIB. For FreeBSD,
check -lc_r as well.
* doc/Makefile.in :
* lib/gauche/interactive/info.scm : added gauche.interactive.info,
on-line info viewer (experimental).
* lib/file/util.scm (find-file-in-paths) : fixed keyword argument
spec to match the document.
2002-07-10 Shiro Kawai <shiro@acm.org>
* doc/Makefile.in : added rule to create gzipped info files
* src/main.c (version): the output of gosh -V shows pthreads
availability.
* lib/text/info.scm : added text.info module that can read and
parse info files.
* lib/gauche/interpolate.scm (%string-interpolate): fixed a bug
that doesn't interpolate variables starting with 'f' properly.
2002-07-09 Shiro Kawai <shiro@acm.org>
* src/gauche.h, src/char.c, src/regexp.c, src/read.c : consolidated
\x, \u and \U escape sequence reader of literal string, regexp and
char-set.
* various files: changed macro GAUCHE_USE_PTHREAD to
GAUCHE_USE_PTHREADS.
2002-07-08 Shiro Kawai <shiro@acm.org>
* src/thread.c (Scm_ThreadStart): made all signals blocked for newly
created thread by default.
* src/main.c (sig_setup): enable SIGCHLD and SIGWINCH to be handled
in Scheme. They are ignored by default, but a handler can be set.
* src/signal.c, src/syslib.stub : added get-signal-handlers,
sys-sigset-fill!, sys-sigset-empty!, sys-sigmask.
* lib/gauche/signal.scm : made with-signal-handlers work with the
new signal handling mechanism
2002-07-07 Shiro Kawai <shiro@acm.org>
* src/signal.c, src/gauche.h, src/vm.c, src/extlib.stub: revised
signal handling mechanism. Now the signal handler vector is
shared by all threads. This check-in breaks backward compatibility
of the signal handling mechanism---the compatible
with-signal-handlers interface should be written later.
2002-07-06 Shiro Kawai <shiro@acm.org>
* src/exclib.stub : fix slot name of uncaught-exception.
* ext/net/net.c (Scm_SocketBind): call getsockaddr to get the actual
address after binding. (Thanks to ODA Hideo for a patch).
* src/vm.c, src/thread.c : separated Scheme thread API-related
routines from vm.c to thread.c. Fixed thread cleanup routine;
now it's called by pthread_cleanup_push mechanism.
Scm_ThreadTerminate is implemented.
2002-07-05 Shiro Kawai <shiro@acm.org>
* src/port.c: added mutex protection to getc, getz and readline.
separated duplicated code of 'safe' and 'unsafe' version of
generic interface into portapi.c, and include it twice.
2002-07-04 Shiro Kawai <shiro@acm.org>
* src/repl.c : rewrote to use trampoline instead of C-level loop.
This avoids extra C-stack overhead, and makes captured toplevel
continuation valid throughout the entire session.
* src/error.c : added Scm_ReportError() formerly defined in vm.c as
report_error.
* src/vm.c : fixed a bug that caused run_loop() to return prematurely.
2002-07-02 Shiro Kawai <shiro@acm.org>
* src/port.c, src/gauche.h : first attempt of protecting port access
in threaded env. Finished for putb, putc, puts and putz.
* src/vm.c (Scm_VMCallCC): fixed to take a procedure with variable-
length arguments.
* configure.in: changed thread option from --with-thread to
--enable-threads to match the same configuration option in GC.
2002-07-01 Shiro Kawai <shiro@acm.org>
* ext/uvector/test.scm : fixed test cases accodring to the fix
of eqv? and equal?
* src/boolean.c (Scm_EqvP, Scm_EqualP): fixed a bug that made
(eqv? 1 1.0) ==> #t and (equal? 1 1.0) ==> #t, which
should return #f.
2002-06-30 Shiro Kawai <shiro@acm.org>
* src/class.c, src/boolean.c, src/compare.c, src/extlib.stub : added
compare procedure and object-compare generic function. Changed
the signature of ScmClass.compare so that it can be called both
equality test (delegates to object-equal?) and comparison (object-
compare).
* release 0.5.7
* src/class.c : added object-equal? generic function to extend equal?.
* ext/uvector/array.scm (generate-amap): fixed a bug in the boundary
check that passes an index equal to the array-end.
2002-06-28 Shiro Kawai <shiro@acm.org>
* ext/uvector/array.scm : more array utils, and array reader/write
method.
2002-06-27 Shiro Kawai <shiro@acm.org>
* lib/gauche/array.scm : moved to ext/uvector. added some more
array utilities.
* ext/uvector/*, src/read.c : uniform vector is now supported in
gauche.uvector module instead of srfi-4. srfi-4 module is kept
for compatibility.
2002-06-26 Shiro Kawai <shiro@acm.org>
* lib/srfi-26.scm, test/srfi.scm, src/gauche-init.scm : added SRFI-26
and its test, and set cut and cute to be autoloaded.
* src/extlib.stub (format): allow to omit the port argument, so that
it conforms SRFI-28 (basic format strings).
2002-06-25 Shiro Kawai <shiro@acm.org>
* ext/uvector/* : allow a list and a vector as the second operand
of most vector arithmetic procedures.
2002-06-24 Shiro Kawai <shiro@acm.org>
* ext/uvector/* : added TAGvector-range-check, TAGvector-clamp,
and TAGvector-clamp!.
* src/vector.c, src/extlib.stub : added start/end optional argument
for vector->list (consistency with SRFI-13 string->list), and
added vector-copy.
2002-06-23 Shiro Kawai <shiro@acm.org>
* lib/gauche/array.scm : added. right now, it is just a prototype.
2002-06-22 Shiro Kawai <shiro@acm.org>
* src/gauche/arith.h : added macros that checks integer arithmetic
overflow.
* ext/uvector/uvutil.c.sh : added TAGvector-dot, dot product operator.
2002-06-21 Shiro Kawai <shiro@acm.org>
* ext/uvector/uvectorP.h : fixed bugs on LP64 architecture
* missing, ltmain.sh : moved from gc/* to here, so that other
autoconf scripts (config.sub, config.guess and install-sh) can
be shared by gc and libgauche.
2002-06-20 Shiro Kawai <shiro@acm.org>
* gc/* : upgraded to BoehmGC 6.1alpha5.
* src/core.c : moved GC registration code for dynamic-loadable
extensions (used to be GC_register_dlopen_data) here, renaming to
Scm_RegisterDL, so that I don't need to touch gc sources.
* configure.in, Makefile.in, src/Makefile.in : changed for new
gc build process.
2002-06-19 Shiro Kawai <shiro@acm.org>
* ext/uvector/* : revised macro strategy of uvutil.c. Adding tests
for arithmetic functions.
2002-06-18 Shiro Kawai <shiro@acm.org>
* ext/uvector/* : finishing uniform vector utility functions.
2002-06-17 Shiro Kawai <shiro@acm.org>
* ext/uvector/* : adding uniform vector utility functions (not
finished yet)
* src/bignum.c, src/gauche/arith.h, src/test-arith.c : separated
basic integer arithmetic macros to arith.h, for there will be
machine-dependent optimizations. Added C test program for
arith.h macros.
* src/read.c : added reader syntax for UCS characters: #\uXXXX
for character literal, and \uXXXX escape sequence in string literal.
2002-06-16 Shiro Kawai <shiro@acm.org>
* src/char.c, src/extlib.stub : added ucs<->char conversion routine
scheme: ucs->char, char->ucs, c: Scm_UcsToChar, Scm_CharToUcs.
* ext/charconv/cvt.scm (generate-utf8->eucj): bug fix: the table for
utf8 [d0 xx] and [d1 xx] sequence was missing in utf8->eucjp table.
* ext/xlink : avoid calling sys-symlink when there's already a link.
* src/read.c (maybe_uvector): use Scm_Require instead of Scm_Load
to initialize Scm_ReadUvectorHook.
2002-06-14 Shiro Kawai <shiro@acm.org>
* release 0.5.6
2002-06-13 Shiro Kawai <shiro@acm.org>
* ext/charconv.c : fixed int* and size_t* discrepancy
* src/port.c (Scm_Getc): fixed a bug that getc didn't work when
the size of character was bigger than the size of the buffer
(pretty rare case, but bug is bug).
* src/error.c, src/extlib.stub : fixed a bug in Scm_Warn. Added
Scheme-level interface (warn).
2002-06-12 Shiro Kawai <shiro@acm.org>
* lib/file/util.scm : experimentally added file->string, file->list,
file->string-list and file->sexp-list.
* src/gauche/char_euc_jp.h: adapted to 3-byte sequence (8F xx xx).
* ext/charconv/guess.scm, ext/charconv/guess.c : improved automatic
character encoding detection, by using probabilistic DFA.
2002-06-11 Shiro Kawai <shiro@acm.org>
* lib/gauche/object.scm : insert the binding of |setter of ref| into
gauche module, or it doesn't work well with gauche.sequence module.
* src/moplib.stub (slot-ref): set setter of slot-ref to slot-set!.
2002-06-10 Shiro Kawai <shiro@acm.org>
* src/module.c: fixed a bug that Scm_Import added imported module
to the imported list multiple times. Also added proper mutex for
module access.
* src/core.c (Scm_Warn) : added Scm_Warn.
* src/vector.c (Scm_VectorFill), src/extlib.stub (vector-fill!) :
allow to take optional start and end argument (parallel to
SRFI-13 string-fill!).
2002-06-09 Shiro Kawai <shiro@acm.org>
* gc/dyn_load.c (GC_register_dlopen_data), src/gauche/extend.h,
aclocal.m4 : fixed a GC problem that the bss data in the dlopened
module was not added to the GC root. This caused memory fault
on Cygwin etc.
* ext/charconv/jconv.c : added #ifdef's to compile without iconv.
2002-06-08 Shiro Kawai <shiro@acm.org>
* src/main.c : fixed usage message. disabled SIGWINCH by default.
* ext/charconv/jconv.c : added iso2022jp support and cleanup routine.
added more tests.
2002-06-07 Shiro Kawai <shiro@acm.org>
* src/gauche.h, src/string.c : fixed a problem of signed/unsigned
char inconsistency (bug pointed out by Sven Hartrumpf).
2002-06-05 Shiro Kawai <shiro@acm.org>
* ext/charconv/jconv.c : wrapping up. passes the current tests.
* lib/srfi-27.scm : added srfi-27 support.
* src/vm.c (report_error): limit the depth of stack dump of the
default error reporter.
2002-06-04 Shiro Kawai <shiro@acm.org>
* ext/charconv/* : reorganized to make jconv intercept iconv (but
jconv itself is inactivated yet).
2002-06-03 Shiro Kawai <shiro@acm.org>
* src/gauche-init.scm, lib/gauche/common-macros.scm : added dolist
* src/write.c (Scm_Format): fixed a problem that raises a "too many
argument" error when ~:* is used.
2002-05-28 Shiro Kawai <shiro@acm.org>
* ext/charconv/jconv.c, ext/charconv/cvt.scm : added for japanese
characte encoding conversions.
2002-05-27 Shiro Kawai <shiro@acm.org>
* release 0.5.5
* ext/mt-random : more fix for cygwin. right now, some procedures that
refer to uvector don't work on cygwin, because of DLL problem.
* src/compare.c : further improvement.
2002-05-26 Shiro Kawai <shiro@acm.org>
* ext/mt-random : fixed missing initialization code.
* src/compare.c : changed sort algorithm from simple quicksort to
the hybrid of quicksort and heapsort.
2002-05-25 Shiro Kawai <shiro@acm.org>
* ext/mt-random/mt-random.c (genrand_int_small): fixed a bug in LP64
architecture.
* src/number.c (Scm_InexactToExact): fixed a bug in 64bit architecture
2002-05-24 Shiro Kawai <shiro@acm.org>
* src/load.c : finished the routine to detect require dependency loop.
* lib/srfi-1* : added partial-application version of some list
procedures: count$, fold$, fold-right$, reduce$, reduce-right$,
filter$, partition$, remove$, member$, find$, find-tail$,
any$, every$, delete$, assoc$.
* src/gauche.h : fixed a bug of uninitialized ScmProcedure field.
* lib/gauche/procedure.scm, lib/gauche/collection.scm : added map$,
for-each$, apply$.
* lib/math/const.scm : added.
2002-05-23 Shiro Kawai <shiro@acm.org>
* src/srfi-19.scm, src/srfi-19/format.scm : fixes bugs.
* test/srfi.scm : added tests for srfi-19.
* src/system.c : allowed negative value in Scm_Time slots; required
to represent negative time duration.
* src/proc.c (proc_print): prints closure info.
2002-05-22 Shiro Kawai <shiro@acm.org>
* ext/auxsys/auxsyslib.stub (sys-times): fixed the way to find out
clock ticks.
* ext/charconv/configure.in : add proper include path when --with-iconv
is specified.
2002-05-21 Shiro Kawai <shiro@acm.org>
* src/load.c : protecting some system-wide static states by mutexes.
* src/stdlib.stub, src/extlib.stub : moved definitions of Scheme
subrs load and load-from-port to load.c.
2002-05-20 Shiro Kawai <shiro@acm.org>
* src/genstub : define-cclass starts working. The interface may
change.
* src/exclib.stub, src/error.c : moved exception class hierarchy
definition to exclib.stub from error.c
* src/thrlib.stub, src/mutex.c, lib/gauche/thread.scm : made basic
thread primitives as builtin classes, and autoload SRFI-18
procedural APIs.
2002-05-19 Shiro Kawai <shiro@acm.org>
* src/write.c (Scm_Format): added ~* directive.
* src/genstub : reorganized <type> class to handle types more
generally.
2002-05-18 Shiro Kawai <shiro@acm.org>
* src/genstub : removed obsolete definition of print and println, and
rewrote to use new print. some code to support define-cclass is
added, but not finished.
* src/gauche/exception.h : added
* src/error.c : adding exception hieararchy support; not finished yet.
2002-05-17 Shiro Kawai <shiro@acm.org>
* src/write.c (Scm_Vprintf): the precision parameter of %S directive
now specifies the minimum padding width; e.g. %50.20S prints at
least 20 chars and at most 50 chars.
2002-05-16 Shiro Kawai <shiro@acm.org>
* src/mutex.c (Scm_GetTimeSpec): fixed according to SRFI-18 spec
(real number for relative time from now).
* src/system.c : moved Scm_GetTimeSpec here.
* src/vm.c : more thread interface. made Scm_ThreadJoin take
timeout arg.
* test/thread.scm : more tests.
2002-05-15 Shiro Kawai <shiro@acm.org>
* src/mutex.c : fixed mutex-unlock! to handle timeout and condition
variable.
2002-05-14 Shiro Kawai <shiro@acm.org>
* src/mutex.c : fixed mutex-lock! to handle timeout and owner-thread
properly. Added condition variable.
* ext/mt-random/test.scm : make test work without installing srfi-4
* configure.in, src/gauche/config.h.in : moved check of gettimeofday
here
* src/gauche.h, src/system.c, src/syslib.stub : added <time> object
* lib/gauche/time.scm, lib/srfi-19.scm : removed time.scm
2002-05-13 Shiro Kawai <shiro@acm.org>
* src/gauche.h, src/mutex.c, etc. : rewriting Scheme-level mutex
* test/thread.scm : added basic thread API tests
2002-05-12 Shiro Kawai <shiro@acm.org>
* ext/mt-random/test.scm : added some tests
2002-05-11 Shiro Kawai <shiro@acm.org>
* ext/mt-random/* : added mt-random-real0
* src/symbol.c, src/module.c, src/vm.c, etc. : added setter/getter
hook to gloc. added define-constant syntax.
* src/compile.c : inline constant reference defined by define-constant.
2002-05-10 Shiro Kawai <shiro@acm.org>
* lib/file/util.scm : added find-file-in-paths and move-file.
* ext/mt-random/* : added mt-random-integer with arbitrary range.
2002-05-09 Shiro Kawai <shiro@acm.org>
* ext/mt-random/* : added math.mt-random.
2002-05-08 Shiro Kawai <shiro@acm.org>
* lib/file/util.scm : added touch-file and copy-file.
* lib/gauche/defvalues.scm : moved define-values here, and added
set!-values.
* ext/auxsys/auxsyslib.stub : added sys-utime.
2002-05-06 Shiro Kawai <shiro@acm.org>
* lib/gauche/procedure.scm : added.
* src/proc.c : exposed procedure information as slots of <procecure>
object.
* lib/gauche/object.scm : added default ref and (setter ref) method
for slot reference.
2002-05-04 Shiro Kawai <shiro@acm.org>
* release 0.5.4
* src/gauche.h, src/system.c : rename some tokens to avoid name
conflicts to macros in Darwin.
* lib/file/util.scm : more procedures.
2002-05-02 Shiro Kawai <shiro@acm.org>
* src/repl.c : clears VM val0 register after evaluating prompt
string; it showed up when (begin) was evaluated at the toplevel
and was ugly.
* src/gauche-init.scm : added compose
* lib/file/util.scm : more procedures.
2002-05-01 Shiro Kawai <shiro@acm.org>
* src/port.c : fixed a memory-overwriting bug in bufport_read.
* lib/file/util.scm : more procedures.
2002-04-30 Shiro Kawai <shiro@acm.org>
* lib/file/util.scm : added.
2002-04-29 Shiro Kawai <shiro@acm.org>
* src/extlib.stub : added open-input-fd-port and open-output-fd-port.
* src/port.c, src/stdlib.stub, src/extlib.stub : refactored port
buffering mode check routine.
* ext/termios/* : added pty interface (openpty and forkpty).
* src/system.c, ext/extlib.stub : made system object information
accessible as slots.
2002-04-28 Shiro Kawai <shiro@acm.org>
* src/port.c, src/extlib.stub : added buffering mode keyword argument
to open-input-port and open-output-port. added Scheme-level API
to get/set port buffering mode.
* ext/net/* : adapted to the new port buffering mode API.
2002-04-27 Shiro Kawai <shiro@acm.org>
* lib/gauche/common-macros.scm, src/gauche-init.scm : experimentally
added utility macros let1, pa, let_, l_, if_, when_ and while_.
See how it's useful.
2002-04-26 Shiro Kawai <shiro@acm.org>
* src/port.c, src/extlib.stub : getc, getb and getz can now work
interchangebly on the same port.
2002-04-25 Shiro Kawai <shiro@acm.org>
* src/port.c, src/gauche.h, src/extlib.stub, ext/charconv/charconv.c,
ext/net/net.c : Changed file port API.
* src/stdlib.stub : added port?
* src/extlib.stub : added weak-vector-length
* lib/gauche/collection.scm, lib/gauche/sequence.scm : added a
weak vector to the collection and sequence framework.
2002-04-24 Shiro Kawai <shiro@acm.org>
* ext/charconv/charconv.c : adapted to the new port API.
* src/port.c, src/gauche.h, src/extlib.stub : completely rewritten
the file I/O code; now Gauche does its own buffering instead of
using FILE*. Implemented proper char-ready?.
2002-04-23 Shiro Kawai <shiro@acm.org>
* src/weak.c, src/gauche.h, src/class.c, src/extlib.stub : added
weak vector which is needed for Gauche's own buffering port
implementation.
2002-04-21 Shiro Kawai <shiro@acm.org>
* src/compile.c : eliminated the "merger" NOP instruction at the
tail position; that prevented proper tail recursion in some cases.
* src/gauche-init.scm (define-values): added define-values.
* lib/www.cgi.scm : checks CONTENT_TYPE and CONTENT_LENGTH.
Introduced cgi-metavariables parameter for better customizability.
2002-04-19 Shiro Kawai <shiro@acm.org>
* lib/gauche/parameter.scm : added.
* src/genstub, *.stub : changed the way to handle C preprocessor
symbols; instead of read C headers and parse them, genstub just
emits cpp directives to the C source and let cpp handle them.
Stub files are modified accordingly.
* src/gauche.h src/bignum.c, src/string.c, src/regexp.c, src/char.c :
Introduced SCM_DEBUG_HELPER cpp symbol to exclude debug-only
routines from the release code.
2002-04-17 Shiro Kawai <shiro@acm.org>
* src/class.c (scheme_slot_index) : damn it! this routine has
returned bogus index that causes illegal memory access. It's
a wonder that it hasn't revealed until now. This was the reason
of the bug described in the entry below.
* src/string.c, src/gauche.h: a snapshot of improving dynamic string
handling by avoiding realloc. NB: this version contains a nasty
memory bug.
2002-04-16 Shiro Kawai <shiro@acm.org>
* src/main.c : adds "." and "../lib" to the *load-path* if gosh is
invoked from the source tree, for the convenience of testing.
Checks are performed to see if we're really in the source tree.
* Makefile.in, ext/xlink, ext/*/Makefile.in: added make target to
create some symlinks for the convenience of development.
2002-04-15 Shiro Kawai <shiro@acm.org>
* release 0.5.3
* various files : fixes to LP64 architecture.
* Makefile.in, lib/Makefile.in : run slib initialization routine after
installation to generate slibcat.
* Gauche.spec : added post script to generate slibcat.
2002-04-14 Shiro Kawai <shiro@acm.org>
* src/compile.c (lookup_env): fixed the variable reference algorithm
so that it can handle the case when a frame contains more than
one variable with the same name, in the case like
'(let* ((x 1) (x 2)) ...)'. A bug pointed out by Paul Stodghill.
* src/bignum.c : further optimization.
2002-04-13 Shiro Kawai <shiro@acm.org>
* src/number.c (double_print): switched back to the MP version
of Burger&Dybvig, for it was difficult to get the consistent
result by flonum version on multiple platforms.
* src/bignum.c : fixed a bug in bignum_gdiv that missed a carry
in some occasion.
2002-04-12 Shiro Kawai <shiro@acm.org>
* configure.in, src/gauche/config.h.in : added a test for alloca().
* src/bignum.c, src/number.c : adding denormalized bignum APIs.
* src/number.c : changed Scm_MinMax interface. canonicalize
complex return (imag==0.0 coerced to flonum).
* src/extlib.stub : added min&max.
2002-04-10 Shiro Kawai <shiro@acm.org>
* src/number.c : number reader/writer passes r4rstest.
2002-04-08 Shiro Kawai <shiro@acm.org>
* src/write.c: fixed a bug that produced bogus output for
(write* '#()). Thanks for HAbe to point this out.
2002-04-07 Shiro Kawai <shiro@acm.org>
* src/number.c : modified Burger&Dybvig algorithm to use floating-
point arithmetic instead of multiple-precision integer arithmetic.
The routine doesn't work for very small numbers yet.
2002-04-05 Shiro Kawai <shiro@acm.org>
* src/number.c : naively implemented Burger&Dybvig printing algorithm.
This is just an experiment to see how it works.
2002-04-04 Shiro Kawai <shiro@acm.org>
* src/number.c : fixed read_real to avoid underflow of reading
very small numbers. still needs to work on denormalized flonum
case.
* src/number.c, src/bignum.c, src/extlib.stub : added floating
number decode routine.
2002-04-03 Shiro Kawai <shiro@acm.org>
* src/number.c : improved integer reader to do bignum calculation
with chunk of digits, instead of every digits.
* src/number.c, src/stdlib.stub : integrated Scm_Min and Scm_Max.
2002-04-02 Shiro Kawai <shiro@acm.org>
* src/number.c, src/read.c : rewrote number reader to handle
properly exactness, rational representation, and "#e#x" etc.
* lib/gauche/numerical.scm, src/gauche-init.scm, src/stlib.stub :
changed 'make-polar' to a subr from a Scheme-defined function,
since the result of make-polar didn't exactly match the
result of polar representation (<real>@<real>) on x86, because of
the Intel's 80-bit floating-point arithmetic, and which was
confusing.
2002-04-01 Shiro Kawai <shiro@acm.org>
* configure.in : search slib from /usr/share/slib first, for
it appears to be the default location of slib installation.
* lib/slib.scm.in : incorporated the changes of the slib2d3's
Template.scm
2002-03-30 Shiro Kawai <shiro@acm.org>
* src/gauche-init.scm, lib/slib.scm.in : fixed a problem with
slib2d3 which was caused because cond-expand in slib's
require.scm expanded to a form that referred slib's require
instead of gauche's.
2002-03-27 Shiro Kawai <shiro@acm.org>
* src/vm.c, src/vm.h : adding more thread support.
* src/mutex.c : added.
* configure.in, Makefile.in, gc/Makefile.in : compile GC with
pthred support when requested. It was the cause of hang
problem found in 3/13.
2002-03-13 Shiro Kawai <shiro@acm.org>
* src/vm.c, src/vm.h : added initial code for make-thread and
thread-start!. There's a problem that main thread hangs at
sigsuspend in exit().
2002-03-12 Shiro Kawai <shiro@acm.org>
* configure.in, src/gauche/config.h.in : added --with-pthread.
* src/vm.c, src/vm.h : adding pthread support.
2002-03-10 Shiro Kawai <shiro@acm.org>
* aclocal.m4 (AC_GAUCHE_INIT_EXT) : substitute GAUCHE_VERSION as well.
* src/gauche-init.scm : added print.
* Gauche.spec : ensure the build install destination is clean.
2002-03-09 Shiro Kawai <shiro@acm.org>
* lib/srfi-19.scm, lib/srfi-19/* : added srfi-19 support (not
finished yet).
* lib/gauche/common-macros.scm : added update! (experimentally).
2002-03-08 Shiro Kawai <shiro@acm.org>
* src/number.c (read_integer): allow ratinal number syntax (when read,
it is converted to real number). Still it doesn't accept
complex number with rational coefficients.
2002-03-07 Shiro Kawai <shiro@acm.org>
* release 0.5.2
* Gauche.spec : added.
* src/Makefile.in, src/gauche-config.in : changed the installaion
directory of header files from share to lib --- header files contain
configured information that may be architecture specific.
* aclocal.m4: further workaround for cygwin.
"rm -f foo; echo ... > foo" still sometimes failed, so removed rm.
2002-03-06 Shiro Kawai <shiro@acm.org>
* ext/auxsyslib.stub : removed sys-setpgrp, for the function
prototype differs among platforms. it is redundant anyways.
* Makefile.in, doc/Makefile.in : makes realclean really clean.
* doc/gosh.1.in, doc/gauche-config.1.in : added manpages.
2002-03-05 Shiro Kawai <shiro@acm.org>
* src/extlib.stub, src/gauche/predef-syms.h : changed macro-expand
-> macroexpand etc.
* ext/auxsys: added sys-gettimeofday. moved sys-ctermid here.
* lib/gauche/time.scm : added <time> class, commonly used by
SRFI-18 and SRFI-19.
2002-03-03 Shiro Kawai <shiro@acm.org>
* ext/auxsys: added wrappters for functions that are not POSIx.
* src/gauche-init.scm : added autoload for auxsys functions
* src/gauche.h, src/gauche/pthread.h, src/gauche/uthread.h :
start adding thread-related structures.
2002-03-01 Shiro Kawai <shiro@acm.org>
* lib/text/html-lite.scm (make-html-element): fixed a bug that escapes
backslash in parameters illegaly.
2002-02-25 Shiro Kawai <shiro@acm.org>
* src/compile.c (compile_define): added define-in-module syntax.
* src/gauche-init.scm, lib/gauche/with.scm, lib/gauche/numerical.scm :
adapted to define-in-module.
* lib/gauche/with.scm : fixed semantics of closing file ports.
* lib/port/stk.scm: added posix-* compatibility functions.
2002-02-22 Shiro Kawai <shiro@acm.org>
* src/compile.c : it turned out select-module has to be visible
from the scheme module for autoload to work.
* lib/Makefile.in : fixed installation of file/filter.scm and
gauche/interpolate.scm.
2002-02-21 Shiro Kawai <shiro@acm.org>
* lib/file/filter.scm : added.
* src/syslib.stub : fixed sys-mkstemp that wasn't working.
2002-02-20 Shiro Kawai <shiro@acm.org>
* ext/auxsys/*, src/syslib.stub : added auxiliary system function
extension. sys-putenv, sys-uname and sys-times are moved from
gosh body to auxsys.so.
2002-02-18 Shiro Kawai <shiro@acm.org>
* lib/gauche/interpolate.scm : fixed the interpolation syntax.
* src/ldwrap.sh.in : fix for cygwin (remove -lsomething from command
line for dlltool).
* src/macro.c, src/extlib.stub : added procedure version of
macro-expand and macro-expand-1.
2002-02-17 Shiro Kawai <shiro@acm.org>
* src/macro.c (compile_macro_expand) : bug fix for expanding
traditional macros.
* src/read.c, lib/gauche/interpolate.scm : added special syntax
#`"..." for string interpolation.
* src/extlib.stub : added read-list.
2002-02-16 Shiro Kawai <shiro@acm.org>
* gc/dyn_load.c, src/core.c : fix required to link dyn_load.o
on MacOS X.
* src/syslib.stub : use stat(2) for sys-access on MacOS X as well.
2002-02-15 Shiro Kawai <shiro@acm.org>
* aclocal.m4 : the rule to generate *_head.c and *_tail.c in
configure sometimes fails on cygwin, where the timing of
"rm" and following "echo" seems to create a race condition.
Fixed to guarantee "rm" is executed before "echo".
2002-02-14 Shiro Kawai <shiro@acm.org>
* release 0.5.1
2002-02-13 Shiro Kawai <shiro@acm.org>
* src/gauche-init.scm : fixed the definition of use to accept
identifier; needed to make cond-expand work.
* lib/srfi-0.scm : added SRFI-22 to the feature set, and fixed
a bug that prevents cond-expand from working.
* src/main.c : INCOMPATIBLE CHANGE - fix the convention to pass
the list of arguments to 'main' according to the final SRFI-22.
Now the argument list includes the script name itself. For
backward compatibility, -fcompat-0.5 command-line option is
added.
* src/genstub : adapted to the change of main.c
* lib/gauche/test.scm (test-end) : reports descrepancies in the
order of tests (instead of reverse order).
* lib/gauche/version.scm : added.
2002-02-12 Shiro Kawai <shiro@acm.org>
* ext/net/test.scm : allow sys-stat->file-type to return 'fifo
instead of 'socket, for some OSes doesn't distinguish them.
* src/read.c : change debug-print shorthand syntax from #? to #?=
* src/vm.c (arrange_application), src/gauche/vminsn.h : fix a bug
that confused Scm_VMApply when VM instruction is given to arguments.
(patch from Abe Hiroshi).
* src/load.c : patch to compile on FreeBSD 2.x (from Abe Hiroshi)
* src/gauche/portmacros.h (SCM__ISTR_GETB): fixed a bug that returned
EOF on some platforms when read-byte reads char > 0x80.
(patch from Abe Hiroshi).
* gc/dyn_load.c : the previous fix isn't enough for the platforms
such as FreeBSD 2.x.
2002-02-11 Shiro Kawai <shiro@acm.org>
* src/number.c (Scm_InexactToExact): fixed the case when an inexact
number is passed.
* src/main.c (main): if the script file name is given in relative
path, search it from the current directory even "." is not in the
load path.
* configure.in : recovered GOSH_USE_SHLIB substitution that was
accidentally dropped.
* lib/rfc/cookie.scm : avoid using %T in strftime, for it's not POSIX.
2002-02-10 Shiro Kawai <shiro@acm.org>
* aclocal.m4 (AC_GAUCHE_EXT_FIXUP): allow optional second arg.
* Makefile.in, src/gauche-config.in : install aclocal.m4.
* src/read.c : fixed a bug in the character reader so that it
recognizes character name in case-insensitive way.
* src/syslib.stub : for freebsd, sys-access uses stat(2) instead
of somewhat unreliable access(2).
* src/gauche-config.h : autoloads srfi-0 (cond-expand).
* ext/net/configure.in, ext/net/netconfig.h.in, ext/net/net.h :
includes rpc/types.h if the system has it. (Suggested by
Abe Hiroshi).
* src/number.c, src/bignum.c, ext/uvector/uvectorP.h : applied
patch from Abe Hiroshi to make it work on HP_UX.
2002-02-09 Shiro Kawai <shiro@acm.org>
* ext/*/configure.in : modified to use aclocal.m4
* aclocal.m4, gc/dyn_load.c, src/gauche/extend.c: for the platforms
that GC doesn't support dlopened object, added the way of explicit
registration of the data section. (Thanks for this idea from
Abe Hiroshi).
2002-02-08 Shiro Kawai <shiro@acm.org>
* src/genstub, src/class.c : fixed to compile extensions under cygwin.
* aclocal.m4 : added
2002-02-07 Shiro Kawai <shiro@acm.org>
* various files: snapshot of further modification for cygwin.
the core part is working. works on other platforms.
need more work for extensions.
2002-02-06 Shiro Kawai <shiro@acm.org>
* various files: snapshot of further modification for cygwin.
not finished yet. this check-in doesn't work for other
platforms, since gosh fails to load libgauche.so.
2002-02-02 Shiro Kawai <shiro@acm.org>
* various files: added support for cygwin (not finished yet).
gosh is now built using libgauche.so, instead of statically
linking libgauche.a. The link is done in a shell script
src/ldwrap.sh.
2002-01-30 Shiro Kawai <shiro@acm.org>
* release 0.5
2002-01-29 Shiro Kawai <shiro@acm.org>
* src/core.c : unwind dynamic handlers upon exit(). this is a
temporary solution and has to be rewritten for MT support.
2002-01-28 Shiro Kawai <shiro@acm.org>
* src/read.c : added support for back-reference reader syntax
(#digit= and #digit#). It doesn't work well yet for recursive
structures.
2002-01-24 Shiro Kawai <shiro@acm.org>
* configure.in, gc/include/private/gc_priv.h : applied patch from
ABE Hiroshi to fix configuration under FreeBSD 2.x and HP-UX.
* src/signal.c, src/syslib.stub : fix signal masking (temporary).
added sys-signal-name.
2002-01-23 Shiro Kawai <shiro@acm.org>
* configure.in, src/gauche-config.in : experimentally added
--reconfigure option to gauche-config script.
* src/syslib.stub : added sys-alarm
* src/*.c : added checks for interrupted system calls.
2002-01-22 Shiro Kawai <shiro@acm.org>
* src/signal.c : added default signal handler, and make signal queue
calling routine work
* lib/gauche/signal.scm : added with-signal-handlers.
2002-01-21 Shiro Kawai <shiro@acm.org>
* src/vm.c, src/regexp.c, src/gauche/vm.h : use sig{set|long}jmp
instead of {set|long}jmp.
* src/signal.c : added master signal handling mechanism.
2002-01-20 Shiro Kawai <shiro@acm.org>
* src/stdlib.stub : fix a bug in the code generator of
immediate_integer_inliner (thanks for Nobuo YAMASHITA to
point this out).
2002-01-15 Shiro Kawai <shiro@acm.org>
* src/signal.c : added sys-sigset class.
2002-01-14 Shiro Kawai <shiro@acm.org>
* src/load.c : make Scm_Load() return a boolean value as
Scheme's load.
2002-01-13 Shiro Kawai <shiro@acm.org>
* src/load.c, src/extlib.stub : added paths keyword arg to load.
fix load_next feature.
* lib/gauche/with.scm : fixed a bug in call-with-*-file and
with-*-file when used with :if-does-not-exist #f.
2002-01-11 Shiro Kawai <shiro@acm.org>
* src/number.c (Scm_Sign): fixed to conform its comment (thanks for
Iwao KIMURA).
* src/gauche-config.in : -l option includes -lgauche (thanks for
Iwao KIMURA).
* ext/charconv/charconv.scm : experimentally overloaded open-*-file
functions to accept :encoding keyword argument.
* src/write.c, src/symbol.c : support writer in case-sensitive mode
* src/Makefile.in, test/symcase.scm : added tests for
case (in)sensitive mode
2002-01-10 Shiro Kawai <shiro@acm.org>
* src/read.c : implemented case-sensitive reader.
* src/main.c : added -fcase-fold flag to turn on the case-insensitive
(R5RS-comformant) reader. The default is case-sensitive.
2002-01-09 Shiro Kawai <shiro@acm.org>
* src/Makefile.in : fixed install action on creating
{BIN|LIB}_INSTALL_DIR when they don't exist (Thanks for Mr. Ogawa
to point this out).
2002-01-07 Shiro Kawai <shiro@acm.org>
* release 0.4.12
* ext/charconv/* : made the name of iconv.h header file configurable
as well as the library name through --with-iconv-lib
configuration option.
charconv.h is now generated from charconv.h.in.
* src/main.c : display internal encoding name for gosh -V
* INSTALL.esc : added notes on FreeBSD iconv problem.
2002-01-06 Shiro Kawai <shiro@acm.org>
* src/vm.c, src/repl.c : fixed the bug of VM stack rewinding problem.
* src/extlib.stub : added port-type
* lib/srfi-0.scm : added module stuff
2002-01-05 Shiro Kawai <shiro@acm.org>
* src/macro.c : fixed the traditional macro transformer spec.
In the form like (define-macro foo (lambda args ...)), args was
bound to the entire form (including foo) but it was
inconsisntent with tranditional Scheme implementation and also
with (define-macro (foo . args) ...) form. Now args receives
the arguments of foo, as expected.
2002-01-04 Shiro Kawai <shiro@acm.org>
* src/read.c : made Scm_ReadError public. improve the error message
of "EOF inside list" error.
* lib/gauche/vm/debugger.scm : avoid error on the form that doesn't
have source-info.
2002-01-03 Shiro Kawai <shiro@acm.org>
* src/signal.c : added.
2002-01-02 Shiro Kawai <shiro@acm.org>
* src/gauche/class.h, src/class.c, src/error.c, src/system.c :
defined SCM_ALLOCATE macro for cliche in the *_allocate methods.
* ext/charconv/configure.in : fixed a bug that didn't find iconv.h
even --with-iconv is given.
* test/TESTS, src/Makefile.in : list tests in a separate file.
2002-01-01 Shiro Kawai <shiro@acm.org>
* src/error.c : added some error classes.
2001-12-22 Shiro Kawai <shiro@acm.org>
* src/compile.c, src/macro.c : intern syntactic bindings to the
appropriate modules (either null or gauche).
* src/vm.c : added code to honor the second argument of eval
* src/extlib.stub : fix a bug that null-environment didn't take
version argument.
* src/gauche/char_sjis.h : fixed broken Shift-JIS support.
* src/gauche/char_utf_8.h : fixed a bug.
* src/string.c : fixed count_length that works incorrectly on
the encodings other than EUC-JP.
* ext/charconv : fixed bugs that appears in the encodings
other than EUC-JP.
2001-12-21 Shiro Kawai <shiro@acm.org>
* src/repl.c : quick bug fix for the problem of VM stack rewinding
on error.
* INSTALL.esc : added note for ISO8859 encoding users
2001-12-20 Shiro Kawai <shiro@acm.org>
* release 0.4.11
* src/vm.c : make the default exception handler not capture
non-fatal exception when user-defined exception handler is
active. Tests are added accordingly.
* gc/dyn_load.c, gc/include/private/gcconfig.h : enabled
DYNAMIC_LOADING for FREEBSD. I'm not sure it is the right
thing and work on all cases, though.
2001-12-19 Shiro Kawai <shiro@acm.org>
* src/vm.c : dynamic-wind properly returns multiple values.
Fixed bad continuation frame handling in user_eval_inner and
Scm_VMDefaultErrorHandler. Fixed bad order of thunk to be
called in the nested dynamic wind.
2001-12-18 Shiro Kawai <shiro@acm.org>
* src/vm.c : reorganized exception handling scheme. merged SRFI-18
compatible with-exception-handler.
2001-12-15 Shiro Kawai <shiro@acm.org>
* src/read.c : added convenience function Scm_ReadFromString and
Scm_ReadFromCString.
* src/main.c : added command line options -l (load) and -e (eval).
2001-12-14 Shiro Kawai <shiro@acm.org>
* src/vm.c : improved default stack trace display to include source
file info.
* src/load.c, src/gauche-init.scm, src/extlib.stub : made autoloading
modules work.
* lib/gauche/vm/debugger.scm : added further features.
2001-12-13 Shiro Kawai <shiro@acm.org>
* src/write.c : added maxcol parameter to ~A and ~S format directive
to limit the length of formatted string
* src/Makefile.in : ensure the binary installation directory
(pointed out by Bengt Kleberg).
2001-12-09 Shiro Kawai <shiro@acm.org>
* src/extlib.stub: added GC interface, gc and gc-stat (experimentally)
* src/vm.c, src/load.c : made loading program info (*load-history*
etc.) VM-local.
2001-12-08 Shiro Kawai <shiro@acm.org>
* src/read.c, src/gauche.h : added the read context to the internal
reader, although it doesn't do anything now.
2001-12-07 Shiro Kawai <shiro@acm.org>
* src/main.c : removed -fin-place option, for its usage is very
limited.
2001-12-06 Shiro Kawai <shiro@acm.org>
* src/macro.c : enable autoloading macros. define-macro can now
take either transformer or autoload object. fixed define-macro
to check valid transformer.
* src/gauche-init.scm : made common-macros.scm be autoloaded.
* src/load.c, src/main.c, src/gauche/vm.h : added LOAD_VERBOSE flag.
* src/main.c, various Makefile.in's : INCOMPATIBLE CHANGE: excluded
the current directory from the load-path by default. changed
test target of Makefiles to include the current dir explicitly.
2001-12-04 Shiro Kawai <shiro@acm.org>
* src/macro.c : fixed a bug that didn't expand a template (x ... . y)
when x ... is empty.
2001-12-02 Shiro Kawai <shiro@acm.org>
* release 0.4.10
2001-12-01 Shiro Kawai <shiro@acm.org>
* lib/gauche/common-macros.scm (dotimes): fixed a bug that sneaked
in by the last change.
* src/class.c, lib/gauche/object.scm : cleaned up the SlotAccessor
initialization code. Added initializable flag to SlotAccessor
to indicate whether :init-value/:init-keyword should be honored
or not; this allows procedural slot to be initialized.
* src/gauche/sequence.scm : finalizing API of sequence framework.
* src/module.c (Scm_ImportModules): fixed the order of imported
modules. The last imported module should be searched first.
* ext/uvector/srfi-4.scm : added collection and sequence API.
2001-11-30 Shiro Kawai <shiro@acm.org>
* src/class.c : Correctly initialize implicit metaclass hierarchy
when the builtin class has hierarchy.
* lib/gauche/common-macros.scm : added while and until experimentally
to see how usable they are.
* lib/gauche/collection.scm : finalizing API of collection framework.
2001-11-28 Shiro Kawai <shiro@acm.org>
* src/list.c (Scm_ListRef) : fixed a bug that caused SEGV.
* src/class.c : experimentally added a feature that inserts
implicit metaclass for builtin classes, which allows to define
``class-method''.
* src/moplib.stub : fixed a bug in is-a? that rejects a descendant
of <class> in the second argument.
2001-11-23 Shiro Kawai <shiro@acm.org>
* lib/srfi-1.scm : fixed a bug in alist-delete!
2001-11-22 Shiro Kawai <shiro@acm.org>
* lib/gauche/object.scm : added a customizable method
compute-slot-accessor
* lib/gauche/validator.scm : added
2001-11-21 Shiro Kawai <shiro@acm.org>
* lib/www/cgi.scm : fixed a bug in the default error method of
cgi-main that used old interface of text.html-lite.
2001-11-20 Shiro Kawai <shiro@acm.org>
* lib/port/jfilter.scm : fixed a bug in cv-file.
* lib/gauche/object.scm : changed the protocol of compute-get-n-set
so that it returns a _list_ of getter and setter procedure (as
opposed to a cons). The new behavior is compatible to STklos.
2001-11-19 Shiro Kawai <shiro@acm.org>
* src/write.c : write 'a instead of (quote a), etc.
* lib/text/tree.scm : handles dotted list as well.
* ext/charconv.c : fixed a bug that didn't allow to open an empty
port for automatic conversion.
2001-11-18 Shiro Kawai <shiro@acm.org>
* src/hash.c : fixed a bug in MakeHashTable that sets incorrect type
for eqv? hash. removed smallint_hash stuff, for eqv?-hash covers it.
* src/extlib.stub: added hash-table-type
2001-11-16 Shiro Kawai <shiro@acm.org>
* ext/dbm/bsddb.[ch] : added (not quite finished).
2001-11-15 Shiro Kawai <shiro@acm.org>
* lib/gauche/logical.scm : made bit-field and copy-bit-field
work even if start >= end.
* src/extlib.stub : added hash-table-delete!
* src/main.c : fixed typo (thanks for Sven Hartrumpf).
2001-11-14 Shiro Kawai <shiro@acm.org>
* release 0.4.9
* src/syslib.stub (sys-symlink) : typo fix
* lib/gauche/logical.scm, src/gauche-init.scm : added a bunch of
bitwise operations.
2001-11-13 Shiro Kawai <shiro@acm.org>
* configure.in : fixed the support of --with-local. added support
for Darwin1.3 and later.
* lib/gauche/object.scm : allow '(setter foo)' style method definition
* src/extlib.stub, src/gauche-init.scm : moved hash table mappers
to the Scheme code.
2001-11-12 Shiro Kawai <shiro@scm.org>
* ext/dbm/configure.in : more robust support on the systems that
has both gdbm and ndbm.
2001-11-11 Shiro Kawai <shiro@scm.org>
* lib/www/cgi.scm : fixed more bugs.
* lib/text/html-lite.stm : changed tag procedure names from
html-<element> to html:<element>
* src/port.c : read-line recognizes various line terminators
(\r, \n, and \r\n)
2001-11-10 Shiro Kawai <shiro@acm.org>
* ext/dbm/dbm.scm : introduced <dbm-meta>, metaclass for all <dbm>
instances.
* lib/www/cgi.scm : fixed a bug in cgi-parse-parameters that returned
a redundant result for a null query string. added cgi-main.
2001-11-09 Shiro Kawai <shiro@acm.org>
* src/regexp.c : fixed a bug that estimated the bytecode size
incorrectly for the patterns like #/(x|y)+/.
* lib/www/cgi.scm : added cgi-header
* lib/text/html-lite.scm : changed passing convention of the
parameters. added html-doctype.
2001-11-08 Shiro Kawai <shiro@acm.org>
* lib/text/html-lite.scm : experimentally added.
* configure.in : added --with-local flag to allow to use site-local
libraries throught the compilation process.
* src/extlib.stub : added hash-table-push! and hash-table-pop!
2001-11-07 Shiro Kawai <shiro@acm.org>
* lib/slib.scm.in : fixed a bug that made building a new catalog
fail. Thanks to Hiroshi INAMURA for the patch.
* lib/gauche/singleton.scm : experimentally added.
2001-11-06 Shiro Kawai <shiro@acm.org>
* various files : fixed a bug that didn't instantiate metaobjects
correctly when defined in Scheme sublassing a C-defined class.
This fix changed the interface of Scm_InitBuiltinClass, and
several files were updated accordingly.
2001-11-05 Shiro Kawai <shiro@acm.org>
* ext/fcntl : added some test methods.
2001-11-03 Shiro Kawai <shiro@acm.org>
* src/load.c : guaranteed to return #t on successful load
* src/char.c, src/read.c, src/regexp.c : fixed charset reader.
#[] is read an empty charset. In regexp, however, the closing
bracket at the beginning of charset is interpreted as the character
itself, for compatibility to the POSIX regexp. That is,
#/[]]/ is valid.
2001-11-02 Shiro Kawai <shiro@acm.org>
* lib/util/queue.scm : added dequeue-all!
* src/io.c, src/port.c, src/gauche-init.scm, lib/gauche/with.scm :
defined call-with-*-file and with-*-file procedures in Scheme
instead of C. io.c is removed.
2001-11-01 Shiro Kawai <shiro@acm.org>
* lib/util/queue.scm : added
2001-10-31 Shiro Kawai <shiro@acm.org>
* release 0.4.8
* doc/gauche-ref.texi : wrapping up the document.
2001-10-29 Shiro Kawai <shiro@acm.org>
* various files: adapted to LP64 architecture.
2001-10-28 Shiro Kawai <shiro@acm.org>
* configure.in's and Makefile.in's : made it work on more
configurations.
* src/string.c, lib/srfi-13/* : fixed the buf of string-index with
start/end args. added make-string-pointer start/end optional
args, and optimized srfi-13 functions to it.
* src/string.c (string_substitute) : fixed an evil bug that
overwritten the out-of-range memory area.
* src/load.c, src/vm.c : fixed autoload bug that doesn't load
the file when autoload symbol is referenced as a variable.
* ext/dbm/* : made it pass through the test.
2001-10-27 Shiro Kawai <shiro@acm.org>
* gc : upgraded Boehm GC package from 5.3 to 6.0.
* ext/dbm : made the basic functions work.
2001-10-26 Shiro Kawai <shiro@acm.org>
* lib/gauche/with.scm : added read-from-string and write-to-string
to be autoloaded.
2001-10-23 Shiro Kawai <shiro@acm.org>
* lib/text/tree.scm : added. fast concatenation and rendering of text.
* lib/gauche/object.scm : packaged in gauche.object, hiding auxiliary
procedures in it. This change prevents genstub from running with
gosh 0.4.7; compile.c has to be rev 1.66.
* src/compile.c : fixed with-module to work when generated by macros.
* src/class.c, src/gauche/class.h, src/moplib.stub : overhauled
slot accessing protocol. Slot accessor object becomes more robust,
and can be utilized in metaprogram easily. Several internal
functions are exposed for metaprograming.
2001-10-22 Shiro Kawai <shiro@acm.org>
* test/algorithm.scm : testing algorithm.* modules.
* src/gauche-init.scm : added use-version macro. removed compatibility
stuff for r_ok etc.
2001-10-21 Shiro Kawai <shiro@acm.org>
* src/extlib.stub : added clamp
* lib/gauche/object.scm : made coercion functions work for characters.
2001-10-20 Shiro Kawai <shiro@acm.org>
* src/genstub : prevent generated code from calling SCM_MAKE_KEYWORD
at the subr application time; keywords are now created at setup time.
Also added initcode form.
* ext/dbm : made it compile.
2001-10-19 Shiro Kawai <shiro@acm.org>
* lib/gauche/object.scm : added generic coercion methods,
x->string, x->integer and x->number.
* ext/dbm : added. not working yet.
2001-10-18 Shiro Kawai <shiro@acm.org>
* lib/algorithm/isomorph.scm : added
* lib/algorithm/toposort.scm : added
2001-10-17 Shiro Kawai <shiro@acm.org>
* lib/w3c/cgi.scm : renamed to lib/www/cgi.scm
2001-10-16 Shiro Kawai <shiro@acm.org>
* lib/port/stk.scm : added.
* lib/rfc/quoted-printable.scm : added quoted-printable-encode
* DIST : fixed `doc' target.
2001-10-15 Shiro Kawai <shiro@acm.org>
* src/hash.c : fixed equal?-hash.
* INSTALL.esc : added description about --with-rpath option.
2001-10-14 Shiro Kawai <shiro@acm.org>
* release 0.4.7
* lib/gauche/interactive.scm : disable debugger by default.
* doc/* : cleaned up. Stopped including HTML version in dist.
2001-10-12 Shiro Kawai <shiro@acm.org>
* doc/extract : added a feature to substitute node names and
reference with japanese one.
* src/regexp.c (re_exec_rec): fixed a bug of interpretation of NSET1
in multi-byte case.
* src/hash.c, src/extlib.stub : allow Scheme code to specify
hash type among predefined types.
2001-10-10 Shiro Kawai <shiro@acm.org>
* src/number.c (Scm_Expt): fixed a bug that (expt 0.0 1) returned
1.0 (Thanks to TAGA Yoshitaka).
* src/class.c : fixed a bug in method_more_specific comparing
methods with optional arg (Thanks to TAGA Yoshitaka).
* src/vm.c, lib/gauche/vm/debugger.c : fixed a problem that the
debugger printed only the innermost environment.
* lib/gauche/collection.scm : added experimentally.
2001-10-09 Shiro Kawai <shiro@acm.org>
* src/number.c : fixed a number class hierarchy bug.
* ext/uvlib.stub.sh : added setter definition to the *-ref.
2001-10-08 Shiro Kawai <shiro@acm.org>
* lib/gauche/common-macros.scm : added inc! and dec!.
2001-10-07 Shiro Kawai <shiro@acm.org>
* doc/gauche-ref.texi : more translations.
2001-10-05 Shiro Kawai <shiro@acm.org>
* lib/text/parse.scm : extended functions to be more orthogonal,
i.e. those which take char-list also take predicate.
* src/compile.c, src/genstub : made auto-generated inliner code
a bit more compact.
2001-10-04 Shiro Kawai <shiro@acm.org>
* src/syslib.stub : added sys-mkstemp.
* lib/text/parse.scm : implements the input stream parsing
primitives compatible with Oleg Kiselyov.
* lib/gauche/port.scm : added port-position-prefix.
* doc/gauche-ref.texi : making bilingual.
2001-10-03 Shiro Kawai <shiro@acm.org>
* src/list.c, etc. : merged safe version of accessors (*-ref+)
to the normal version (*-ref). Now normal version takes an
optinal argument.
* src/extlib.stub : added standard-input-port, standard-output-port
and standard-error-port.
* lib/gauche/port.scm : added. implements several useful
utilities for port input to be autoloaded. some functions are
moved from with.scm.
2001-10-02 Shiro Kawai <shiro@acm.org>
* lib/gauche/common-macros.scm : added several useful macros,
such as push! and dotimes. They are ugly, but sometimes its
so convenient that I couldn't resist adding them. It also
has the convenient macro syntax-error.
* src/list.c, src/vector.c, src/string.c, src/extlib.stub :
added safe version of accessors: list-ref+, vector-ref+ and
string-ref+.
2001-10-01 Shiro Kawai <shiro@acm.org>
* src/main.c : inhibit argument permutation of getopt, so that the
options after script file name can be passed to the users' script.
2001-09-30 Shiro Kawai <shiro@acm.org>
* src/extlib.stub : make logand, logior and logxor take more than
two args.
2001-09-29 Shiro Kawai <shiro@acm.org>
* release 0.4.6
* src/compiler.c : changed to emit meaningful information for env.
* lib/gauche/vm/debugger.scm : added minimal debugging commands.
* src/genstub : added real? type assertion.
2001-09-28 Shiro Kawai <shiro@acm.org>
* ext/net : INCOMPATIBLE CHANGE: made system constants upper case
(e.g. |AF_INET|).
2001-09-27 Shiro Kawai <shiro@acm.org>
* src/vm.c, src/extlib.stub, src/gauche/vm.h : added Scm_VMGetStack
and its Scheme interface. added a hook function in VM for
debugger.
* lib/gauche/vm/debugger.scm: added
2001-09-26 Shiro Kawai <shiro@acm.org>
* src/syslib.stub, src/gauche-init.scm : INCOMPATIBLE CHANGE:
use uppercase for all system symbols, such as |R_OK| (for
sys-access) or |SIGINT|.
* src/vm.c : fixed continuation stack trace in the default error
handler.
2001-09-25 Shiro Kawai <shiro@acm.org>
* src/gauche-init.scm : added file-exists?, file-is-directory? and
file-is-regular?.
* lib/gauche/vm/disasm.scm : fixed TAILBIND
2001-09-24 Shiro Kawai <shiro@acm.org>
* src/vm.c : added one word to the continuation frame for debug
info. This impacts performance (<2% in rudimental tests).
* configure.in : added --with-rpath experimentally.
* configure.in, src/gauche/config.h.in, src/main.c : applied a fix
from Hiroshi INAMURA for cygwin. Added -i (force interactive)
option to main.c.
2001-09-23 Shiro Kawai <shiro@acm.org>
* lib/rfc/cookie.scm : added construct-cookie-string
* lib/gauche/regexp.scm : allow user-specified procedure to be
called in regexp-replace[-all].
* lib/text/tr.scm, lib/text/cvs.scm, lib/w3c/cgi.scm : added
more features.
* src/vm.c : fixed a bug that exception handler didn't get a
proper stack trace.
* src/*.c : removed source-info stuff.
* lib/gauche/vm/disasm.scm : adapted to new LET-family insns.
2001-09-22 Shiro Kawai <shiro@acm.org>
* lib/rfc/cookie.scm : added
* src/string.c, src/extlib.stub : made string-scan in place of
the broken string-contains.
* lib/gauche/regexp.scm : added regexp-replace and
regexp-replace-all.
2001-09-21 Shiro Kawai <shiro@acm.org>
* src/syslib.stub : added sys-putenv if the system has putenv().
* lib/text/tr.scm : finished.
2001-09-20 Shiro Kawai <shiro@acm.org>
* lib/slib.scm (defmacro) : fixed a bug.
* lib/w3c/cgi.scm : moved under w3c.
* lib/text/csv.scm : added.
* src/stdlib.stub (open-output-string) : allow #f to :if-exists
2001-09-19 Shiro Kawai <shiro@acm.org>
* src/write.c : fixed a bug in format (thanks to Abe Hiroshi)
* src/bignum.c : fixed BignumLogXor
* lib/text/tr.scm : made basic function work
2001-09-18 Shiro Kawai <shiro@acm.org>
* src/char.c, src/extlib.stub : added digit->integer and
integer->digit, for converting digit char <-> number.
* lib/cgi.scm : added
* lib/text/tr.scm : added
2001-09-17 Shiro Kawai <shiro@acm.org>
* release 0.4.5
* src/regexp.c : fixed two bugs. Jump offset overflowed in the large
regexp. Top level `?' didn't compiled correctly.
* lib/gauche/logger.scm : added.
* src/system.c : made members of struct tm visible from Scheme.
* src/bignum.c, src/char.c, src/port.c : applied a patch from
Abe Hiroshi to fix bugs on LP64 architecture.
* src/gauche.h : fixed SCM_CHAR_MAX on LP64 architecture.
2001-09-16 Shiro Kawai <shiro@acm.org>
* src/stdlib.stub, src/port.c : added :if-exists, :if-does-not-exist
and :element-type flags to open-input-file and open-output-file to
control file operations precisely.
* src/read.c : added SRFI-10 sharp-comma reader extension.
2001-09-15 Shiro Kawai <shiro@acm.org>
* src/vm.c : fixed a bug that caused assertion failed when an
unhandled error is thrown from non-interactive script.
* src/class.c and other files: changed built-in class initialization
routines.
* src/system.c : added Scm_GetPortFd to eliminate duplicated code
on several files.
* ext/fcntl : added fcntl interface module.
2001-09-12 Shiro Kawai <shiro@acm.org>
* release 0.4.4
* src/repl.c, src/vm.c : cleaned up default exception handling.
* lib/gauche/process.scm : added process-output->string
2001-09-11 Shiro Kawai <shiro@acm.org>
* src/error.c : implemented exception class hierarchy.
2001-09-10 Shiro Kawai <shiro@acm.org>
* src/vm.c, src/extlib.stub : added error handling mechanism,
with-error-handler.
* test/error.scm : added to test error handler mechanism.
2001-09-07 Shiro Kawai <shiro@acm.org>
* src/vm.c, src/gauche/vm.h : fixed continuations thrown across
C stack boundary.
* ext/termios : added cf[gs]et[io]speed. use #ifdef's for non-POSIX
constants.
2001-09-06 Shiro Kawai <shiro@acm.org>
* ext/termios : added termios support.
2001-09-05 Shiro Kawai <shiro@acm.org>
* lib/gauche/selector.scm : added
* lib/gauche/interactive.scm : added describe
* ext/net : added socket-fd
* src/genstub : added a feature to read config.h and to generate
stubs conditionally depending on the defined preprocessor symbols.
* src/syslib.stub : added sys-ctermid and sys-readlink. Adapted
to the new genstub.
* doc/gauche-ref.texi : added a chapter of describing mappings
from C library functions to Scheme functions.
* src/vm.c (use_eval_inner) : cleaned up interaction between C
stack and Scheme stack.
2001-09-04 Shiro Kawai <shiro@acm.org>
* src/vm.c and other files: realized that stack-gc won't improve
performance unless I implement a special marking method in the
stack area. Reverted stack handling to the previous way.
2001-09-01 Shiro Kawai <shiro@acm.org>
* src/vm.c and other files: implemented stack garbage collector.
however, somehow it slows down things significantly; need to
redesign.
2001-08-05 Shiro Kawai <shiro@acm.org>
* release 0.4.3
* */configure.in : adapted to autoconf-2.52
* lib/gauche/interactive.scm : added. defines useful functions
for the interactive session.
* src/main.c : loads gauche.interactive when in the interactive
mode.
2001-08-04 Shiro Kawai <shiro@acm.org>
* src/symbol.c : removed Scm_Apropos - it'll be implemented in Scheme.
* src/extlib.stub : added hash-table-map
2001-08-03 Shiro Kawai <shiro@acm.org>
* src/vm.c : prevent a continuation from being thrown across C
stack boundary for now. Supporting it requires lots of VM
modification.
* src/read.c : arrow more flexible symbol syntax.
2001-07-24 Shiro Kawai <shiro@acm.org>
* src/compile.c (compile_do): fixed a bug that reported an error
on a valid do form (thanks to KIMURA Shigenobu).
* src/read.c : allow numbers to begin with dot, e.g. ``.12''
* ext/uvector/* : generate uvector.h under the subdirectory 'gauche',
so that other extension module can use #include "gauche/uvector.h".
* test/primsyn.scm : added tricky case tests of "case" and "do".
2001-07-14 Shiro Kawai <shiro@acm.org>
* release 0.4.2
2001-07-13 Shiro Kawai <shiro@acm.org>
* various files: applied a patch for MacOS X provided from
KIMURA Shigenobu.
2001-07-10 Shiro Kawai <shiro@acm.org>
* src/compile.c (compile_case): fixed a bug that reported an error
on a valid case form (thanks to KIMURA Shigenobu).
2001-07-08 Shiro Kawai <shiro@acm.org>
* src/macro.c : fixed a bug that couldn't handle pattern variables
appear in the higher level than its defined level.
* lib/srfi-9.scm : added SRFI-9, record types.
* src/read.c (read_char): recognize #\xXXX type character name.
* src/number.c (Scm_NumberToString): fixed a bug that didn't print
negative small integer correctly in radix 8 and 16.
* src/write.c (Scm_Forat): extended format to take parameters and
flags for the format directives, and to handle format directive
~d, ~b, ~o and ~x.
* test/io.scm : added to test format.
2001-07-07 Shiro Kawai <shiro@acm.org>
* release 0.4.1
* src/vm.c, src/compile.c, src/gauche/vm.h : refined and tested
stack overflow handling.
* configure.in, src/gauche/config.h.in, src/gauche-config.in,
ext/net/net.h : added checks for sysint.h, and removed spaces
after -I and -L options, in order to make MacOS X happy
(thanks to Shigenobu KIMURA skimu @ mac.com for pointing
this out.)
2001-07-04 Shiro Kawai <shiro@acm.org>
* src/compile.c, src/vm.c : modified the compiler to add CHECK_STACK
instructions to appropriate places.
2001-07-02 Shiro Kawai <shiro@acm.org>
* ext/net/configure.in : added check for -lnsl on Solaris
* ext/net/net.scm (make-server-socket): fixed bug about
:reuse-addr? keyword argument.
2001-07-01 Shiro Kawai <shiro@acm.org>
* src/load.c : added :export-symbols argument to dynamic-load.
* lib/gauche/parseopt.scm : added yet another command-line option
parser.
2001-06-30 Shiro Kawai <shiro@acm.org>
* release 0.4
* src/gauche/vm.h (SCM_VM_VALUES): fixed a bug in assertion.
* doc/gauche-ref.texi : added description of "error" and some more.
2001-06-29 Shiro Kawai <shiro@acm.org>
* src/error.c and most *.scm : INCOMPATIBLE CHANGE: made "error"
procedure SRFI-23 compliant, i.e. the first argument is just
a string, and "format" is not called. The former version which
uses format is renamed to "errorf".
* ext/net/netlib.stub : INCOMPATIBLE CHANGE: sockaddr-family now
returns a symbol, rather than a keyword.
* src/Makefile.in, src/gauche-config.in : changed install location
of site-specific DSOs; includes version number in the path.
* src/main.c : use main's return value for exit code in script mode.
* src/vm.c : remove reference to sysexits.h - it causes a duplicate
definition warning of EX_OK on IRIX, and we don't really need it.
2001-06-28 Shiro Kawai <shiro@acm.org>
* doc/gauche-ref.texi: added docs of sys-random and sys-srandom,
and some more.
2001-06-25 Shiro Kawai <shiro@acm.org>
* lib/gauche/process.scm: changed call-with-io-process to
call-with-process-io
* lib/gauche/with.scm : added call-with-string-io and
with-string-io
* src/syslib.stub : added sys-random and sys-srandom.
2001-06-24 Shiro Kawai <shiro@acm.org>
* src/syslib.stub (sys-pipe): INCOMPATIBLE CHANGE: sys-pipe now
returns two values, instead of one value of a list of two ports.
Other files are fixed accordingly.
* src/syslib.stub (sys-wait): INCOMPATIBLE CHANGE: sys-wait
and sys-waitpid now returns two values, pid and exit code,
instead of cons of them.
Other files are fixed accordingly.
* src/vm.c, src/gauche/vminsn.h, src/stdlib.stub: added instructions
for values, char?, pair?, string?,... and make them inline.
* ext/net/net.scm : fixed bugs.
2001-06-23 Shiro Kawai <shiro@acm.org>
* ext/net/configure.in : check existence of get*by*_r functions
before checking their synopsys. Suggested by MINOURA Makoto.
* release 0.3.15
* doc/gauche-ref.texi : added description of process ports.
2001-06-22 Shiro Kawai <shiro@acm.org>
* ext/net/net.scm : cleaned up the API of make-client-socket and
make-server-socket.
* ext/* : fixed installation location of extension modules.
* lib/gauche/process.scm : added process ports.
* src/main.c : fixed the calling scheme of ``main'' procedure,
according to the change of SRFI-22 draft.
2001-06-21 Shiro Kawai <shiro@acm.org>
* sys/class.c : changed API of Scm_InitBuiltinClass to allow
hardcoded slots.
* ext/net/netdb.c : added netdb interface (hostent, protoent
and servent).
2001-06-20 Shiro Kawai <shiro@acm.org>
* src/Makefile.in : added system test
* src/syslib.stub, src/system.c: various bug fixes
2001-06-19 Shiro Kawai <shiro@acm.org>
* src/syslib.stuc, src/system.c : added sys-select[!], the select(2)
interface. added sys-mkdir, sys-umask and sys-chmod as well.
* doc/gauche-ref.texi : enhanced description.
* test/system.scm : added test for the system library.
2001-06-18 Shiro Kawai <shiro@acm.org>
* src/syslib.stub: added fdset operations
2001-06-17 Shiro Kawai <shiro@acm.org>
* src/proc.c, src/compile.c, src/vm.c, src/gauche/vminsn.c :
support generalized setter natively.
* lib/srfi-17.scm : removed.
* src/genstub : added 'setter' directive to define generalized
setter in C code.
2001-06-16 Shiro Kawai <shiro@acm.org>
* src/gauche.h, src/genstub : changed to use macros rather than
bare static initializer in generated code
2001-06-14 Shiro Kawai <shiro@acm.org>
* src/genstub : reorganized the structure in more object-oriented
way.
2001-06-13 Shiro Kawai <shiro@acm.org>
* configure.in : made work with Solaris
* ext/net/configure.in : made work with IRIX and Solaris
* src/* : changed SCM_DEFINE_BUILTIN_CLASS macro to allow to set
allocation routine.
2001-06-12 Shiro Kawai <shiro@acm.org>
* ext/net/* : added more functions.
* doc/gauche-ref.texi : added gauche.net description
* src/main.c : when invoked with a script file, call "main" procedure
if defined. proposed SRFi-22 behavior.
2001-06-11 Shiro Kawai <shiro@acm.org>
* ext/net/* : made low-level functions work
2001-06-10 Shiro Kawai <shiro@acm.org>
* ext/net/addr.c : added
2001-06-07 Shiro Kawai <shiro@acm.org>
* release 0.3.14
* gc/dyn_load.c : fixed a bug that failed to find data segments
in dynamically loaded module on IRIX 6.5.
* ext/charconv/* : fixed small bugs around compilation and
installation.
* lib/port/jfilter.scm : added this compatibility module.
* lib/Makefile.in : fixed a bug that some modules were not installed
properly.
2001-06-06 Shiro Kawai <shiro@acm.org>
* ext/charconv/* : made it work with Bruno Haible's libiconv as well.
Added automatic character detection routine.
* src/regexp.c : fixed a bug with unused submatches. added
Scm_RegMatchBefore and Scm_RegMatchAfter
* src/extlib.stub : added rxmatch-before and rxmatch-after
2001-06-05 Shiro Kawai <shiro@acm.org>
* ext/charconv/* : added workaround for glibc-2.1 iconv() bug in
Shift-JIS handling. added concept of ownership in the conversion
port to control whether the conversion port should close the remote
port. changed Scheme API to use keyword arguments to specify
various parameters.
2001-06-04 Shiro Kawai <shiro@acm.org>
* src/port.c : allow bufport's flusher to flush less bytes than
specified. unflushed bytes are shifted by the bufport routine.
2001-06-03 Shiro Kawai <shiro@acm.org>
* src/extlib.stub : added port->string, port->byte-string
* ext/charconv/* : made it work.
2001-06-02 Shiro Kawai <shiro@acm.org>
* src/extlib.stub : added copy-port
2001-06-01 Shiro Kawai <shiro@acm.org>
* src/gauche.h, src/gauche/portmacros.h, src/*.c : changed API of
Scm_Getz to be consisntent with C's fgets (port comes last), and
added len parameter to Scm_Putz.
* src/port.c : fixed bugs in bufport_putz.
* src/extlib.stub : added open-output-buffered-port.
* lib/rfc/822.scm : added.
* lib/gauche/regexp.scm, test/regexp.scm : added test and changed
semantics of rxmatch-case.
2001-05-31 Shiro Kawai <shiro@acm.org>
* src/port.c, test/euc-jp.scm : more tests and bug fixes for the
buffered port.
* src/Makefile.in, test/mb-chars.scm : included a multibyte character
test to the standard tests. mb-chars.scm loads tests specific
to the native character encoding.
2001-05-30 Shiro Kawai <shiro@acm.org>
* src/port.c, src/extlib.stub: added open-input-buffered-port.
fixed some bugs in buffered port implementation.
2001-05-29 Shiro Kawai <shiro@acm.org>
* release 0.3.13
* configure.in, ext/charconv/* : check existence of iconv() to avoid
compilation error. Added a new configure option --with-iconv
to tell if iconv is installed in a non-trivial location.
* ext/uvector/* : added a test suite, and fixed bugs found by it.
* src/load.c : use RTLD_NOW for dlopen() to avoid segfault when
loaded DSO has unresolved reference.
* src/bignum.c : fixed a bug in Scm_MakeBignumFromSI that made wrong
result if the argument was LONG_MIN.
* src/main.c : added batch mode, i.e. to evaluate input without
prompting and printing the result. Useful for filter programs.
2001-05-28 Shiro Kawai <shiro@acm.org>
* release 0.3.12
* configure.in, lib/slib.scm.in : let configure.in to find the slib
location. the user can specify it by --with-slib=PATH,
alternatively.
2001-05-26 Shiro Kawai <shiro@acm.org>
* src/system.c, src/syslib.stub, configure.in, src/gauche/config.h.in:
Convert time_t to a number in Scheme world, instead of <sys-time>
object. Since time_t need not be an integer, a new configure test
is added to check how to convert between time_t and Scheme number.
2001-05-25 Shiro Kawai <shiro@acm.org>
* src/port.c : finished buffered ports.
* ext/charconv/* : adding more
2001-05-24 Shiro Kawai <shiro@acm.org>
* src/port.c : added buffered ports (not finished).
* ext/net/* : fixed configuration strategy.
2001-05-22 Shiro Kawai <shiro@acm.org>
* configure.in, src/*: applied a patch by MINOURA Makoto
(makoto@hauN.ORG) to run on various NetBSD platforms.
* doc/gauche-ref.texi: more docs.
2001-05-21 Shiro Kawai <shiro@acm.org>
* lib/slib.scm : added SLIB initialization file for Gauche.
Say (require "slib") and you can use slib.
* src/string.c (count_length): fixed a bug that didn't recognize
an incomplete character at the end of a string.
2001-05-20 Shiro Kawai <shiro@acm.org>
* release 0.3.11
* src/port.c, src/gauche/portmacros.h : added code to input string
port to handle the case that rest bytes consist an incomplete
character.
* src/string.c : disallow string-ref on an incomplete string.
* test/euc-jp.scm : added tests for incomplete strings
2001-05-19 Shiro Kawai <shiro@acm.org>
* src/string.c : revised for handling of incomplete string.
* src/symbol.c (Scm_Intern): make symbol name immutable string.
* src/* : renamed <something>CStr, <something>Cstr and <something>CSTR
to <something>z or <something>Z, for consistency. This made
incompatible change in API.
2001-05-18 Shiro Kawai <shiro@acm.org>
* src/string.c, src/gauche.h and other files : changed ScmString
structure to handle incomplete and/or immutable string in
better way. API of string construction is changed in incompatible
way.
2001-05-17 Shiro Kawai <shiro@acm.org>
* src/bignum.c, src/extlib.stub, test/number.scm : finished logand
and logior
2001-05-16 Shiro Kawai <shiro@acm.org>
* src/number.c, src/extlib.stub : added lognot.
2001-05-15 Shiro Kawai <shiro@acm.org>
* src/extlib.stub: removed some subrs that are defined somewhere
else.
* doc/gauche-ref.texi: start writing this.
2001-05-14 Shiro Kawai <shiro@acm.org>
* src/gauche.h, src/gauche/portmacros.h, src/port.c : separated
port macros (SCM_GETC, etc.) to a subheader. added fill function
pointer to the input string port, so that it can be a general
buffered input port.
* src/bignum.c, src/number.c : start adding logical operations.
finished ash.
* src/number.c (exact_expt): fixed a bug in the shortcut of -1^y.
2001-05-12 Shiro Kawai <shiro@acm.org>
* release 0.3.10
* src/number.c (Scm_Expt): properly handles fraction power of
negative real numbers, and exact powers.
* src/vm.c: added Scm_Values2 and Scm_Values3, C-interfaces to
return multiple values.
* src/stdlib.stub, lib/gauche/numerical.scm: made
%complex->real/imag to return multiple values, avoiding consing.
2001-05-11 Shiro Kawai <shiro@acm.org>
* lib/gauche/numerical.scm : fixed more numeric instability of
acos, asinh, acosh. Finally Gauche can plot the fascinating
pictures shown in the "Numbers" section of "Common Lisp, the
Language, 2nd edition".
2001-05-10 Shiro Kawai <shiro@acm.org>
* lib/gauche/numeric.c: fixed asin and acos to avoid numeric
instabilities.
* src/number.c: fixed wrong definition of SCM_IS_NAN when
HAVE_ISNAN is not defined.
* src/stdlib.stub: allow to pass 0.0 to %log, letting the system
log() to yield NaN.
2001-05-09 Shiro Kawai <shiro@acm.org>
* lib/gauche/numeric.c: fixed some bugs in the definition of
complex trigonometric functions.
* src/number.c (Scm_NumberToString): prints #<nan> and #<inf>.
extended # of digits of flonum to 20 so that it is properly
read back. prints small int with arbitrary radix.
* src/number.c (Scm_Max): still had a bug in treating inexactness.
2001-05-08 Shiro Kawai <shiro@acm.org>
* src/gauche-init.scm: fixed a bug in the definition of atan.
* src/stdlib.stub: fixed a bug in =, which made it fail for
complex numbers.
* src/vm.c (run_loop): fixed a bug that caused SEGV when the error
handler tries to obtain stack trace. fixed a bug in NUMEQ2
instruction.
* src/stdlib.stub (symbol->string): fixed a bug that didn't check
if arg is symbol (Thanks to Yuuichi Teranishi).
2001-05-07 Shiro Kawai <shiro@acm.org>
* test/cmpplane.scm : a port of the program shown in CLtL2 to plot
complex functions in complex plane. it seems that this reveals
a serious bug in VM...
2001-05-06 Shiro Kawai <shiro@acm.org>
* src/number.c (read_complex) : fixed a bug that read +0i and -0i
as a complex number, instead of flonum 0.0.
* src/hash.c, src/extlib.stub, lib/srfi-13/hash.scm: added %hash-string
which exposes internal string hash function, and implemented
string-hash (SRFI-13) on top of it.
2001-05-05 Shiro Kawai <shiro@acm.org>
* src/number.c : fixed number reader to recognize x+0i as x (real
number). added Scm_OddP to deal with inexact numbers. re-added
Scm_NumEq, for Scm_NumCmp doesn't handle complex numbers.
Moved most of transcendental functions to stdlib.stub.
* src/stdlib.stub : fixed several domain bugs in numeric predicates.
Implemented most of real transcendental functions here.
* src/gauche-init.scm, lib/gauche/numerical.scm : Implemented
transcendental functions for complex domain.
* src/boolean.c : use Scm_NumEq instead of Scm_NumCmp.
* test/number.scm : added tests for numeric predicates, complex
readers, and arithmetic functions.
2001-05-04 Shiro Kawai <shiro@acm.org>
* src/number.c : fixed Scm_Max and Scm_Min to treat exactness
correctly (at least one arg is inexact, result is always inexact).
* src/string.c : Scm_ListToString and Scm_MakeStringFromList were
using the same routines. Integrated them to one function.
2001-05-03 Shiro Kawai <shiro@acm.org>
* release 0.3.9
* INSTALL: added explanation about --enable-multibyte option.
* test/euc-jp.scm: added Japanese tests of string-library.
2001-05-02 Shiro Kawai <shiro@acm.org>
* lib/srfi-13/*.scm : fixed number of bugs
* src/string.c, src/extlib.stub : removed redundant 'end' parameter
from Scm_StringSubstitute and string-substitute!
* test/srfi.scm : finished tests for SRFI-13
2001-05-01 Shiro Kawai <shiro@acm.org>
* test/string.scm : added more tests for builtin string ops
* test/srfi.scm : start adding SRFI-13 functions
* lib/srfi-13/*.scm : fixing bugs
2001-04-30 Shiro Kawai <shiro@acm.org>
* src/gauche.h, src/string.c, src/extlib.stub: added 'grammer'
argument to Scm_StringJoin and string-join, so that it will be
compatible to SRFI-13.
* lib/srfi-13/*.scm: added some more srfi-13 stuff.
2001-04-26 Shiro Kawai <shiro@acm.org>
* src/srfi-13/*: added some more.
* src/string.c, src/gauche.h, src/extlib.stub: added string-pointer
object. removed StringTake stuff which are moved to srfi-13.
* test/string.scm, test/euc-jp.scm: added test for string-pointer
object.
* src/gauche/char_euc_jp.h, src/gauche/char_utf_8.h: improved
CHAR_BACKWARD macros.
2001-04-25 Shiro Kawai <shiro@acm.org>
* configure.in, src/gauche/config.h.in, src/gauche/char_*.h: added
--enable-multibyte=ENCODING option so that the user can choose
native encoding system.
* many files: changed SCM_STR_{GET|PUT}C to SCM_CHAR_{GET|PUT} for
consistency.
* src/string.c : start adding StringPointer object.
2001-04-24 Shiro Kawai <shiro@acm.org>
* lib/srfi-14/query.scm, lib/srfi-14/set.scm: splitted srfi-14.
2001-04-23 Shiro Kawai <shiro@acm.org>
* lib/srfi-13/generator.scm, lib/srfi-13/pred.scm,
lib/srfi-13/selector.scm: added some srfi-13 functions.
2001-04-22 Shiro Kawai <shiro@acm.org>
* release 0.3.8
* lib/srfi-13.scm: began to implement this.
* src/string.c, src/stdlib.stub: modified string-fill!, string->list
and string-copy to take optional start/end arguments as in SRFI-13.
* src/gauche-init.scm, lib/gauche/numerical.scm: implemented some
R5RS numerical functions (e.g. gcd and lcm) in Scheme, and set
autoload for it.
* src/bignum.c: further debugging for the infrequent path of the
division code.
2001-04-21 Shiro Kawai <shiro@acm.org>
* src/bignum.c, src/number.c, test/number.scm: fixed integer
division/remainer/modulo routines.
* src/Makefile.in: added test/number.scm for test targets.
2001-04-19 Shiro Kawai <shiro@acm.org>
* release 0.3.7
* src/read.c (read_charset): added #[...] extension for literal
charset syntax.
* src/char.c: adapted print syntax to the literal charset syntax.
added charset reading function (Scm_CharSetRead).
added predefined charsets.
* src/extlib.stub, lib/srfi-14.scm: adapted predefined charset.
* src/regexp.c: added \s, \S, \w, \W, \d and \D character
classes. Added stack boundary check to protect from too deep
recursive calls.
* configure.in, gc/mach_dep.c: applied a patch from Shigenobu
Kimura (skimu@ti.com) in order to compile under NetBSD.
2001-04-18 Shiro Kawai <shiro@acm.org>
* test/number.scm: added.
* src/vm.c: fixed a bug that related to NUMADDI, NUMSUBI.
* src/number.c, src/bignum.c: fixed number of bugs related to
bignum reader and bignum addition/subtraction.
2001-04-17 Shiro Kawai <shiro@acm.org>
* release 0.3.6
* src/bignum.c: added Scm_BignumDivSI, and a conversion routine
from bignum to string; not debugged well.
* src/number.c (read_complex): fixed a bug that caused segfault.
* src/regexp.c: correctly recognize ']' at the beginning of the
character range.
2001-04-16 Shiro Kawai <shiro@acm.org>
* src/regexp.c: added BOL/EOL anchors (^ and $). Fixed some bugs
in character range operator.
* test/regexp.scm: more tests.
2001-04-15 Shiro Kawai <shiro@acm.org>
* release 0.3.5
* src/read.c: added #/.../ extension to embed literal regexp.
* src/regexp.c: the first version of regexp starts working.
2001-04-14 Shiro Kawai <shiro@acm.org>
* ext/uvector/*: finished the first version of uvector module.
* src/read.c (Scm_Read): added a hook function for srfi-4 extended
syntax when uvector module is loaded.
* src/load.c (Scm_Load): added a second parameter that specifies
whether an error should be signalled when the file is not found.
* ext/example/*.in: for "in-place" configuration, automatically
give appropriate -I option to gosh.
* ext/Makefile: added uvector
2001-04-12 Shiro Kawai <shiro@acm.org>
* release 0.3.4
* src/regexp.c: started to write this one.
2001-04-09 Shiro Kawai <shiro@acm.org>
* src/list.c, src/extlib.c, lib/srfi-1.scm: added %assoc-delete[!]
and rewrite assoc-delete[!] to use them if possible.
2001-04-08 Shiro Kawai <shiro@acm.org>
* src/compile.c (compile_body): body of "begin" is correctly spliced
into it's surrounding body.
2001-04-07 Shiro Kawai <shiro@acm.org>
* release 0.3.3
* lib/Makefile.in: oops, forgot to install with.scm
* test/srfi.scm: more tests for srfi-1 functions.
2001-04-06 Shiro Kawai <shiro@acm.org>
* release 0.3.2
* src/gauche-init.scm: moved some functions into library, and
define autoload for them.
* src/char.c, src/extlib.stub: added gauche-char-encoding
* src/vm.c: support multi-value continuation. fixed a bug for
multiple value handling.
* test/srfi.scm: added tests for srfi-1 functions.
2001-04-05 Shiro Kawai <shiro@acm.org>
* release 0.3.1
* lib/srfi-1.scm, lib/srfi-1/*: splitted srfi-1.scm into a bunch of
small files that will be autoloaded on demand.
* src/list.c, src/extlib.stub: added %delete[!], %delete-duplicates[!]
* src/load.c: use stat() instead of access() to check existence of
the file, in order to rule out a directory with the same name.
2001-04-04 Shiro Kawai <shiro@acm.org>
* release 0.3
* src/*.[ch]: changed object write protocol. Object writers receive
ScmWriteContext that encapsulates various information instead of
an simple interger. Further enhancement will be done, without
breaking the protocol.
* lib/srfi-14.scm, src/char.c: finished working version of char-set
srfi (although the UCS support is limited).
2001-04-03 Shiro Kawai <shiro@acm.org>
* release 0.2.20:
* src/char.c, src/extlib.stub: added more charset stuff.
* src/syslib.stub (sys-tmpnam): use mkstemp() instead of tmpnam()
if possible.
2001-04-02 Shiro Kawai <shiro@acm.org>
* release 0.2.19:
* gauche/serializer.scm, gauche/serializer/aserializer.scm: ports
from the modules written for STk. This is an experimental code
and its API may change later.
* test/object.scm: more test for metaclass.
* src/class.c: fixed a bug to set a appropriate allocator. added
consistency checks in native slot setters.
* src/vm.c (run_loop): fixed a bug that didn't adjust argument
frame size upon calling a method.
2001-04-01 Shiro Kawai <shiro@acm.org>
* release 0.2.18
* lib/gauche/object.scm: finishing metaclass stuff (not well tested
yet).
* src/char.c: start adding character set stuff.
* src/boolean.c (Scm_EqualP): added a hook for class compare routine.
* lib/gauche/object.scm, src/vm.c: generic function application
metaobject protocol implemented (not tested, though).
* src/moplib.stub: added %make-next-method
* src/list.c: added Scm_ListToArray.
* src/compare.c, src/extlib.stub: added sorting-related routines
and Scheme functions sort and sort!.
* src/number.c (Scm_NumCmp): fixed a bug that didn't work properly
for flonums.
2001-03-31 Shiro Kawai <shiro@acm.org>
* release 0.2.17
* src/class.c: implement default method of compute-applicable-methods
and method-more-specific?
* src/string.c, src/stdlib.stub: consolidated string comparison
routines to Scm_StringCmp and Scm_StringCiCmp.
* src/number.c, src/stdlib.stub, src/vm.c: consolidated number
comparison routines to a single function, Scm_NumCmp.
* lib/srfi-17.scm, lib/gauche/object.scm: srfi-17 (generalized set!)
is now a part of Gauche module. No need to say "(use srfi-17)"
anymore.
* src/load.c: allow filename without default suffix.
* lib/rfc/base64.scm: added. Base64 encode/decode routine.
* src/gauche.h: fixed a bug in SCM_GETB.
* src/stdlib.stub, src/vm.c, src/gauche/vminsn.h : inline
read-char and write-char.
* src/genstub (emit-inliner-header): fixed a bug in the case of
optional arg. Start using the object system.
2001-03-30 Shiro Kawai <shiro@acm.org>
* release 0.2.16
* src/vm.c, src/compile.c, src/gauche/vminsn.h, src/stdlib.stub:
added SCM_VM_LREF1[0-5] instructions. inline memq, assq, assv.
* src/extlib.stub: added read-byte
* src/symbol.c: escape illegal charcters in a symbol when wrote.
* src/class.c: added slot-bound? and slot-bound-using-class?
* src/compile.c: fixed a bug that didn't compile SCM_VM_LSET[0-5]
properly.
* lib/gauche/object.scm: added slot-exists? and
slot-exists-using-class?
2001-03-29 Shiro Kawai <shiro@acm.org>
* release 0.2.15
* src/*.c: removed "equal" protocol from class definition. clean up
builtin class definition macros.
* src/class.c, src/write.c: moved write-object stuff from class.c
to write.c
* lib/gauche/process.scm: added. mostly STk-compatible process
module, but implemented as an object.
* src/system.c, src/syslib.stub: added Scm_SysExec, that calls
execvp() with taking care of file discriptors. Changed sys-exec
accordingly.
2001-03-28 Shiro Kawai <shiro@acm.org>
* release 0.2.14
* src/class.c: added generic function write-object.
* src/error.c, src/vm.c, src/gauche/vm.h: added vm->errorFlags,
and use SCM_ERROR_BEING_HANDLED flag to avoid inifinite loop
of calling error function.
2001-03-27 Shiro Kawai <shiro@acm.org>
* release 0.2.13
* src/vm.c, src/compile.c: finally deals with let-family, do and
receive properly tail recursive way.
consolidate compiler flags.
* src/main.c: added -fno-source-info option. it disables inserting
debug information into the final code, and improves performance
considerably.
* lib/gauche/vm/disasm.scm: more reasonable output format.
* lib/gauche/object.scm: added class-slot-ref and class-slot-set!
2001-03-26 Shiro Kawai <shiro@acm.org>
* release 0.2.12
* lib/gauche/object.scm (compute-get-n-set): implemented class,
each-subclass and virtual slot allocation.
* src/class.c: if a slot accessor returns UNDEFINED, regard it
as an unbound slot and call slot-missing. Necessary for virtual
slots to tell the system that slot is unbound.
* src/class.c (method_more_specific): fixed a bug.
* src/class.c (Scm_AddMethod): check for method redefinition of
the same signature.
* src/extlib.stub: added undefined and undefined? to treat undefined
value explicitly in Scheme.
* src/vm.c: fixed a bug with inlined slot-ref and slot-set!, that
broke VM stack when Scm_VMApply was called internally.
2001-03-25 Shiro Kawai <shiro@acm.org>
* release 0.2.11
* lib/gauche/object.scm: support :getter, :setter and :accessor
slot options.
* src/class.c: implemented SortMethod.
* src/vm.c, src/moplib.stub: made slot-ref and slot-set! inlinable.
* src/vm.c (ADJUST_ARGUMENT_FRAME): fixed a bug that didn't saved
VM regs before calling Scm_Error.
2001-03-24 Shiro Kawai <shiro@acm.org>
* release 0.2.10
* test/object.scm: test file for object system.
* src/moplib.stub: added %ensure-generic-function.
* src/class.c: finished slot initialization protocol. implemented
code to deal with Scheme-defined slots.
* src/class.c (Scm_MakeBaseGeneric): added for C code to create
a generic fucntion.
* src/gauche-init.scm: load object system as well.
* src/main.c: adapted to the changes of load.c and core.c.
redesigned command-line options.
* src/load.c: current dir is not added to the load-path by default.
it's also up to the application.
* src/core.c (Scm_Init): it no longer loads initfile. loading
initfile is up to the application.
* src/list.c: Scm_Delete added.
2001-03-23 Shiro Kawai <shiro@acm.org>
* release 0.2.9
* lib/*: reorganized library structure. gauche-specific stuff
go into gauche/ subdirectory, and can be used by
"(use gauche.something)".
* src/class.c, src/gauche/class.h: changed ScmClassAccessor to
ScmSlotAccessor and made it have more information for slot
initialization and access. Basic features such as defining
class in Scheme, instancing it, and accessing slots, start
working---a lot has to be done for completeness.
* src/compile.c (compile_qq_list): fixed a bug that messed up
the stack by quasiquoted forms with unquote and unquote-splicing
intertwined.
2001-03-21 Shiro Kawai <shiro@acm.org>
* release 0.2.8
* src/class.c, lib/object.scm: (initialize <method> <list>) is
finished. (make <class> . initargs) works. define-generic
and define-method written. still working on slot construction
in the class initializer.
* src/macro.c: fixed a bug to treat dotted pattern.
* release 0.2.7
* src/gauche.h, src/class.c, src/moplib.stub: finished protocol
to define generic functions and methods only in C. removed some
stub functions from moplib.stub that are implemented genuine
generic functions / methods.
* src/vm.c: integration of method invocation.
2001-03-19 Shiro Kawai <shiro@acm.org>
* release 0.2.6
* src/gauche.h, src/proc.c, src/class.c: changed procedure
structure. there's no longer separate classes for closure and
subr; they're <procuedure>. "type" field in ScmProcedure structure
discriminates closures, subrs, and other applicable metaobjects.
* src/vm.c: method dispatching code is embedded in VM loop. Not
quite working, but it's on the way.
* src/gauche-init.scm: added code to load ~/.gaucherc if exists.
* src/list.c: added Scm_ArrayToList.
* src/vector.c: rewrote Scm_VectorToList using Scm_ArrayToList.
* src/system.c (Scm_NormalizePathname): fix bug in expanding "~".
2001-03-18 Shiro Kawai <shiro@acm.org>
* release 0.2.5
* src/gauche.h, src/proc.c: applicable objects (including subrs
and closures) are marked so in its class structure. SCM_PROCEDUREP
is changed accordingly.
* src/class.c, src/moplib.stub: further code for mop support.
* src/vm.c, src/compile.c, src/gauche/vminsn.h: optimization by
adding shortcut operation of LREF/LSET.
2001-03-17 Shiro Kawai <shiro@acm.org>
* doc/Makefile: added.
* src/gauche.h, src/gauche/class.h: ScmGeneric and ScmMethod
is now inherits ScmProcedure, for they share the common part
as applicable objects.
* src/vm.c: a bit of optimization.
2001-03-16 Shiro Kawai <shiro@acm.org>
* release 0.2.4
* src/*: restructured defining scheme of builtin classes. Macro
SCM_DEFINE_BUILTIN_CLASS is introduced instead of SCM_DEFCLASS.
Now builtin class requires to be initialized by
Scm_InitBuiltinClass.
* src/string.c, src/extlib.c: added string-contains (srfi-13).
* src/symbol.c, src/extlib.c: added apropos.
* src/hash.c: fixed bug in string hash function. added
hash-table-stat.
2001-03-15 Shiro Kawai <shiro@acm.org>
* release 0.2.3
* src/class.c, src/gauche/class.h, src/moplib.stub, lib/object.scm:
gradually developing class allocation protocol and slot access
protocol.
* src/repl.c: fixed a bug that didn't let repl exit when EOF read.
2001-03-14 Shiro Kawai <shiro@acm.org>
* release 0.2.2
* COPYING: clearify the copyright and distributing condition.
* src/class.c, src/moplib.stub: added some OO stuff. not quite
working.
* src/hash.c, src/extlib.stub: added Scm_HashTableKeys and
Scm_HashTableValues. hash-table-keys and hash-table-values
in Scheme.
* src/main.c: expose argv[0] to Scheme as *program-name*.
* configure.in, src/system.c, src/syslib.stub: include time.h and
sys/time.h, depending on the system configuration.
2001-03-13 Shiro Kawai <shiro@acm.org>
* release 0.2.1
* src/gauche.h, src/class.c: further designing. not much code yet.
* configure.in: made to work on sparc-sun-solaris2.6
* ext/example/Makefile.in: install rule was broken. fixed.
2001-03-12 Shiro Kawai <shiro@acm.org>
* release 0.2
* src/class.c: start implementing core protocol of metaobjects.
* ext/example: fixed configure.in and Makefile.in to handle
installation process as well.
* src/syslib.stub: added a part of signal stuff and exec().
2001-03-11 Shiro Kawai <shiro@acm.org>
* release 0.1.8
* src/srfi-2.scm: rewrote completely using define-syntax.
* src/macro.c (compile_define_macro): fixed a bug that called
Scm_MakeClosure with env argument pointing to VM stack. The env
should be saved to the heap.
* src/genstub, src/syslib.stub: added define-type stub directive,
which allows stub files to include type parameters.
* src/syslib.stub: added interface for setlocale and localeconv
by Yuuki Takahashi (t.yuuki@mbc.nifty.com).
* src/port.c, src/syslib.stub: complete procedural port protocol.
added "port over file descriptor" as a class of procedural port,
and implement sys-pipe using it.
* src/port.c, src/extlib.stub: Added read-line.
2001-03-10 Shiro Kawai <shiro@acm.org>
* release 0.1.7
* src/genstub: Now the stub generator runs under gosh itself; no need
for external scheme system.
* src/stdlib.stub (integer?): fixed bug that caused an error when
non-number was given.
* src/compile.c (compile_int): fixed a bug that didn't recognize
syntactic binding inserted in different module.
* src/main.c: invoked as a script, command line arguments are
available in the variable *argv*.
* src/io.c, src/extlib.stub: with-{output-to|input-from}-{port|string}
* lib/srfi-17.scm: added srfi-17, generalized set!
* test/srfi.scm: test file for srfi's. not completed yet.
2001-03-09 Shiro Kawai <shiro@acm.org>
* release 0.1.6
* configure.in etc.: revised configuration process. fixed protocol
of build, test and call extension modules.
* ext/example: example of dynamic loadable extension.
* src/port.c: implement procedural port protocol.
* src/load.c: looks environment variable GAUCHE_LOAD_PATH for
initial *load-path* (in addition to the system default)
* src/gauche-init.scm: added USE macro, which combines function of
require and import. Changed library and test files accordingly.
* src/genstub: added define-symbol directive to pre-create symbols.
2001-03-08 Shiro Kawai <shiro@acm.org>
* release 0.1.5
* configure.in, src/Makefile.in: start putting configuration stuff
for dynamic linking. Far from complete yet.
* src/genstub, src/core.c: initialization function generated by
the stub generator now takes a module as an arg.
* src/load.c, src/extlib.stub, src/gauche-init.scm: require, provide
and provided? are supported in C level. Require and add-load-path
are processed at compile time.
* src/syslib.stub: added sys/time.h related system interface functions
by Yuuki Takahashi (t.yuuki@mbc.nifty.com).
* src/vm.c (user_eval_inner): didn't restore VM registers properly;
fixed.
* lib/srfi-11.scm: srfi-11 support added.
2001-03-07 Shiro Kawai <shiro@acm.org>
* release 0.1.4
* configure.in: changed installation directory of architecture
dependent files. Compiled DSO files should go under exec_prefix,
while Scheme files go under prefix.
* src/port.c: line count starts from 1.
* src/gauche/config.h.in, configure.in: added check for members
of struct group and struct passwd.
* src/system.c, src/syslib.stub: complete group and password interface.
added stat interface. added times interface. added class
definitions for time_t and struct tm.
added crypt interface by Yuuki Takahashi (t.yuuki@mbc.nifty.com).
* src/load.c: changed *load-filename* to *load-port*, since it's more
general. implemented *load-history*.
2001-03-06 Shiro Kawai <shiro@acm.org>
* release 0.1.3
* various files: clean up the testing and installation scheme. Now
the architecture dependent files go to the directory designated
by the architecture name. Add INSTALL file to describe the process
shortly. See lib/tester/tester.scm for testing method.
* src/load.c: dynamic loading now uses *dynamic-load-path* instead of
*load-path*. When add-load-path is used, it tries to find an
architecture dependent counterparts of the specified directory and
add it to *dynamic-load-path*.
* lib/japanize-euc.scm: for fun.
* src/system.c, src/syslib.stub: Add getpwuid and getpwnam interface
provided by Yuuki Takahashi (t.yuuki@mbc.nifty.com).
* src/syslib.stub: Add convenient routine to convert
between gid/pid and group/user name.
* configure.in, src/syslib.stub: added check for existence of symlink.
2001-03-05 Shiro Kawai <shiro@acm.org>
* release 0.1.2
* src/macro.c, src/gauche-init.scm: define-macro and define-syntax
is moved from gauche-init.scm into macro.c, since global syntactic
binding should be visible at compile time.
* src/load.c: added dynamic handler to restore the current module,
and properly close the port.
* src/vm.c (Scm_VMThrowExcpeption): throwing fatal exception shouldn't
return! Fixed.
* configure.in, src/number.c, src/gauche/config.h.in: applied a patch
from Yuuki Takahashi (t.yuuki@mbc.nifty.com) to check existence
of trunc() and rint().
2001-03-04 Shiro Kawai <shiro@acm.org>
* release 0.1.1
* src/module.c, src/compile.c: implemented module selection
mechanism. Module binding is resolved during compile time,
so the Scheme interface such as with-module, select-module and
current-module are implemented as a built-in syntax.
* src/core.c (Scm_Init): initialize builtin functions within
appropriate modules.
* src/boolean.c etc.: equivalent preicate C API now returns C boolean
instead of Scheme boolean; easier for C programs.
* src/list.c: added topological sort function and some more list
manipulaton functions, generally useful from C.
2001-03-03 Shiro Kawai <shiro@acm.org>
* release 0.1: almost covered R5RS
* src/compile.c: fixed lookup_env to lookup identifiers with
local environment. fixed a problem in nested quasiquotes.
* src/macro.c: implemented let-syntax and letrec-syntax. make
vector pattern and template work correctly.
* src/macrotest.c: more tests
* src/boolean.c (Scm_EqualP): fixed a bug.
* src/write.c (write_internal): fixed a bug which didn't print
a character in "display" mode.
* src/symbol.c (Scm_Intern): fixed a bug which inserted given string
into obtable without copying.
* src/number.c: revised string->number algorithm
2001-03-02 Shiro Kawai <shiro@acm.org>
* release 0.0.20
* src/macro.c: fixed problem with nested repeat patterns.
* test/macrotest.scm: added more tests to cover various cases.
2001-02-28 Shiro Kawai <shiro@acm.org>
* release 0.0.19
* src/macro.c: fixed to handle templates like (?a ... ?b ...)
correctly.
* lib/srfi-0.scm: srfi-0 added.
2001-02-27 Shiro Kawai <shiro@acm.org>
* src/extlib.stub: added some nonstandard procedures (identifier?,
identifier->symbol, flush)
* lib/test.scm: added to support simple self-testing.
* test/macrotest.scm: more tests.
2001-02-26 Shiro Kawai <shiro@acm.org>
* release 0.0.18
* src/macro.c: almost finished implementing syntax-rules. not tested
well yet.
* src/vm.c: added immediate integer arithmetic instructions
(NUMADDI and NUMSUBI)
* src/genstub, src/stdlib.stub: experimentally added a feature
to write arbitrary inliner function in C. Inliner functions
for immediate integer addition/subtraction is added to stdlib.stub.
2001-02-23 Shiro Kawai <shiro@acm.org>
* release 0.0.17
* src/macro.c, src/gauche/macro.h: pattern language compiler and
matcher test code.
2001-02-21 Shiro Kawai <shiro@acm.org>
* release 0.0.16
* src/macro.c, src/compile.c: more code for r5rs macro system (not
finished yet)
* src/vm.c: fix error message of "unbound variables" to show
symbols instead of identifiers.
* src/list.c, src/extlib.stub: added acons
2001-02-20 Shiro Kawai <shiro@acm.org>
* release 0.0.15
* src/compile.c, src/gauche/vm.h: changed the compile-time
environment structure so that it can handle locally defined macros.
ScmIdentifier object is introduced to realize hygienic macros.
* src/vm.c: changed to use ScmIdentifier objects for global variable
reference instead of bare symbols. fixed a bug in VALUES_BIND
which messed up argp.
2001-02-19 Shiro Kawai <shiro@acm.org>
* release 0.0.14
* configure.in, src/gauche/config.h.in: start using config.h instead
of long $(DEFS).
* src/load.c, src/gauche-init.scm: autoload feature implemented
* src/compile.c: compile toplevel begin properly. fix bug in
compile_receive to handle an improper list as a binding list.
2001-02-18 Shiro Kawai <shiro@acm.org>
* release 0.0.13
* src/bignum.c, src/number.c: bignum support added (partly)
* src/load.c: dynamic link loader starts working
* ext/uvector/*: uvector extention module added (not working yet)
2001-02-16 Shiro Kawai <shiro@acm.org>
* src/system.c: fix bug in Scm_NormalizePathname for "~user" expansion
* src/proc.c: added Scm_NullProc.
* src/vm.c: added Scm_VMDynamicWindC, a C-friendly interface of
dynamic-wind.
* src/module.c: Scm_Define returns Gloc object instead of symbol
2001-02-15 Shiro Kawai <shiro@acm.org>
* release 0.0.12
* src/vm.c, src/compile.c: implemented receive and values.
* src/extlib.stub: added string port functions.
* src/load.c: added some code to support dynamic linking
2001-02-14 Shiro Kawai <shiro@acm.org>
* release 0.0.11
* src/vm.c: Fix problem of user_eval_inner. Complete call/cc
implementation. Added multiple values support (not finished yet).
* src/gauche.h, src/gauche/vm.h, src/stdlib.stub, src/comple.c:
Added multiple values support (not finished yet).
* lib/srfi-1.scm: SRFI-1 support added. Not working completely
because of lack of multiple values.
* lib/srfi-2.scm: SRFI-2 support added.
2001-02-13 Shiro Kawai <shiro@acm.org>
* release 0.0.10
* src/vm.c: added REVERSE instruction. added code to support
call/cc (but not working yet---call/cc crashes in the current
version)
* src/system.c, src/syslib.stub: avoid using PATH_MAX
* src/string.c, src/extlib.stub: added string-split
2001-02-12 Shiro Kawai <shiro@acm.org>
* release 0.0.9
* src/file.c: removed. pathname functions are moved to system.c
* src/system.c: added pathname functions (dirname, basename,
normalize-pathname)
2001-02-11 Shiro Kawai <shiro@acm.org>
* sys/string.c: fix to handle the case that c-string's length is
unknown but size is given.
2001-02-10 Shiro Kawai <shiro@acm.org>
* src/genstub: allow &keyword args
* src/system.c, src/syslib.stub: added system interface.
2001-02-09 Shiro Kawai <shiro@acm.org>
* src/gauche/vm.h: fix bug in SCM_PROPAGATE_ERROR
2001-02-08 Shiro Kawai <shiro@acm.org>
* src/vm.c: use label address feature of gcc to dispatch instructions
* src/read.c: allow "#!"-line in the script file
2001-02-06 Shiro Kawai <shiro@acm.org>
* release 0.0.6
* src/string.c: added a few new functions following SRFI-13.
* src/repl.c: the caller can specify the prompt now.
2001-02-05 Shiro Kawai <shiro@acm.org>
* release 0.0.5
* src/core.c, src/main.c, src/gauche-init.scm: now Scm_Init() takes
a name of Scheme file for initialization. gauche-init.scm is
the default one for gosh.
* src/vm.c, src/compile.c: fix compilation of case, and clean up
the code related to compile_if_family.
* src/load.c: added *load-path*
* src/keyword.c: added
2001-02-04 Shiro Kawai <shiro@acm.org>
* release 0.0.4
* src/vm.c: clearify interaction between user-level eval/apply and
exception handlers.
* src/compile.c: added traditional macro system.
* src/class.c, et.al.: code cleanup around statically defined
built-in classes
2001-02-02 Shiro Kawai <shiro@acm.org>
* release 0.0.3
* src/vm.c, src/gauche/vminsn.h, src/stdlib.stub: inline several
numeric operations.
* src/compile.c: fix quasiquote code and clean up.
* make installation procedure clearer.
* src/gauche-config.in: added
2001-02-01 Shiro Kawai <shiro@acm.org>
* release 0.0.2
* src/class.c: added Scm_MakeBuiltinClass.
* src/string.c, extlib.stub: added string-append, string-join
* src/file.c: added
2001-01-31 Shiro Kawai <shiro@acm.org>
* internal release 0.0.1
;; Local Variables:
;; coding: utf-8
;; End: