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 regist 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: