Filewatcher File Search File Search
Content Search
» » » » » libgauche-0.9-0_0.9.1-5+b1_hurd-i386.deb » Content »
pkg://libgauche-0.9-0_0.9.1-5+b1_hurd-i386.deb:1307412/usr/share/doc/libgauche-0.9-0/  info  control  downloads

libgauche-0.9-0 - Gauche runtime shared library…  more info»


2010-12-12  Shiro Kawai  <>

	* release 0.9.1 (repackaging): The gauche-config bug will be
	  huge annoyance, so we repackage 0.9.1.

	* src/ The directory structure change wasn't reflected
	  in gauche-config --pkg{inc|lib}dir.

	* DIST (doc): Needs some tweaking.  Maybe texi2html has changed.
	* doc/ Turned off USE_UNICODE.  Somehow the original
	  code started produce incorrect encoding in the titles only
	  I don't know if this is a correct fix, but it seems working.

2010-12-11  Shiro Kawai  <>

	* release 0.9.1

2010-12-10  Shiro Kawai  <>

	* src/system.c (Scm_SysExec): Honor the directory argument on
	  Windows-native code path as well.

	* src/scmlib.scm: Modify *load-path* to include pre-0.9.1
	  directory structure for the backward compatibility.

	* src/ Create a symlinc from to for the backward compatibility; extensions
	  compiled for 0.9 refers to, and they need to
	  be working after installation of 0.9.1.

	*, */, src/
	  Changed library installation directory from ${datadir}/gauche
	  to ${datadir}/gauche-${ABI_VERSION}.   This is also for the
	  consistency with architecture-dependent libraries.

	* test/scripts.scm: Kludge to make gauche-package work during
	  tests without installed Gauche.

2010-12-09  Shiro Kawai  <>

	* rfc/json.scm: Renamed API procedures for the consistency:
	  ->json to construct-json (cf. rfc.cookie), the base
	  procedures now take a port, and *-string version takes

2010-12-08  Shiro Kawai  <>

	* src/vmcall.c: Detect the attempt to invoke a method directly
	  without using a generic function, and make it an error.

2010-12-07  Shiro Kawai  <>

	* lib/ Install rfc.json.

	* ext/peg/*, ext/, Enabled parser.peg.
	  It is only to expose rfc.json officially.  The API of parser.peg
	  is still unofficial, and it is very likely to be changed before
	  the final version.  Do not directly use it.

2010-12-04  Shiro Kawai  <>

	* test/scripts.scm, test/TEST, test/TEST2: More tests for utility
	  scripts.  It uses extension modules, so moved to TEST2.

	* ext/, ext/,
	  examples/spigot/{,}: Take care of the
	  case when Gauche is installed under pathnames with spaces.

2010-12-03  Shiro Kawai  <>

	*, src/ Reverted -I and -L *not* to quote
	  the pathnames.  Since quote processing is done before parameter
	  substitution, we cannot include quoted pathnames for the output
	  to be used in `command` and $parameter substitutions.  In fact,
	  there's no way to have pathnames with whitespaces in it to be
	  used with `gauche-config -I` magic.   Instead, --incdirs and
	  --archdirs options are added that returns (semi)colon-separated
          list of directories to be used for -I and -L option.
	  `gauche-config -I` and `gauche-config -L` are kept for backward
	* lib/gauche/package/compile.scm: Changed to use --incdirs and
	  --archdirs instead of -I and -L, so that it can handle pathnames
	  with spaces correctly.

2010-12-01  Shiro Kawai  <>

	* libsrc/gauche/collection.scm (call-with-builder): Fixed <tree-map>
	  builder that barfed about :size keyword argument.

2010-11-29  Shiro Kawai  <>

	* src/read.c (read_char): Fixed a bug that recognized character
	  names only when prefix matches, e.g. #\spa.  It wasn't a design
	  to allow arbitrarily abbreviated names.

2010-11-26  Shiro Kawai  <>

	* src/main.c: We don't need event_loop here; it is more natural for
	  Windows script to code event loop within it.

2010-11-25  Shiro Kawai  <>

	* examples/windows/*: Start adding some crude examples for
	  windows-specific scripting.

2010-11-24  Shiro Kawai  <>

	* ext/windows/*, ext/, Added
	  module to provide Windows specific procedures.  Windows Console
	  functions previously defined in gauche.termios are also moved here.
	* ext/termios/termiolib.stub, ext/termios/termios.scm: Moved
	  Windows Conosle functions to ext/windows/console.stub.

2010-11-23  Shiro Kawai  <>

	*, src/ Renamed windows no-console binary
	  to more descriptive gosh-noconsole.exe.  This is something
	  users do not type manually, so long name is ok.

	* src/number.c (Scm_IsInf): Added extra volatile to suppress gcc
	  to be too clever; gcc-4.5.0 on MinGW seems to optimize away
	  the inifinity check without this.  Won't affect to platforms
	  that provides isinf().

	* src/port.c (Scm__SetupPortsForWindows): Added a hack for Windows
	  no-console application.  If Scheme program attempts to write to
	  stdout or stderr, a new console is allocated and the output will
	  be redirected to it.  API should be reconsidered to abstract away
	* src/main.c (main): Refactored away some platform-specific stuff
	  from main().

	* src/gauche/win-compat.h: Explicitly support Windows 2000 or later
	  by defining WINVER before including windows.h.

	* src/extlib.stub (standard-*-port), src/port.c (Scm_SetStd*):
	  Allow standard-input-port etc to be altered by the optional

2010-11-22  Shiro Kawai  <>

	* src/ Quote pathnames in -I and -L option.  They may
	  have spaces in them.  Note: For other options that directly returns
	  pathnames, it's up to the caller to properly quote them, since
	  the tool doesn't know who is calling it.

	* winnt/nsis/ Adds $INSTDIR\bin to the PATH on

	* src/main.c (init_console): Adapted to windows non-console mode.
	* src/winmain.c: A kludge to compile non-console binary for windows.
	  On windows, we create gosh.exe and gish.exe, where the former
	  is a console application and the latter is a non-console
	*, src/ Changed accordingly.
	* winnt/nsis/ Install gish.exe as well, and create
	  an association from .scm suffix to gish.exe---so that Scheme
	  script starts with non-console mode by double-clicking.
	* winnt/nsis/Makefile, winnt/README.txt, DIST: Adapted for
	  MinGW+MSYS build.  We no longer need cygwin.  Also allow
	  Gauche-gl to be included in the installer.

2010-11-21  Shiro Kawai  <>

	* src/paths.c (Scm_GetRuntimeDirectory), src/paths.h
	  src/core.c (Scm__RuntimeDirectory), src/gauche.h,
	  src/extlib.stub (%gauche-runtime-directory): A quick hack to
	  expose runtime directory on limited platforms.  Needed to fix
	  gauche.config on windows.  Not for general use.
	* src/ (gauche-config): The gauche-config procedure
	  in gauche.config to replace '@' prefix included in the return
	  value, on Windows.  The return value now matches what you get
	  with the command-line version.

	* lib/gauche/package/util.scm (run): Fixed so that the build
	  commands can be run on Windows (MinGW+MSYS).  Now gauche-package
	  works on it.

2010-11-20  Shiro Kawai  <>

	* libsrc/file/util.scm (console-device): Added.

	* libsrc/gauche/parameter.scm (setter): Added generalized setter
	  for parameters; suggested by KOGURO, Naoki.

	* lib/gauche/process.scm (%setup-iomap): Use sys-tmpdir to decide
	  the location of temporary file when needed.
	* libsrc/file/util.scm (temporary-directory): Also uses sys-tmpdir
	  as the default value.

	* src/system.c (Scm_TmpDir), src/syslib.stub (sys-tmpdir): Added
	  for the consistent treatment of temporary directories across

	* src/system.c (Scm_Mkstemp): Fixed PRNG for tmp file name; the lower
	  bits has low entropy.

	* lib/rfc/http.scm (http-secure-connection-available?): Exported for
	  general use.
	* doc/motutil.texi (rfc.http): Officially document :secure option.

	* ltmain.m4, gc/acinclude.m4, gc/aclocal.m4, gc/libtool.m4: Updated.
	  Note: now it requires autoconf-2.65 or later.

2010-11-19  Shiro Kawai  <>

	* depcomp, compile, config.guess, config.sub, mkinstalldirs,
	  missing, install-sh, aclocal.m4: Updated to catch up to the
	  recent autotools.

	* src/compile.scm (pass2/check-constant-asm): Added constant folding
	  for $asm nodes with ASSQ, ASSV, VEC-REF, VEC-LEN and NEGATE insns.
	  If these weren't inlined to VM instructions, constant expression
	  using these would be precomputed because corresponding SUBRs are
	  constant function.  However, inlining to VM instructions is done
	  at pass1, where constant folding with SUBRs are done in pass2, so
	  the compiler failed to fold constant expressions using these
	  functions.  Eventually we want some means to integrate implementation
	  of SUBRs and optimization of corresponding $asm nodes.

2010-11-12  Shiro Kawai  <>

	* lib/rfc/http.scm: Changed receiver and sender interface to make
	  them simpler and composable.  For receiver we use partial
	  continuation to make it work like coroutine.  The predefined
	  receivers and senders are updated.

	* lib/control/thread-pool.scm (terminate-all!): Make force-timeout
	  keyword arg.  We might add more keyword args to tweak behavior
	  of termination.

2010-11-11  Shiro Kawai  <>

	* lib/gauche/process.scm (run-process): Added support of '<<<',
	  '<&' and '>&' in :redirects argument.  Allow uniform vector
	  for '<<' redirection.

2010-10-15  Shiro Kawai  <>

	* ext/sxml/src/sxpath.scm (sxpath): Reflected sxpath bug fix on
	  namespace alist from upstream.  Fix from teppey.
	* ext/sxml/test.scm: A test added for the above fix.

2010-10-06  Shiro Kawai  <>

	* lib/rfc/ftp.scm (<ftp-error>): Documented but not exported.
	  Fix from Masatake YAMATO.

	* ext/sxml/src/txpath.scm (sxml:parse-function-call): Fix txpath's
	  'contains' operator.  The upstream fix
	  Fix from teppey.

2010-09-18  Shiro Kawai  <>

	* ext/srfi/srfi-19.scm (tm:leap-second-table): Updated to reflect
	  new leap seconds.

2010-09-12  Shiro Kawai  <>

	* lib/dbm/dump, lib/dbm/restore: Added utility scripts.
	* lib/dbm.scm (dbm-type->class): Added a utility procedure to load
	  and use specific dbm at run-time.

2010-09-04  Shiro Kawai  <>

	* src/signal.c (Scm_SetSignalHandler): Represent the status of
	  signal handler that "Gauche does not handle the signal" by
	  #<undef>.  It used to be #f, but it is also used to represent
	  SIG_DFL and caused an unwanted alteration of signal handlers
	  by with-signal-handler.   The original fix is provided by

	* lib/rfc/http.scm: More rubust support of external stunnel handling
	  for https connection.
	* lib/gauche/process.scm (run-process): Generalized I/O redirection
	  handling to allow more flexible redirection, closer to shell.

2010-08-23  Shiro Kawai  <>

	* libsrc/file/util.scm (home-directory): Added support for Windows.
	  (null-device): Added.

2010-08-04  Shiro Kawai  <>

	* lib/rfc/mime.scm (<mime-part>): Fixed typo (Patch from
	  Hayashi Masahiro).
	* lib/rfc/http.scm (http-compose-form-data): Respect content-transfer-
	  encoding keyword argument.  (Patch from Hayashi Masahiro).

2010-08-01  Shiro Kawai  <>

	* lib/gauche/dictionary.scm (call-with-iterator): Implemented
	  minimum collection protocol for bimap.  Need to think more
	  about bulders and other shortcuts, but this one fills the
	  needs for the time being.
	* test/dict.scm: Added bimap collection test.

2010-07-01  Shiro Kawai  <>

	* lib/gauche/cgen/precomp.scm (handle-define, handle-define-macro):
	  Escape strings in C-comment properly.

2010-06-30  Shiro Kawai  <>

	* lib/gauche/numerical.scm (%exact-integer-sqrt): Fixed a bug
	  when the given arg is too large to coerce to double.

2010-06-19  Shiro Kawai  <>

	* src/number.c (Scm_Numerator, Scm_Denominator): Bug fix for
	  inexact arguments.
	  (Scm_Exact, Scm_Inexact, Scm_VMInexact): We're naming
	  Scm_InexactToExact etc.; they are more concise without loss
	  of meaning.  To keep binary compatibility, shorter names are
	  macros during 0.9.x.  In 1.0 we'll switch macros and instances.
	* src/write.c, src/number.c, src/vminsn.scm, src/stdlib.stub,
	  src/extlib.stub: Modified according to the above change.

	* lib/gauche/numerical.scm (div, mod, div0, mod0, div-and-mod)
	  (div0-and-mod0): Added R6RS integer divisions.

2010-06-17  Shiro Kawai  <>

	* lib/gauche/numerical.scm (inexact, exact, real-valued?)
	  (rational-valued?, integer-valued?): Added for R6RS compatibiltiy.

	* src/stdlib.stub (rational?): Exclude +inf.0, -inf.0 and +nan.0 from
	  the set of rational numbers.  These are the only numbers that are
	  real but not rational.

	* lib/gauche/numerical.scm (exact-integer-sqrt): Added.
	  (sqrt): Revised so that it returns exact number if the argument
	  is a square of exact real number.
	* src/autoloads.scm (exact-integer-sqrt): Added.

2010-06-16  Shiro Kawai  <>

	* src/compile.scm (pass2/check-constant-asm): Fold numeric operation
	  $ASMs on constant arguments.

2010-06-08  Shiro Kawai  <>

	* src/write.c (write_ss_rec): Fixed an infinite recursion problem
	  when attempting to print (cdr #1='#1#).

2010-06-07  Shiro Kawai  <>

	* ext/template.DIST: Exclude .git from being included to distribution

2010-05-29  Shiro Kawai  <>

	* libsrc/util/match.scm (gen): For certain patterns, this function
	  can be called exponential times, taking very long for expansion.
	  This fixes exponential expansion time by avoiding calling gen
	  on the same patterns.

2010-05-28  Shiro Kawai  <>

	* lib/rfc/http.scm (http-request): Committing tentative SENDER
	  protocol.  NB: I'm going to try a different protocol,
	  so take this version with a grain of salt.

	* ext/uvector/uvlib.stub.tmpl (uvector-size): Allow start and end
	  optional arguments, for the consistency with write-block.
	  Also documented this function.

2010-05-26  Shiro Kawai  <>

	* lib/rfc/http.scm (http-request): Revised RECEIVER protocol;
	  now it takes the total response size in the third arg.  It allows
	  the retriever to track the progress.

2010-05-23  Shiro Kawai  <>

	* lib/rfc/http.scm (http-request): Changed main API of rfc.http.
	  High-level APIs are consolidated to http-request, instead of
	  having separate calls for each request method, since method
	  is often parameterized.  SINK and FLUSHER arguments to handle
	  response is deprecated and superseded by RECEIVER argument
	  for flexibility.

2010-05-19  Shiro Kawai  <>

	* lib/gauche/parseopt.scm (build-option-parser): Let let-args raise
	  an error of condition type <parseopt-error> for invalid arguments,
	  so that the program can capture this particular type of runtime

2010-05-13  Shiro Kawai  <>

	* src/compile.scm (define-syntax, let-syntax, letrec-syntax)
	  (syntax-rules, pass1/eval-macro-rhs): Generalize syntactic
	  binding as evaluating rhs in compile-time environment.  The
	  syntactic keyword is bound to the resulting macro transformer.
	  This is the first step to open up variations of macro
	  transfomers other than syntax-rules.   Now syntax-rules are
	  implemented as first-class compile-time syntax, and eventually
	  will become just one of ordinary macro transformers.
	  (compile): Enable to take CENV as the second argument.
	  (pass1): Adjusted to expect resolution of local syntactic
	  bindings be #<syntax>.  This happens when let-syntax etc.
	  are used to add aliases, e.g. (let-syntax ((xif if)) (xif ...)).
	* src/macro.c (Scm_CompileSyntaxRules): allow NAME to be #f
	  for it may be so when syntax-rules is used stand-alone.
	* src/intlib.stub (syntax?): Added.  Note: The name syntax? may
	  be renamed, for it is confusing with syntax-case's use of "syntax".

	* src/port.c (Scm_MakePortWithFd): Set seeker if the given fd is
	  seekable.  For example, Scm_SysMkstemp calls this function on
	  an fd associated to a file, so it is natural to be seekable.
	  OTOH, sys-pipe passes pipe fd, which isn't seekable.

	* src/objlib.scm (ref, (setter ref)): Added generic slot reference
	  with fallback, and setter to list, for consistency.
	  Patch from Masatake YAMATO.

2010-05-12  Shiro Kawai  <>

	* ext/net/netaux.scm (make-server-sockets): If the system defaults
	  v6 sockets to be dual-stack (i.e. IPV6_V6ONLY is off by default),
	  the current strategy fails since v6 socket tries to bind both
	  v4 and v6 addresses.  The default is system-dependent, so we
	  adopt a heuristic: First we bind v6 addresses, and then we try
	  v4 ones; if v4 one fails with EADDRINUSE, we just ignore it.

2010-05-11  Shiro Kawai  <>

	* src/vm.c (POP_CONT): fixed a bug that refers wrong pointer.

	* src/port.c (register_buffered_port): Fixed a race condition
	  accessing the active port vector.  Pointed by enami.

	* src/vm.c (user_eval_inner, Scm_VMCallPC):
	  src/intlib.stub (%call/pc):
	  lib/gauche/partcont.scm: Experimentally added partial (delimited)
	  continuation support.  A partial continuation is marked by
	  ep->cstack == NULL.  Its 'root' is cut by %call/pc.  It is
	  executed on the cstack where it is invoked.  When execution of
	  a partial continuation ends, popping continuation frame yields
	  vm->cont == NULL, which caused run_loop() to return to
	  user_eval_inner, which in turn hands the control over the latest
	  continuation delimited by reset().   Note that reset() operator
	  is simply Scm_VMApplyRec0---user_eval_inner implicitly delimits
	  the continuation.   No partial continuation frames should include
	  c stack frames in it.

2010-05-10  Shiro Kawai  <>

	* src/vm.c (user_eval_inner, throw_continuation): Allow execution
	  of "ghost continuations", the continuations whose dynamic extent
	  of C stack is effectively expired.   For example, if a
	  continuation is captured within the callback function from C,
	  and the callback has already returned to C, then the continuation
	  becomes a ghost.  Ghost continuation cannot return to C at its
	  bottom, for it is not allowed in C to return from already expired
	  stack frame.  We used to raise an error when ghost continuation
	  is invoked.  However, the Scheme portion of a ghost continuation
	  is still effective and executable.  This change allows a ghost
	  continuation to be executed on the current C stack.  If the
	  continuation tries to return to C, an error is signalled.

2010-05-04  Shiro Kawai  <>

	* src/char.c (Scm_CharSetComplement): Fixed to handle complement
	  correctly for the cases that the range touches the lower bound,
	  or the range has one-character gap.

2010-05-03  Shiro Kawai  <>

	* ext/util/queue.scm (any-in-queue, every-in-queue): added.

	* lib/gauche/common-macros.scm (unwind-protect): Allow multiple
	  handlers, as in CL.

	* src/module.h (origin, prefix): Added these slots to support
	  wrapper module with prefix.  Modules are not statically allocated,
	  so this shouldn't affect ABI.
	* src/module.c (Scm__MakeWrapperModule): An implicit module inserted
	  to support prefixed symbols.  This obsoletes the change on
	  2009-09-23, using module and prefix pair in the import list.
	  (Scm_FindBinding): Consider prefix from the wrapper module
	  Dropped support of (#<module> . prefix) in the import list.
	  (Scm__InitModulePost): Made module information visible as slots.
	  We should call Scm_InitStatiClassWithMeta in module.c, but
	  that needs to be done after the class system is initialized.
	  Scm__InitModule needs to be called before Scm__InitClass,
	  so we need another initialize function, which is called
	  after Scm__InitClass.
	* src/core.c (Scm_Init), src/class.c (Scm__InitClass): Changed
	* src/compile.scm (process-import): Support :rename.  Rewrote
	  :only and :except support to use wrapper modules.

2010-05-02  Shiro Kawai  <>

	* lib/control/job.scm, lib/control/thread-pool.scm: Added.
	* test/TESTS2,, src/ Set up some tests
	  to be run after ext/* tests.
	* test/control.scm: Added.

	* ext/util/queue.scm (mtqueue-room): Added.

2010-05-01  Shiro Kawai  <>

	* ext/net/test.scm: Fix test failure on ipv6 enabled host.

	* src/gauche-init.scm (use): Allow options that can be passed
	  to import.

	* doc/modgauche.tex (gauche.mop.propagate): Made it officially
	* lib/gauche/mop/propagate.scm: Enable initialization of propagated
	  slot via init-keyword.

2010-04-30  Shiro Kawai  <>

	* src/compile.scm (pass1/define, pass1/lambda): Defines R5RS version
	  and Gauche version of define and lambda separately; Gauche version
	  supports extended formals, R5RS version not.  For those who want
	  vanilla versions for whatever reason, say (extend scheme).

2010-04-25  Shiro Kawai  <>

	* src/compile.scm (pass1/define-inline): Revamp inlining mechanism
	  of lambdas with closed environment.  The new scheme doesn't
	  require separate form such as %inlinable-lambda.  I check in the
	  current state, which works on basic cases but needs more refinement
	  for the practical cases.  This change shouldn't affect the existing
	  valid code (that is, the path to inline lambdas with no closed
	  enviornment isn't changed).
	  Also reverting the change on 2010-03-28 about the packed information
	  of inlinable procedure (the info in $lambda-flag).  With this new
	  scheme we can just use packed IForm; no need to keep extra info.
	* src/intlib.stub (%insert-binding): Allow optional flags.

2010-04-21  Shiro Kawai  <>

	* ext/bcrypt: Change module name from gauche.bcrypt to crypt.bcrypt,
	  for it represents the module better.

2010-04-20  Shiro Kawai  <>

	* src/ Re-adding $(LIBS) to link gauche-config, for
	  it is needed on mingw.

2010-04-19  Shiro Kawai  <>

	*, src/gauche/ Added GNU/kfreebsd and
	  GNU/Hurd support.  Patch from NIIBE Yutaka.

	* lib/gauche/treeutil.scm (tree-map-map, tree-map-for-each): Added.
	* src/autoloads.scm, doc/corelib.texi: Modified accordingly.

	* src/ Fix linking gauche-config; patch from Debian build,
	  by YAEGASHI Takeshi.

	* Support for arm-unknown-linux-gnueabi and
	  arm-unknown-linux-gnulp architecture.  Patch from NIIBE Yutaka.

	* src/number.c (Scm_NumLE, Scm_NumLT, Scm_NumGE, Scm_NumGT):
	  Added these APIs that handles NaN properly.  Scm_NumCmp alone
	  is not suitable to handle comparison involving NaNs.
	* src/number.h: ditto.
	* src/vminsn.scm ($w/numcmp): Use above APIs to handle NaNs.
	* src/stdlib.stub (=, <, <=, >, >=): Use above APIs to handle NaNs.
	* test/number.scm: Added tests of numeric comparison involving NaNs.

	* src/gauche/float.h (SCM_HALF_FLOAT_IS_NAN, SCM_HALF_FLOAT_CMP):
	  Recognizes and handles NaN bitpattern of ScmHalfFloat.
	* src/vector.c (compare_f16vector): ditto.
	* ext/uvector/test.scm: Added tests for uvector comparison.

2010-04-18  Shiro Kawai  <>

	* src/gauche/vector.h (struct ScmVectorRec): The 'size' field
	  must have the same length as ScmObj, otherwise vector literals
	  allocated in ScmObj[] by precompiler doesn't work on big-endian
	  machines.  Patch from Stephen Lewis.

2010-04-13  Shiro Kawai  <>

	* lib/srfi-98.scm, lib/ Added srfi-98 support.
	* src/core.c: Made cond-expand aware of srfi-98, srfi-99.
	* doc/concepts.texi, doc/corelib.texi, doc/modsrfi.texi: srfi-98.

2010-04-11  Shiro Kawai  <>

	* src/compile.scm (dynamic-wind): Fixed a bug that leaves lvar's
	  refcounts wrong after inline transformation.

2010-04-08  Shiro Kawai  <>

	* src/vm.c (save_env): Revised the previous fix to make it
	  clearer, based on the analysis of NIIBE Yutaka.

2010-04-07  Shiro Kawai  <>

	* src/vm.c (save_env): Avoid copying ScmEnvFrame header as an
	  array of ScmObj*.  Doing so apparently violates the strict
	  aliasing rule and results unintended compilation on some
	  architectures (gcc on ia64 confirmed).  Patch contribution
	  from NIIBE Yutaka.

2010-03-30  Shiro Kawai  <>

	* doc/*.texi: Moved 'coding: utf-8' to the end of the file,
	  since texinfo-multiple-files-update seems to blindly assume
	  the first line of a file is a node command.

2010-03-28  Shiro Kawai  <>

	* src/compile.scm (pass1/inlinable-lambda, pass1/expand-inliner etc):
	  Changed inlining info in $LAMBDA node to allow closed lvars
	  plus future extensions, from a simple vector of packed IForm.
	  Changed places that uses info, though currently they only deal
	  with the case that no lvars are closed.
	  This affects the dumped format of precompilation; the old format
	  is still recognized and supported, but will be dropped in the
	  next major release.

2010-03-25  Shiro Kawai  <>

	* lib/gauche/record.scm: Added support of vector-backed pseudo record.
	  The procedure returned by rtd-accessor has a setter if the field
	  is mutable.

2010-03-22  Shiro Kawai  <>

	* libsrc/util/match.scm: Fixed a bug that caused match-let* fail
	  (required identifiers are not defined).

2010-03-09  Shiro Kawai  <>

	* src/compile.scm (iform-copy): Fixed a bug that yielded a wrong
	  optimization when flagged closure is inlined.  Thanks to the
	  Michael Campbell for the detailed report.

2010-02-27  Shiro Kawai  <>

	* lib/www/cgi.scm (get-mime-parts): Fixed a bug that didn't parse
	  option values in content-disposition header are unquoted.

	* ext/threads/threads.scm, ext/threads/
	  Integrated thrlib.stub into threads.scm.

2010-02-24  Shiro Kawai  <>

	* src/gauche/vm.h, src/vm.c, src/gauche/pthread.h, src/gauche/uthread.h:
	  Abstract thread handle type as ScmInternalThread.

2010-02-23  Shiro Kawai  <>

	* src/gauche/win-compat.h (struct timespec), src/system.c (nanosleep):
	  Added nanosleep emulation on Windows.
	* src/syslib.stub (sys-nanosleep): Enable on windows as well.

2010-02-23  Shiro Kawai  <>

	* most sources: Removed $Id...$ from most of the sources.  We have
	  moved away from CVS, so it is no longer relevant.  It may even
	  cause confusion, since it's not updated anymore.  (It is left
	  to the source taken from outside; in which case the line shows
	  which version we've taken from).

	* ext/util/queue.scm (with-mtq-mutex-lock): Made mutex locking
	  cancellation safe.

2010-02-22  Shiro Kawai  <>

	* src/regexp.c (rc1_lex_minmax): Changed to treat re{,M} as re{0,M}
	  in the regexp parser, which is compatible to Oniguruma.
	  This is, strictly speaking, an INCOMPATIBILE CHANGE; the previous
	  version is compatible to Perl, which makes {,M} to match the
	  string literally.  It should be written \{,M} now.

	* lib/gauche/fileutil.scm (make-glob-fs-fold): Fixed a bug in glob
	  that fails if an intermediate directory in the fully-specified
	  path is searchable but unreadable.

	* src/gauche/regexp.h, src/regexp.c: Added 'ast' field in ScmRegexp
	  to save parsed AST.
	* lib/gauche/regexp.scm (regexp-unparse): An utility to reconstruct
	  string representation of regexp from AST.
	* src/extlib.stub, src/scmlib.scm (regexp->string): Changed
	  regexp->string so that if the 'pattern' field of ScmRegexp is
	  #f (i.e. the regexp is directly created from AST), it uses
	  regexp-unparse to reconsturct the string representation.  The
	  constructed string is set to the 'pattern' field so that the
	  subsequent call of regexp->string will use it.
	* src/autoloads.scm: Mark regexp-unparse autoload.

2010-02-21  Shiro Kawai  <>

	* lib/rfc/http.scm (request-response): Exclude keyword arguments
	  for the receiver from request headers.

	* src/scmlib.scm (delete-keywords, delete-keywords!): Added.

2010-02-20  Shiro Kawai  <>

	* src/char.c (charset_print): Fixed char-set writer that violated
	  read/write invariance if the set includes '^' as the first

2010-02-19  Shiro Kawai  <>

	* test/system.scm: Exclude sys-wait test on cygwin, since sigmask
	  doesn't seem to work reliably on cygwin 1.7.

	* switched to utf-8.

2010-02-12  Shiro Kawai  <>

	* src/system.c: Do not treat '\\' as a directory separator on
	  non-windows platforms (On GAUCHE_WINDOWS, we still treat both
	  '/' and '\\' as a separator.)

2010-02-06  Shiro Kawai  <>

	* src/objlib.scm (slot-pop!): Added for the consistency with other
	  *-push!/pop! API pairs.
	* src/treemap.c (core_bound), test/treemap.scm: Fixed a bug that
	  tree-map-pop-min! didn't update num_entries.  Patch from
	  Masatake YAMATO.

2010-02-05  Shiro Kawai  <>

	* doc/*.texi: Switched from euc-jp to utf-8.
	* doc/extract: Changed accordingly.

	* doc/, doc/,
	  doc/ Added these manpages based on the ones
	  provided by Jens Thiele.
	* doc/, doc/ Updated.
	* Changed to process the added manpages.

2010-02-02  Shiro Kawai  <>

	* ext/util/queue.scm (enqueue/wait! etc.): Implemented synchronizing
	* ext/threads/test.scm: Added tests of interacting between threads
	  using mtqueue.
	* doc/modutil.texi: Extended descriptions of util.queue.

2010-01-21  Shiro Kawai  <>

	* libsrc/gauche/collection.scm, lib/gauche/mop/instance-pool.scm:
	  Remove dependency to util.queue; it caused build problem.

	* ext/util/queue.scm, lib/util/queue.scm: Rewrote util.queue
	  partly using C, in order to support thread-safe queue efficiently.
	* ext/util/, ext/, test/util.scm,
	  ext/util/test.scm: Changed accordingly.

2010-01-18  Shiro Kawai  <>

	* lib/rfc/http.scm: Experimentally added https support, using
	  stunnel as an external agent to handle SSL.  Pass :secure #t
	  to http-get etc.  Needs more test to become 'official'.
	  (Current problem: There seems to be no way to get erroneous
	  condition in stunnel side).

2010-01-17  Shiro Kawai  <>

	* src/objlib.scm, lib/gauche/procedure.scm, src/autoloads.scm,
	  lib/gauche/experimental/ref.scm (~): Integrated '~' into the
	  core (currently autoloaded from gauche/procedure.scm).  Now
	  it's officially supported.  'ref*' became an alias of '~', but
	  it's only for the backward compatibility and will fade out.

	* doc/corelib.texi (Combinators): formally account '.$' as an
	  altenative name of 'compose'.

2010-01-16  Shiro Kawai  <>

	* src/compile.scm (transparent?/rec): Treat $GREF of inlinable
	  bindings as referentially trasparent.

2010-01-15  Shiro Kawai  <>

	* src/link-dylib: Adjust install_name according to the ABI version
	  (patch from Tatsuya BIZENN).

	* src/compile.scm (pass1/define-inline, pass1/inlinable-lambda):
	  Factored out the part to save intermediate IForm to $lambda node.
	  This is to prepare for further aggressive inlining.

	* lib/gauche/record.scm: Added srfi-99/srfi-9 compatible record type.
	* src/class.c (Scm__AllocateAndInitializeInstance),
	  src/objlib.scm (%make-record,%make-recordv,%record-ref,%record-set!):
	  Auxiliary internal procedures to support record type efficiently.
	* lib/srfi-9.scm: Just extend gauche.record.

2010-01-10  Shiro Kawai  <>

	* ext/ (GAUCHE_ARCHDIR etc): Reverted not to use
	  gauche-config, for it caused problem on MinGW, on which gauche-config
	  returns a pathname relative to the executable.

2010-01-09  Shiro Kawai  <>

	* doc/coresyn.texi: officially document extended lambda formals, ^,
	  and ^c.

	* src/compile.scm (pass1/extended-lambda): If :optional spec is given
	  but not :key nor :rest, and given arguments exceeds maximum number
	  of optional arguments, signals an error.  It is consistent to
	  SUBR with :optional args, and also to Common Lisp.
	  NB: The error message needs to be improved.  Thinking to change that
	  when we adopt better compilation strategy for optiona arguments.

2010-01-08  Shiro Kawai  <>

	* src/scmlib.scm (let-keywords*): Grace period expires; raises an error
	  if unknown keyword is given (see 2007-01-21).

2010-01-07  Shiro Kawai  <>

	* src/scmlib.scm (let-keywords, let-keywords*): Allow single variable
	  without default value, for the consistency with let-optionals*.

	* lib/gauche/common-macros.scm (^ ^a ...),
	  Moved ^ and ^x macro from experimental to built-in.

	* src/autoloads.scm: Allow multiple symbols in :macro entry, for

2010-01-05  Shiro Kawai  <>

	* libsrc/file/util.scm (temporary-directory): Make this a parameter,
	  for sometimes it is useful to change the temporary directory.

	* src/compile.scm (pass1/open-include-file): Check the platform at
	  run-time instead of compile-time, since compile.scm is likely to be
	  pre-compiled on a machine different from the one actually runs it.

	* src/ Use unique name for temporary file to avoid
	  race condition when make is run in parallel.

2010-01-04  Shiro Kawai  <>

	*, */, src/, src/,
	  src/gauche/ Adopted the new installation directory
	  strcture to keep binary compatibility for the same ABI version.
	  Bumped to 0.9.1_pre1.
	* src/scmlib.scm: Added a temporary workaround to use extension
	  modules compiled for 0.9 to work with 0.9.x series.

	* Gauche.spec: Fix rpm build problem caused by missing micro version.
	  This is peculiar to the new minor version up; remember to revert it
	  upon 0.9.1 release.

2010-01-03  Shiro Kawai  <>

	* ext/bcrypt: Added crypt_blowfish binding.  We chose to include it
	  in the main distribution instead of providing it as an external
	  package, in order to encourage users to use a modern password
	  hashing scheme rather than relying on crypt(3) or rolling their own.

2009-12-30  Shiro Kawai  <>

	* src/compile.scm: (id->bound-gloc): Refactored.
	  (cenv): Added 'source-path' slot to support include.
	  (pass1/body): Factored out the recursive parts as pass1/body-rec.
	  (syntax/include): Added 'include'.

2009-12-29  Shiro Kawai  <>

	* src/scmlib.scm (current-load-path): Added.  It is going to be more
	  reliable and convenient to obtain the path than via current-load-port.

	* src/compile.scm (dynamic-wind): Added builtin inliner for
	  dynamic-wind.  This expansion uses PUSH-HANDLERS and POP-HANDLERS

2009-12-28  Shiro Kawai  <>

	* src/compile.scm (pass2p/precompute-constant): Support the case
	  when the precomputation procedure returns multiple values
	  (for now, we give up optimization if the proc returns more than
	  one value.  will be fixed in future.)

2009-12-22  Shiro Kawai  <>

	* src/vminsn.scm (PUSH-HANDLERS): Fixed: the order of arguments is
	  reversed; "before" comes first (hence in the stack) and "after"
	  follows (hence in VAL0).

2009-12-21  Shiro Kawai  <>

	* src/compile.scm (pass1/call): Expand immediate lambda here, too,
	  for such a form can appear as a result of macro expansion.
	  Elimiating lambda here helps later pass to optimize clsures.

2009-12-16  Shiro Kawai  <>

	* src/vmcall.c: Pass the actual # of args in the stack via VAL0
	  to Scheme-defined procedures/methods.  This info will be used
	  for efficient optional argument handling.

	* src/intlib.stub (gloc-ref, gloc-bound?): Fix a bug that gloc-ref
	  potentially leaks out #<unbound> to the Scheme world.  Now gloc-ref
	  raises an error if it doesn't have a binding.  You can give a
	  fallback value to avoid an error.  Also provides gloc-bound? to
	  check if the gloc has a value.
	* src/compile.scm: Changed accordingly to avoid dereferincing unbound

	* src/compile.scm (pass2p/optimize-call): Added some heuristics
	  to deduce result of built-in predicate from what we know about
	  its argument.
	  (lvar-const-value): Factored out the common usage to get initval
	  of lvar if it is a constant binding.

2009-12-15  Shiro Kawai  <>

	* lib/text/parse.scm: Rewritten to take advantage of the new
	  compiler optimization.
	* libsrc/srfi-13.scm: Avoid creation of closure by %get-char-pred.
	* ext/sxml/, ext/sxml/trans.scm, ext/sxml/adaptor.scm:
	  Make some global bindings constant so that the compiler can perform
	  more optimization.

	* src/gauche.h (ScmProcedure): Added 'constant' bit.  See the
	  comment for the details.
	  (SCM_DEFINE_SUBRX): A new macro to specify 'constant' bit.  This
	  macro is mainly for autogenerated C code.  Other procedure
	  initializer macros are adjusted accordingly.
	* src/proc.c (proc-constant): Added accessor for 'constant' bit.
	* lib/gauche/cgen/stub.scm (define-cproc): Added a support for
	  flag :constant, that turn on the constant bit of SUBR and
	  make the SUBR inlinable.  This allows the compiler to precalculate
	  constant values using buiting procedures.
	* src/stdlib.stub, src/extlib.stub: Added :constant flags to
	  cprocs when applicable.

	* src/compile.scm (pass2p/optimize-call): Enables constant folding
	  involving procedures marked as 'constant'.
	  (pass2, pass2p/$IF, pass2p/optimize-call): If IForm structure
	  is changed significantly during pass2 post, repeat pass2 post again
	  for further optimization.
	  (pass2, compile-p2): Added dump? argument for troubleshooting.
	  (initval-list-cdr): Fixed a bug that creates invalid $LIST node.
	  (%attach-inline-er-transformer): Preserve inliner info attached
	  by define-inline, so that we can set a compiler macro on
	  procedures defined by define-inline.
	  (pp-iform): Include identifier's module info.

	* src/intlib.stub (identifier-module): Removed after all.  Speed is
	  no so critical, so we can use (slot-ref id 'module) instead.

2009-12-14  Shiro Kawai  <>

	* src/scmlib.scm (let-optionals*): Improved not to emit unnecessary
	  code to advance a pointer in the last of optional argument.

	* src/compile.scm (pp-iform): Slightly changed output format for
	  better readability.
	  (pass2/$IF, pass2p/$IF): Moved $if-$it optimization to the pass2p,
	  for it won't affect main pass2 optimization, but it introduces
	  shared node and makes later pass cumbersome.
	  (pass2/$ASM, pass2p/$ASM, pass2/check-constant-asm): Perform
	  $ASM-node constant folding in pass2 main as well.  This benefits
	  other pass2 main optimization.
	  (reset-lvars): Re-adjust lvar reference count after pass2 main,
	  for the pass may prune subtree from IForm.
	  (pass2p/$CALL): Another call optimization.  At this point we know
	  a lot about $CALL node, so we can perform some more optimization.
	  (pass2p/$SEQ): Eliminate dead code if we know it is safe to do so.

	* src/intlib.stub (identifier-module): Added to be used in
	  pass2p/inlinable-gref? in compile.scm.

2009-12-13  Shiro Kawai  <>

	* src/compile.scm (unpack-iform): Recover lvar's initvals after
	  unpacking.  Missing initvals prevented some optimizations.
	  (transparent?): Check circular/shared reference of $LABEL node.
	  (pass2p): Passing labels table to avoid recursing into circular/
	  shared $LABEL node.

	* src/main.c (-fno-post-inline-pass),
	  src/gauche/vm.h (SCM_COMPILE_NO_PASS2POST),
	  src/intlib.stub (vm-compiler-flag-no-pass2-post?),
	  src/compile.scm (pass2): Added a new compiler flag to skip post-pass2
	  optimization, mainly for troubleshooting.

	* src/intlib.stub (vm-compiler-flag-noinline-locals?): Bug fix:
	  Missing 'result' caused this function always return false.

	* src/compile.scm (transparent?): More sophisticated check to see if
	  we can safely move around or eliminate subtree of IForm.
	  (pass2/remove-unused-lvars): If an lvar became unused and its initval
	  is transparent, we eliminate the initval expr (previously we only
	  eliminate if initval is $const or $lambda).
	  (pass2p/$IF): If the test becomes a constant due to prior optimization,
	  expands then or else node directly.
	  (pass2p/$ASM): Partially evaluate some assemblers if we know enough
	  about the arguments.

2009-12-12  Shiro Kawai  <>

	* src/compile.scm (pass2/local-call-embedder): Bug fix: It could
	  generate an embed $call node without inserting $label node in its
	  child's $lambda.  Pass3 assumes there's always a $label node, thus
	  fails in such a case.  This bug has been covered by the another bug
	  fixed below:
	  (pass2/remove-unused-lvars): Bug fix: It didn't decrement lvar ref
	  count when $lref is removed from the inits of the $let.  This didn't
	  cause a malfunction but caused slightly inefficient code, and covered
	  up the aforementioned bug.
	  ($const?, $lref?, $it?): Added for conciseness.
	  (pass2p/$CALL): Do not recurse if the call is marked 'jump, since
	  its body is shared by other call nodes.

	* src/scmlib.scm (every), libsrc/srfi-1.scm: Make 'every' built-in,
	  for it is used in compile.scm now.

	* src/compile.scm (adjust-arglist): Emit ($CONST ()) for the restarg
	  instead of ($LIST).  This allows further constant elimination.
	  (pp-iform): Fix missing close paren in $LIST, $LIST* and $VECTOR
	  branch.  Also replaced ';' by ':' for Emacs-friendliness.
	  (pass2): Introduced extra pass after pass2 to do further optimizations
	  that are made available by closure optimization.
	  When closures are inlined, we have a good chance to partially evaluate
	  the original body, since some of the provided arguments can be

2009-12-11  Shiro Kawai  <>

	* lib/gauche/procedure.scm (make-dispatcher): Attach a compiler macro
	  to case-lambda so that if we know # of args at the call site we
	  can skip dispatcher.

	* src/compile.scm (%attach-inline-er-transformer)
	  src/intlib.scm (%mark-binding-inlinable!),
	  src/scmlib.scm (define-compiler-macro): Added tentative compiler-
	  macro API.  This is still a kind of stub; don't expect it to work
	  universally (esp. it is unlikely to go well with precompilation.)
	* ext/uvector/uvutil.scm: Adjusted TAGvector-ref expander to the
	  above API.

	* src/gauche/gloc.h, src/gloc.c (Scm_GlocInlinableSetter, Scm_GlocMark):
	  Laying out the base to support proper inlining behavior.
	* src/module.c (Scm_MakeBinding): Added support of inlinable bindings.
	* src/compile.scm (pass1/define-inline, pass3/$DEFINE): Ditto.
	  Define-inline will create an inlinable binding.
	* src/vminsn.scm (DEFINE): Support creating inlinable bindings.
	* lib/gauche/cgen/stub.scm (cgen-emit-init, variable-parser-common):
	  Add inlinable flag to the bindings of cprocs inlinable to vm insn.

	* src/intlib.stub (gloc-inlinable?): added.

2009-12-10  Shiro Kawai  <>

	* src/gauche/module.h, src/module.c (Scm_MakeBinding): A generic API
	  to insert global binding.  Eventually it will supersede Scm_Define.

	* src/stdlib.stub (+, *): Fixed these by removing SCM_NUMBERP checks,
	  since they should be handled in Scm_Add and Scm_Mul.  It can be
	  legal to pass non-numbers to them, because of object-+ and object-*
	  hooks.  (This bug haven't surfaced easily, since inlied version of
	  '+' and '*' handles it correctly.)

2009-12-09  Shiro Kawai  <>

	* src/intlib.stub (make-case-lambda-dispatcher): Put the dispatch
	  vector in the procedure info, so that disasm and other introspection
	  routines can dig into the body of the case-lambda.  The format
	  in which the info is stored is tentative and may be changed later.
	* lib/gauche/procedure.scm (disasm): Allow disassembling case-lambda,
	  using the info available by the above change.

2009-12-04  Shiro Kawai  <>

	* src/gauche/bytes_inline.h: Added swap_*_t for the union types
	  commonly used in the swapping operations.
	* ext/binary/binary.c: Changed to use above types.

	* ext/uvector/uvector.c.tmpl, ext/uvector/uvector.h.tmpl,
	  ext/uvector/uvectorP.h, ext/uvector/uvgen.scm,
	  ext/uvector/uvlib.stub.tmpl: Changed uvector-swap-bytes and
	  uvector-swap-bytes! to deal with ARM's mixed endian, by taking
	  optional argument.  Also changed read-block! and write-block to deal
	  with ARM mixed endian, and obey default-endian parameter if endian
	  argument is omitted.

2009-11-30  Shiro Kawai  <>

	* src/gauche/bytes_inline.h, src/binary.c: Factored out byte swapping

	* src/core.c (Scm_Init), src/parameter.c (Scm__InitParameter):
	  Removed InitParameter, since all we need is statically initialize
	  mutex.  This alleviates headache of ordering Scm__Init* routines
	  to satisfy dependencies.

	* ext/binary/binary.c, src/number.c, src/gauche/number.h
	  (Scm_DefaultEndian, Scm_NativeEndian, Scm_SetDefaultEndian):
	  Move the default-endian parameter from to the core, for it will
	  be used in all binary i/o consistently.  binary.c reflects the
	  change below to check ARM_LITTLE_ENDIAN at runtime.
	* ext/binary/binary.h, ext/binary/io.scm: changed accordingly.
	* src/extlib.stub (native-endian): added.

	* src/parameter.c (Scm_ParameterSet): Make it return the previous value,
	  for the consistency to Scheme-level parameter behavior.

2009-11-29  Shiro Kawai  <>

	* src/gauche/float.h: Moved ScmIEEEDouble definition to src/number.c.
	  Since ARM's double endian needs special care, it's no longer
	  casually usable.
	* src/number.c (check_armendian): On ARM, checks double's endian
	  at runtime.
	  (decode_double, Scm__EncodeDouble): Enclose ARM special handling
	  in these.
	  (Scm_DecodeFlonum, Scm_DoubleToHalf): No longer touches ScmIEEEDouble
	* src/bignum.c (Scm_BignumToDouble): No longer touches ScmIEEEDouble
	*, src/gauche/ Comment adjusted to reflect
	  above changes.

2009-11-28  Shiro Kawai  <>

	* ext/sxml/ (SCMCOMPILE): Needs to add "provide" expr
	  in command line, since we removed explicit provides, but autoprovide
	  doesn't work in this particular case.

	* src/gauche.h (SCM_ALIGN8): Constrains some Scheme objects to
	  be aligned in 8-byte boundary using __attribute__.  See the comment
	  for the details.

	* Many files: Removed (provide "...") idioms, for it is no longer
	  necessary with the autoprovide feature.

	* lib/rfc/822.scm (date->rfc822-date): Added the reverse operation
	  of rfc822-date->date for the convenience.

2009-11-25  Shiro Kawai  <>

	* lib/rfc/http.scm (request-response): When server returns status
	  code 204 or 304, we should not try to retrieve the message body,
	  otherwise the function hangs waiting for the body.

2009-11-23  Shiro Kawai  <>

	* lib/gauche/cgen/literal.scm, lib/gauche/cgen/literal-uv.scm:
	  Merged literal-uv.scm into literal.scm.

2009-11-21  Shiro Kawai  <>

	* release 0.9

	* examples/spigot, examples/mqueue-cpp: Updated to use the newer
	  stub forms.

	* lib/gauche/cgen/stub.scm (process-expr-spec, process-call-spec):
	  As a transition from old (expr ...) and (call ...) form, we make
	  these forms check the ::<type> style return-type if the result
	  type is not given in these forms.  We can't obsolete these forms
	  completely, for the new CiSE spec is not yet fixed and it won't
	  cover all cases (esp. C++ support is weak).  So the stub file
	  may still use expr or call form if CiSE can't be used.  However,
	  the stub can now use the new style of return type form, e.g.:
	  (define-cproc foo () ::<return-type> (expr "Some_C_Expr"))
	  instead of the old style:
	  (define-cproc foo () (expr <return-type> "Some_C_Expr"))

	* ext/template.DIST, examples/spigot/DIST, examples/mqueue-cpp/DIST:
	  Exclude .svn subdir from tarball as well as CVS.

	* lib/rfc/http.scm (consider-proxy): Fix host header handling with
	  proxy.  Now the server given to :proxy only used for the connection.
	  The host request header is the destination server, which may
	  be overwritten by :host keyword argument.   Patch for teppey.

2009-11-19  Shiro Kawai  <>

	* src/gauche.h (SCM_CHAR_VALUE): make sure it returns unsigned value.

2009-11-18  Shiro Kawai  <>

	* src/gauche.h: Include gauche/arch.h as it should be.
	* src/main.c (version): Includes the architecture in output.

2009-11-15  Shiro Kawai  <>

	* lib/gauche/fileutil.scm (glob-fold-1): Fixed a bug that caused
	  an error on (glob "**").

2009-11-11  Shiro Kawai  <>

	* lib/rfc/http.scm (with-connection): Fixed to make a connection
	  to the proxy if it is specified (pointed by Naohiro NISHIKAWA).

2009-11-10  Shiro Kawai  <>

	* src/vmcall.c (ADJUST_ARGUMENT_FRAME): Fixed a boundary case
	  of CHECK_STACK when unfolding rest args.  (Patch from enami).

2009-11-03  Shiro Kawai  <>

	* gc/dyn_load.c (GC_FirstDLOpenedLinkMap): Applied a patch
	  from enami to support the newest NetBSD-current.
	  NB: We avoid using __NetBSD_Prereq__, for its definition
	  was changed in incompatible way sometime around 4.99.x and
	  that made it unusable to test across wider range of
	  NetBSD versions.

	* gc/misc.c, gc/alloc.c, gc/os_dep.c, gc_pthread_support.c,
	  gc/pthread_stop_world.c, gc/include/private/gcconfig.h,
	  gc/include/private/gc_priv.h: Back port pthread_cancel safe
	  patch from gc cvs head.
	* gc_pthread_support.c (GC_new_thread): Remove duplicate entry
	  before registering a new one.  This particular case happens
	  with glibc-2.7/i386, where GC_exit_handler isn't called when
	  the thread exits with pthread_exit() or pthread_cancel().
	  I'm not sure the real cause is in gc or glibc, but at least
	  this change workarounds the deadlock situation caused by the
	  failure of GC_exit_handler.

2009-10-28  Shiro Kawai  <>

	* ext/net/net.c, ext/net/, src/gauche/
	  FreeBSD7.2 has ifreq.ifr_index instead of ifreq.ifr_ifindex,
	  so we check which is available.  Patch from Naohiro NISHIKAWA.

2009-10-27  Shiro Kawai  <>

	* ext/zlib/zliblib.stub (Z_TEXT, Z_FIXED): Conditionally define
	  these, since older zlib doesn't have them.

2009-10-26  Shiro Kawai  <>

	* lib/gauche/cgen/stub.scm (process-body): Recognize obsoleted
	  (return <c-func-name>) and (return <type> <c-func-name>) to
	  issue a warning and treat them as 'call' forms.  The extensions
	  that have not been updated recently may have thes forms, and
	  it will be inconvenient if we stop supporting them now.

2009-10-25  Shiro Kawai  <>

	* src/port.c (Scm_FdReady): Made it work with Windows pipe.

	* src/syslib.stub (sys-get-osfhandle): Added this for low-level
	  tweaking on Windows.

	* ext/termios/termios.scm (without-echoing): Added a high-level
	  utitily for reading input without echoing, which can be used
	  across platforms.
	* lib/gauche/package/util.scm (get-password): Rewrote this using

	* lib/gauche/cgen/type.scm, ext/uvector/uvlib.stub.tmpl:
	  Moved stub type definitions of <s8vector> etc. from ext/uvector
	  to cgen/type.scm, since they are now supported by core.

	* ext/termios/termiolib.stub: Added bunch of Windows Console API

2009-10-24  Shiro Kawai  <>

	* src/syslib.stub (Scm_MakeWinHandle, Scm_WinHandleP etc.),
	  src/system.c (Scm_WinProcessPID), src/gauche/system.h:
	  Created generic Windows HANDLE wrapper and redefined Windows
	  process handle API on top of it.

	* src/scmlib.scm (%sys-escape-windows-command-line),
	  src/system.c (win_create_command_line),
	  lib/gauche/process.scm (shell-escape-string):
	  Moved Windows shell argument escape routine from shell-escape-string
	  to src/scmlib.scm, since it is also needed to implement
	  Scm_Exec on Windows correctly (well, almost.  Windows does not
	  enforce consistent rules of parsing command lines, so all we can
	  do is cross our fingers.)

2009-10-21  Shiro Kawai  <>

	* src/system.c (Scm_SysExec, pipe), src/gauche/win-compat.h:
	  Support I/O redirection using pipes on Windows, and try to
	  align process exit status handling.

	* src/port.c (Scm_PortFdDup), src/extlib.stub (port-fd-dup!):
	  Support these under Windows as well (via _dup2()).  They are
	  not fully compatible (Windows seems to have some restrictions
	  on which file descriptors can be dup'ed?) but it's better than

	* src/error.c (Scm_SysError): On GAUCHE_WINDOWS, check both
	  errno and GetLastError; posix-compatible API uses the former
	  and Windows API uses the latter, and Scm_SysError doesn't know
	  which for sure.  We always reset both errors after Scm_SysError
	  so we can guess that non-zero one reflects the actual error.

	* src/syslib.stub (sys-stat): On GAUCHE_WINDOWS, remove trailing
	  path separator in PATH if any (excluding the root directory; e.g.
	  "/" or "c:\\" are untouched).  This is because Windows stat()
	  raises error if there's trailing separator, except the root
	  directory case.

	* src/main.c (main): On GAUCHE_WINDOWS, sets stdin, stdout and
	  stderr to binary mode.  This will align gosh's behavior the
	  same on Windows and Unix, and save lots of troubles.  Note that
	  applications that want to link libgauche.dll should take care
	  of this by themselves.

2009-10-20  Shiro Kawai  <>

	* src/syslib.stub (sys-unlink): On GAUCHE_WINDOWS, make file writable
	  before unlink(), since Windows doesn't allow unlinking a read-only

2009-10-19  Shiro Kawai  <>

	* test/system.scm: Excluded fork&wait test on cygwin platform since
	  fork() on cygwin is so unreliable.

	* src/mingw-exify: Updated to use 0.9 API.

	* src/core.c (init_cond_features): Added a feature gauche.os.cygwin
	  on cygwin platform.  It comes short to provide an illusion of
	  complete unix emulation, so the program may want to switch its

	* gencomp: Resurrected for the backward compatibility.  It issues
	  warning to move on to precomp.

	* src/gauche.h, src/gauche/load.h, src/gauche/hash.h, src/gauche/port.h,
	  src/main.c, src/test-vmstack.c, ext/
	  Removed GAUCHE_API_0_9 flags.  Now 0.9 API is the default.  The
	  backward compatibility API is available under a new flag,

2009-10-18  Shiro Kawai  <>

	* src/gauche/extend.h (SCM_INIT_EXTENSION): Revived data/bss area
	  registration code only for Cygwin; it still seems to need them.

	* gc/ Applied a patch to avoid adding -lpthread -ldl
	  when building on Cygwin, for it causes link error.

2009-10-17  Shiro Kawai  <>

	* src/vm.c (vm_finalize): Issue a warning when a thread is terminated
	  by an uncaught exception and its state is never retrieved by
	  thread-join!.  Such a case must be a coding error, and usually
	  causes pain in debugging if such thread dies silently.
	* src/exclib.stub, src/gauche/exception.h, ext/thread/thrlib.stub:
	  Moved thread exception definitions from the thread subsystem to
	  the core; we need <uncaught-exception> in the core to implement
	  the above feature.
	* ext/threads/threads.c (Scm_ThreadJoin): Use SAEF_LOCK_BEGIN|END.

2009-10-16  Shiro Kawai  <>

	* src/ Added -C|--canonical-suffix option that
	  renames *.sci to *.scm upon install.  This is to avoid confusion
	  when both foo.sci and foo.scm happens to be installed.
	* ext/, ext/ Added -C option
	  to gauche-install.

2009-10-13  Shiro Kawai  <>

	* lib/gauche/cgen/cise.scm (define-cfn): Fixed a bug that didn't
	  escape identifiers for forward-declaration in record-static.

	* src/extlib.stub (%vm-show-stack-trace): experimentally expose
	  this function for diagnostics.

2009-10-11  Shiro Kawai  <>

	* platform match for freebsd allows *freebsd, in order
	  to support kfreebsd (Patch from Jens Thiele).

2009-10-10  Shiro Kawai  <>

	* lib/rfc/http.scm (http-generic): adds user-agent header automatically,
	  using default value from the parameter http-user-agent.
	  Also supports :proxy option.

2009-10-09  Shiro Kawai  <>

	* lib/rfc/http.scm (http-compose-form-data, http-generic):
	  Support automatic multipart/form-data composition in
	  http-post and http-put.

2009-10-08  Shiro Kawai  <>

	* lib/rfc/http.scm (http-compose-query, http-generic): Support
	  application/x-www-form-urlencoded query composition in http-*

2009-10-07  Shiro Kawai  <>

	* lib/rfc/mime.scm (mime-compose-message, mime-compose-message-string)
	  (mime-make-boundary): Added support of composing a MIME message.
	  (mime-parse-parameters, mime-compose-parameters): Expose those
	  APIs (the former renamed from mime-parse-parameter-value).

2009-09-29  Shiro Kawai  <>

	* src/gauche/gloc.h, src/gloc.c (Scm_GlocMarkConst,Scm_GlocUnmarkConst):
	  APIs for better encapsulation.  Also dropped Scm_MakeConstGloc,
	  because of duplicated feature.
	* src/module.c (Scm_Define, Scm_DefineConst): Factored out the
	  common parts, and make sure modules.mutex is unlocked.

2009-09-26  Shiro Kawai  <>

	* src/gauche/gloc.h, src/gloc.c,
	  src/gauche/module.h, src/module.c (Scm_HideBinding, Scm_FindBinding),
	  src/intlib.stub (%hide-binding): Added a hack to hide binding
	  inherited from parent modules.  This feature is not for general
	  use; it is an internal tool to implement import's :except
	  and :rename qualifiers via intermediate module.

	* src/compile.scm (process-import): Added support of :except
	  qualifier in import, using the above feature.

2009-09-24  Shiro Kawai  <>

	* src/compile.scm (import): Added support of :only qualifier
	  in import.

2009-09-23  Shiro Kawai  <>

	* src/module.c (Scm_FindBinding, Scm_ImportModule),
	  src/gauche/module.h, src/intlib.stub (%import-module),
	  src/compile.scm (import): Added a feature to import a module
	  with prefixed names.  (import (MODULE :prefix PREFIX)) imports
	  exported bindings of MODULE into the current module, exposing
	  the symbols with PREFIX attached.
	  The C-level API Scm_ImportModules() is deprecated, since it
	  is not very convenient for the callers to call it with the
	  new prefixed format.  Instead the C programs should call
	  Scm_ImportModule() for each module to be imported.
	* src/main.c: Rewritten using Scm_ImportModule() instead of

2009-09-21  Shiro Kawai  <>

	* src/core.c (Scm__MutexCleanup),
	  src/vm.c (process_queued_requests),
	  src/gauche/pthread.h (SCM_INTERNAL_MUTEX_SAFE_LOCK_BEGIN|END),
	  src/gauche/uthread.h (SCM_INTERNAL_MUTEX_SAFE_LOCK_BEGIN|END):
	  Abstracted the pattern of mutex lock/unlock with cleanup
	  handler installed.

2009-09-19  Shiro Kawai  <>

	* src/vm.c (process_queued_requests): Make sure the VM's lock
	  is unlocked when the thread is canceled while stopped.
	  Note: The same fix is needed wherever LOCK/UNLOCK pair contains
	  cancellation point.

2009-09-05  Shiro Kawai  <>

	* ext/digest/md5.*: Renamed MD5Final -> MD5_Final etc. to avoid
	  name conflict in Snow Leopard.  Patch from KOGURO Naoki.
	* gc/match_dep.c: Fix build problem on Snow Leopard.
	  Patch from KOGURO Naoki.
	* src/symbol.c (Scm_Gensym), src/main.c (cleanup_main):
	  Suppress warning on printf directive size mismatch.
	  Patch from KOGURO Naoki.
	* m4/ax_check_define.m4,, acinclude.m4:
	  Fix build problem on Snow Leopard.  Patch from KOGURO Naoki.

2009-08-26  Shiro Kawai  <>

	* lib/gauche/cgen/cise.scm (cise-translate): Added per-file cise
	  rendering support.  This enables automatic generation of forward
	  prototype declarations of static procedures in the file.

2009-08-25  Shiro Kawai  <>

	* lib/gauche/cgen/cise.scm (<cise-env>, define-cise-toplevel): Added
	  "toplevel" context so that we can have a toplevel cise macro
	  that expands into toplevel cise forms.
          (cise-render, cies-render-to-string): Because of the above change,
	  the optional argument to indicate the context now takes a symbol
	  either one of 'toplevel, 'stmt or 'expr, as opposed to the boolean
	* lib/gauche/cgen/stub.scm (define-cfn, process-expr-spec)
	  (c-literal-expr): Changed accordingly.

2009-08-23  Shiro Kawai  <>

	* ext/net/ (net/if.h, struct ifreq): need sys/socket.h on OSX
	  to check these.

2009-08-21  Shiro Kawai  <>

	* src/number.c (MAX_EXPONENT): Changed to 325, since the least
	  absolute value of denormalized number (expt 2.0 -1024) would be
	  printed to 5.0e-324, so we do need to handle exponent -324 to
	  keep read/write invariance.
	  (iexpt10): handle cases where e is larger than pre-computed
	  table size.  It can happen in legitimate input, although rarely.

	* src/vm.c (Scm_VMFlushFPStack): Fixed a bug that forgot to scan
	  ARGP of in-stack continuation when flonum registers are flushed.
	  (Thanks to naoya_t for finding and providing reproduceable test

2009-08-20  Shiro Kawai  <>

	* src/portapi.c (Scm_PortSeek): Fixed to revert the buffer pointer
	  when a seek method of a procedural buffered port gives up the
	  operation.  (See ext/vport/test.scm for the actual case).

2009-08-19  Shiro Kawai  <>

	* lib/gauche/cgen/cise.scm (.if): Changed preprocessor directive
	  macro from |#if| to .if, since the former is too intrusive in
	  the code.
	  (.cond, .include): Added these to generate preprocessor directives
	  #if..#elif..#endif and #include.
	* src/*.stub, ext/syslog/syslog.scm: Changed accordingly.

2009-07-28  Shiro Kawai  <>

	* src/read.c (read_string),
	  Fully support all intraline whitespace characters.

2009-07-27  Shiro Kawai  <>

	* src/read.c (skipws), src/gauche/char_*.h (SCM_CHAR_EXTRA_WHITESPACE):
	  Recognize all whitespace characters in the reader.

	* src/list.c (Scm_DeleteDuplicates): Fixed a bug that SEGVs when
	  dotted list is given.

2009-07-26  Shiro Kawai  <>

	* lib/gauche/test.scm (prim-test, test-check): Changed the default
	  check procedure from equal? to a new test-check procedure.  It
	  treats <test-error> objects specially, for the comparison of
	  error case is non symmetric.  The old version handled error
	  cases by overloading object-equal? for <test-error>, but it is
	  awkward since object-equal? is expected to be symmetric.

	* test/*, ext/*/test.scm: Rewrote *test-error* in error case tests
	  with test-error; the *test-error* variable is obsoleted.

2009-07-25  Shiro Kawai  <>

	* lib/rfc/uri.scm (uri-decompose-hierarchical): Changed to regard
	  empty PATH part as missing, and returns #f instead of "".  It is
	  also consistent with rfc2396 section 3.  (Pointed out by,
	  and tests provided by Hisashi Morita).

2009-07-24  Shiro Kawai  <>

	* src/gauche/symbol.h, src/symbol.c (Scm_WriteSymbolName): Made
	  symbol printing routine available for keyword printing.
	* src/keyword.c (print_keyword): Escapes keyword name if it contains
	  weird characters.
	* src/read.c (read_keyword): Supports :|...| style escaped keywords.

2009-07-06  Shiro Kawai  <>

	* lib/gauche/test.scm (test-error): Supersedes the global *test-error*
	  variable.  Now the user can create a new <test-error> object for
	  each test, giving expected condition type, so that it will be
	  easier to test if the code raises a particular condition.
	  *test-error* variable is deprecated, and will fade away.

2009-07-03  Shiro Kawai  <>

	* src/syslib.stub (sys-stfrerror): avoid using 'errno' as argument
	  name, for it may collide with a system macro.

2009-07-02  Shiro Kawai  <>

	* src/read.c (read_shebang): Removed unnecessary EOF check.

2009-06-28  Shiro Kawai  <>

	* src/prof.c (collect_samples): Replaced a call to HashTableGet
	  for HashTableRef.
	  (Scm_ProfilerCountBufferFlush): Replaced a call to HashTableAdd
	  for HashTableSet.

2009-06-26  Shiro Kawai  <>

	* src/write.c, src/keyword.c: Replaced calls to obsoleted APIs
	  HashTableGet/Put for the new APIs HashTableRef/Set.

2009-06-25  Shiro Kawai  <>

	* src/symbol.c (symbol_print, Scm_MakeSymbol),
	  src/read.c (read_internal, read_escaped_symbol),
	  src/write.c (write_walk): Support #:symbol notation of uninterned
	* src/extlib.stub (string->uninterned-symbol, symbol-interned?):

2009-06-24  Shiro Kawai  <>

	* src/symbol.c (Scm_SymbolSansPrefix),
	  src/extlib.stub (symbol-sans-prefix): Added.

	* src/symbol.c (Scm_Intern): Doh! Scm_Intern wasn't MT-safe.  Fixed.

Results 1 - 1 of 1
Help - FTP Sites List - Software Dir.
Search over 15 billion files
© 1997-2017