2026-05-19  Shiro Kawai  <shiro@acm.org>

	* lib/file/elf.scm: Added.

2026-05-17  Shiro Kawai  <shiro@acm.org>

	* lib/text/csv.scm (make-csv-reader): Make trimming unquoted fields
	  customizable.  https://github.com/shirok/Gauche/issues/1271

2026-05-08  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/sequence.scm (subsec <vector>): Check start/end
	  boundary.  Underlying vector-copy allows out-of-bound start/end,
	  but subseq is better not to allow it to catch mistakes.

2026-05-06  Shiro Kawai  <shiro@acm.org>

	* src/gauche/bits.h, src/bits.c: Ensure bit indices are in
	  ScmSmallInt.  This is a public C API Change. It's better to do it
	  now.

	* src/vector.c (Scm_BitvectorToUVectorShared, Scm_UVectorToBitvectorShared):
	  Added to provide "aliasing" bitvectors and uvectors.
	  ScmBitvector now has 'owner' field to be inherited from the
	  original uvector's owner field.  It is only to keep reference
	  so that the original data chunk won't be GCed.
	  To keep binary compatibility, owner field is added to the last.
	* src/libvec.scm (bitvector->uvector/shared, uvector->bitvector/shared):
	  Added.

2026-05-02  Shiro Kawai  <shiro@acm.org>

	* src/gauche/priv/typeP.h (ScmNativeType),
	  src/libtype.scm (<native-type>): Added bounded? flag to handle
	  arrays of unspecified length and aggregates that includes such
	  types.

2026-04-30  Shiro Kawai  <shiro@acm.org>

	* ext/ffi/native-type.scm (<int16-be> etc.): Added endian-specific
	  native types.

2026-04-29  Shiro Kawai  <shiro@acm.org>

	* ext/ffi/native-type.scm (cast-handle): Added.

	* Rename gauche.btype -> gauche.native-type.  Changed my mind again.
	  both ctype and btype are cryptic, and doesn't feel to represent
	  what it covers.

2026-04-27  Shiro Kawai  <shiro@acm.org>

	* libsrc/lang/asm/x86_64.scm (asm1): Support different operand
	  widths for computation instructions (e.g. addb etc.)

	* lib/lang/asm/linker.scm (prelink-template): Added.

2026-04-26  Shiro Kawai  <shiro@acm.org>

	* ext/ffi/btype.scm (null-pointer-handle?): Added.
	  Also added equality and comparison procedures on native handles.

2026-04-25  Shiro Kawai  <shiro@acm.org>

	* ext/ffi/btype.scm (null-pointer-handle): Added.

	* src/libmod.scm (%expand-user-import): If the user uses R7RS-style
	  import on Gauche default REPL and switches to R7RS REPL mode
	  first time, we notify the user about it and loads basic R7RS
	  libraries.  https://github.com/shirok/Gauche/issues/1260
	* lib/gauche/interactive/init.scm (setup-r7rs-repl): Make it
	  a function so that it can be called when the above happens.
	* src/main.scm (*batch-mode*): Define this variable when
	  gosh is run with -b option.  We use this to suppress the note
	  above.

2026-04-22  Shiro Kawai  <shiro@acm.org>

	* lib/lang/asm/linker.scm: Renamed from object.  The main function
	  of this module is now assembling fragments and resolving
	  offsets, so it is more like a linker.

	* src/load.c (Scm_DLGetEntryAddress),
	  src/libeval.scm (dlobj-get-entry-address): Allow to look up
	  function address in the current process by passing #f as dlo.
	  Also ensure the name has prefix '_' to detect careless mistakes.

	* lib/scheme/bytevector.scm (bytevector-*-native-ref): Fix unnecessary
	  endianness argument from 'native' procedures.
	  https://github.com/shirok/Gauche/issues/1258

2026-04-20  Shiro Kawai  <shiro@acm.org>

	* Rename gauche.ctype -> gauche.btype (Binary types).
	  We may enhance this module for general binary access.

2026-04-19  Shiro Kawai  <shiro@acm.org>

	* src/compaux.c (unwrap_rec): Avoid deel recursion while processing
	  long list.

	* ext/lang: Precompile lang.asm.x86_64

2026-04-14  Shiro Kawai  <shiro@acm.org>

	* src/gen-native.scm: Use asm-instantiate to patching the native
	  call code pad.  This makes patchgin codde in Scm_VMCallNative
	  unnecessary, but we keep it for a while just in case.

	* src/load.c (DLOGetEntryAddress): Return #<native-handle> instead
	  of #<dlptr>.  We'll drop #<dlptr> eventually.
	  API change to receive teh type of the pointer.

2026-04-11  Shiro Kawai  <shiro@acm.org>

	* lib/lang/asm/x86_64.scm: Split asm to two stages, template
	  creation and instantiation.  Also make asm return u8vector
	  instead of list of bytes.

	* src/load.c (Scm_CloseDLO): Change API to take 'force' flag.
	  If TRUE, we close DLO even if it is initialized---some Scheme
	  object may retain reference that would become stale by closing,
	  but it is safe if we close it right before exitting the process.
	  This is compatibility breaking change, but we assume nobody
	  really call this API directly.

2026-04-10  Shiro Kawai  <shiro@acm.org>

	* src/system.c (Scm_UnlinkEventually),
	  src/libsys.scm (sys-unlink-eventually): Added.
	  For https://github.com/shirok/Gauche/issues/1253

2026-04-06  Shiro Kawai  <shiro@acm.org>

	* Document gauche.in-place feature identifier.

2026-04-03  Shiro Kawai  <shiro@acm.org>

	* ext/ffi/ffi/native.scm: Connect native call interface (currently
	  only available on linux/amd64) as an alternative ffi subsystem.
	  Still experimental.

2026-04-01  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/package/compile.scm: Derive in-place path replacement
	  automatically, instead of asking the caller to provide
	  :gauche-builddir keyword argument.

2026-03-31  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/package/compile.scm (gauche-package-link): Fix:
	  Quote output so-file name---without it, link fails on
	  mingw environment when the output is given in Windows-style
	  pathname.

2026-03-30  Shiro Kawai  <shiro@acm.org>

	* ext/ffi/ffi.scm, ext/ffi/ffi/stubgen.scm: Add FFI with stubgen
	  subsystem.

	* lib/gauche/cgen/dyncomp.scm: Added.

2026-03-28  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/unit.scm (cgen-with-output-file): Create tmpfile
	  in the same directory as the final destination, so that
	  simple sys-rename works as a finisher.

2026-03-26  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/numutil.scm (gamma, log-gamma): Extended their domain
	  to complex.  Note that libm's lgamma is log(abs(gamma(x))), but
	  in the complex domain we don't take absolute value not to lose
	  the phase---so we name it log-gamma to avoid confusion.
	  The real-domain counterparts are named real-gamma and real-log-gamma.
	  libm's lgamma is available real-log-abs-gamma for clarity, though
	  we provide lgamma as an alias, but deprecates it.

2026-03-24  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/stub.scm (cgen-stub-cise-ambient, process-body-inner):
	  Generate boxing code where CiSE 'return' is placed---avoid
	  carrying local pointers out of their scope.
	  Fix https://github.com/shirok/Gauche/issues/643

	* src/libfmt.scm (make-format-pprint): Directly call %pretty-print
	  in the rendering phase so properly handle ~w.
	  Fix https://github.com/shirok/Gauche/issues/1190

	* lib/gauche/pputil.scm (stringify): Fix incorrect labeling in
	  pprint https://github.com/shirok/Gauche/issues/1147

2026-03-23  Shiro Kawai  <shiro@acm.org>

	* src/compile-1.scm (pass1/eval-macro-rhs): Support srfi-147
	  'begin' form.  https://github.com/shirok/Gauche/issues/1067
	  Now srfi-147 support is official.

2026-03-19  Shiro Kawai  <shiro@acm.org>

	* ext/tls/tls-mbed.c (mbed_read): Fix potential busy-loop.

2026-03-18  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/common-macros.scm (check-arg): Move built-in check-arg
	  here, making it srfi-253 compatible.

	* src/libtype.scm (of-type?): Mark it constant, allowing the compiler
	  to constnat folding the expr.  This can prune typecase
	  branches at compile time.

2026-03-17  Shiro Kawai  <shiro@acm.org>

	* lib/srfi/253.scm: Added.  PR from @a2379
	  https://github.com/shirok/Gauche/pull/1240

2026-03-15  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/test.scm (toplevel-closures): Exclude autoloaded
	  closures from checking the module binding.
	  For https://github.com/shirok/Gauche/issues/1157
	  Now that we leave #<autoload> in the value of GLOC insterted
	  in autoloader module by the previous commit, we can exclude
	  them from considering binding check.
	* src/libmarcro.scm (ineq/comparator): Documented officially.

2026-03-14  Shiro Kawai  <shiro@acm.org>

	* src/load.c (Scm_ResolveAutoload): Make it optionally return
	  resolved binding (gloc).  This is an incompatible change.
	* src/gauche/load.c (ScmAutoload): Keep resolved binding.
	* src/vminsn.scm (GREF, GSET): Replace cached GLOC if it is
	  autoloaded one.
	  This is to prevent module autoloads from leaving superfluous
	  binding in the loading module even after the autoload is
	  resolved.  See https://github.com/shirok/Gauche/issues/1237

2026-03-11  Shiro Kawai  <shiro@acm.org>

	* src/class.c (init_class): Fix the order of inherited slots
	  of builtin classes https://github.com/shirok/Gauche/issues/1236

2026-03-08  Shiro Kawai  <shiro@acm.org>

	* src/libmacro.scm (test): Bind 'test' in #<module gauche>,
	  so that rxmatch-case/rxmatch-cond can hygienically recognize
	  it as an auxiliary keyword.
	* lib/gauche/test.scm (test): A hack to keep binding of 'test'
	  identical to the one from #<module gauche>, so that importing
	  gauche.test won't interfere with rxmatch-case/rxmatch.cond.
	  See the comment in the code.

	* src/comple.scm (%free-identifier=?): Make comparison of bound and
	  unbound identifiers #f, as it should be.  This may break legacy
	  code, though, so we make env var GAUCHE_COMPARE_IDENTIFIERS_LOOSELY
	  to switch it back.

2026-03-05  Shiro Kawai  <shiro@acm.org>

	* src/binary/ftype.scm, src/ffi/ctype.scm: Move binary.ftype
	  to gauche.ctype.  It will be a part of ffi module, but
	  useful as a separete module to access binary data.

2026-03-04  Shiro Kawai  <shiro@acm.org>

	* src/port.c (<input-port>, <output-port>, <io-port>): Give
	  input and output ports specialized classes.  Each post instance
	  has direction flags, so having them in the class hierarchy is
	  redundant.  However, it is easiter to align to stub type
	  handling.
	  Note: Existing third party code may have created custom port
	  classes directly inheriting <port>.  To support such cases,
	  we have a hack in Scm_TypeP().
	  See https://github.com/shirok/Gauche/issues/1231

	* src/proc.c (<closure>, <subr>): Give ScmClosure and
	  ScmSubr dedicated classes.  Internally we use SCM_PROCEDURE_TYPE
	  to dispatch for performance, instead of relying classes.  However,
	  this irregularity led some hacks in stub type handling.
	  See https://github.com/shirok/Gauche/issues/1231

2026-02-28  Shiro Kawai  <shiro@acm.org>

	* libsrc/util/match-impl.scm: Fix ..k repetition for vectors
	  by @gengar https://github.com/shirok/Gauche/pull/1228

2026-02-26  Shiro Kawai  <shiro@acm.org>

	* src/libtype.scm, ext/binary/ftype.scm, libgauche/cgen/type.scm:
	  Start switching native type <int> to <c-int> etc.
	  We'll keep old names for the compatibility during transition.
	  We may revert this if this change interferes c-wrapper.
	  https://github.com/shirok/Gauche/issues/1216

2026-02-25  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/pputil.scm (do-layout-elements): Fix filling of nested
	  lists.  https://github.com/shirok/Gauche/issues/1130

2026-02-21  Shiro Kawai  <shiro@acm.org>

	* Honor user-defined write-object on a subclass of <dictionary>
	  while detecting circular/shared strctures.
	  https://github.com/shirok/Gauche/pull/1223

	* libsrc/text/line-edit.scm (backward-up-list): Added.
	  (move-beginning-of-toplevel-sexp): Added.

2026-02-19  Shiro Kawai  <shiro@acm.org>

	* libsrc/text/line-edit.scm (tarnspose-sexps): Aded trasnpose-sexprs
	  command.

2026-02-18  Shiro Kawai  <shiro@acm.org>

	* libsrc/text/line-edit.scm (mark-sexp): Add mark-sexp command.

2026-02-17  Shiro Kawai  <shiro@acm.org>

	* libsrc/text/line-edit.scm: Add forward/backward-sexp cursor
	  movement

2026-02-16  Shiro Kawai  <shiro@acm.org>

	* ext/binary/ftype.scm (native-type): Added a convenience
	  functon to conver CiSE-style type signature to native-type
	  instance.

2026-02-15  Shiro Kawai  <shiro@acm.org>

	* src/libtype.scm (<native-handle>), ext/binary/ftype.scm:
	  Switch to use <native-handle> instead of various foreign pointers
	  to deal with native data access.
	  https://github.com/shirok/Gauche/issues/1215

2026-02-12  Shiro Kawai  <shiro@acm.org>

	* src/vminsn.scm (UVEC-REF): Fix to type check arg
	  https://github.com/shirok/Gauche/issues/1213

2026-02-11  Shiro Kawai  <shiro@acm.org>

	* src/class.c (fptr_print): Avoid using SCM_FOREIGN_POINTER_REF,
	  for it throws an error on invalid foreign pointer.  We still want
	  to be able to print invalid fp.

	* src/libfmt.scm: Add support of ~{...~} format directive.

2026-02-07  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (handle_escape): Fix exception handler pop/push bug
	  https://github.com/shirok/Gauche/issues/1210

2026-02-03  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/http.scm (http-basic-auth-handler): Prevent authorization
	  header to be broken by newlines.
	  https://github.com/shirok/Gauche/issues/1208

2026-01-24  Shiro Kawai  <shiro@acm.org>

	* src/libmisc.scm (foreign-pointer-type{-set!}): Added. (internal API)

2026-01-20  Shiro Kawai  <shiro@acm.org>

	* src/char.c: Add [:upunct:] and [:UPUNCT:] char-set-spec
	  to explicitly specify Unicode punctuations.  It will ease
	  updating existing code using [:punct:].

2026-01-19  Shiro Kawai  <shiro@acm.org>

	* src/char.c (predef_charset_posix_names): Switch [:punct:] and
	  [:PUNCT:] to ASCII_POSIX_PUNCTUATION and POSIX_PUNCTUATION by default.
	  The backward compatible behavior can be restored if
	  the environment variable GAUCHE_CHARSET_UNICODE_PUNCTUATION is
	  defined.  https://github.com/shirok/Gauche/issues/1205

	* src/gen-unicode.scm: Add POSIX_PUNCTUATION and ASCII_POSIX_PUNCTUATION
	  predefined char sets, to support POSIX regexp's [:punct:]
	  char sets.  It is not the same as Unicode punctuation
	  attribute.

2026-01-11  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/package.scm (<gauche-package-description>): Add
	  stable-version slot.

2026-01-10  Shiro Kawai  <shiro@acm.org>

	* src/libtype.scm (<c-function>): Also add native type for
	  C function pointer.

2026-01-08  Shiro Kawai  <shiro@acm.org>

	* src/libtype.scm (<pointer>): Add native type instance for
	  foreign pointers.  The name may be too generic to have it in
	  gauche namespace, but we want it concise for FFI use.  We'll
	  mull over it.

2026-01-06  Shiro Kawai  <shiro@acm.org>

	* src/libio.scm (%write-walk-rec): Limit recursion to the
	  cdr of pairs.  If the pair is an infinite lazy sequence,
	  it was failed to stop before.
	  https://github.com/shirok/Gauche/issues/1194

2026-01-03  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/libutil.scm (*load-path*): Suppress 'setting *load-path*'
	  warning if the env var GAUCHE_SUPPRESS_LOAD_PATH_SET_WARNING is set.
	  This is temporary for transition while apps update their code.

	* libsrc/file/util.scm (call-with-temporary-directory): Use remove-files
	  instead of remove-directory* to remove temp dir; temp dir may no
	  longer exists at the cleanup time and that should be tolerated.

2025-12-31  Shiro Kawai  <shiro@acm.org>

	* src/libeval.scm (dynamic-load), src/load.c: Now dynamic-load
	  is implemented in Scheme for greater flexibility.

2025-12-29  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/matrix.scm (array-trace): Added (patch by Hamayama)
	  https://github.com/shirok/Gauche/pull/1202
	  Also improve argument checking.
	* src/libmacro.scm (assume): Fixed (patch by Hamayama)
	  https://github.com/shirok/Gauche/pull/1203

2025-12-27  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/logger.scm (log-from-input-port, log-display, log-write):
	  Added.

	* src/libthr.scm (make-thread/loop): Added.

2025-12-26  Shiro Kawai  <shiro@acm.org>

	* src/port.c (<port>): Add error-occurred? slot.

	* src/libthr.scm (make-thread): Add another optional argument
	  error-reporter, to customize error reporting.  Handy when
	  the default behavior causes unexpected error to be unnoticed.

2025-12-21  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/procutil.scm (complement, flip, swap): Allow non-procedure
	  argument, for they can still be applicable.

2025-12-08  Shiro Kawai  <shiro@acm.org>

	* src/libarray.scm, ext/uvector/array.scm (array-ref, array-set!):
	  Move array-ref and array-set! to the core.

	* lib/gauche/cgen/cise.scm (expand-cfn): Treat arguments beginning
	  with '_' as possibly unused arguments (not only '_', but also
	  '_a', '_foo', etc.)

2025-11-30  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/pputil.scm (layout-array): Special treatment of display
	  an array with rank >= 2 at the toplevel.  We insert newlines after
	  each row so that the elements are shown in rectangular shape,
	  even if we have plenty of horizontal room.

2025-11-29  Shiro Kawai  <shiro@acm.org>

	* src/write.c: Dispach array display to pretty printer.
	* lib/gauche/pputil.scm (layout-array): Support array pretty-printing.
	   https://github.com/shirok/Gauche/issues/1189

	* src/libarray.scm (<array-base>): Move the base class to the core,
	  so that writer can autoload array printer as needed.

2025-11-25  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/uvgen.scm, ext/uvetor/uvector.c.tmpl: Add auto-generation
	  of dispatcher-type function.

2025-11-24  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/uvector.scm (list->uvector, vector->uvector): Added
	  generic version of converters.

2025-11-23  Shiro Kawai  <shiro@acm.org>

	* lib/srfi/42.scm (uvector-ec, uvector-of-length-ec): Added.

2025-11-20  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/array.scm (array->list, array->vector): Fix to handle
	  zero-rank array

2025-11-15  Shiro Kawai  <shiro@acm.org>

	* lib/srfi/94.scm (integer-log): Finishing support of srfi-94.

2025-11-07  Shiro Kawai  <shiro@acm.org>

	* src/regexp.c (Scm_RegExec): Let rxmatch accept string cursors
	  https://github.com/shirok/Gauche/issues/1173

	* src/string.c (Scm_StringCursorPointer): Added.
	  Rewrote Scm_MaybeSubstring with it.

2025-11-04  Shiro Kawai  <shiro@acm.org>

	* src/treemap.c (core_ref): Also check integer overflow.
	* src/hash.c (insert_entry): Avoid interger overflow.
	  https://github.com/shirok/Gauche/issues/1187

2025-11-01  Shiro Kawai  <shiro@acm.org>

	* src/main.c (enter_repl): Handle uncaptured error during
	  read-eval-print-loop.  This is most likely that something went
	  awry during setting up repl (e.g. missing files needed for
	  interactive editing).
	  Cf. https://github.com/shirok/Gauche/issues/1186

2025-10-29  Shiro Kawai  <shiro@acm.org>

	* src/libfmt.scm:: Also support ~G, but not strictly following
	  CL's spec (yet).

2025-10-26  Shiro Kawai  <shiro@acm.org>

	* src/libfmt.scm: Start supporting ~E.  Need more tests.

	* src/gauche/number.h (ScmNumberFormat): Add exp_char field to
	  customize exponent char.  To keep the backward binary compatibility,
	  we treat #\null for 'system default', which is #\e.  (But we may
	  use a parameter for the system default in future).
	  The number of reserved fields is also increased, just in case.

2025-10-23  Shiro Kawai  <shiro@acm.org>

	* libsrc/util/match-impl.scm: Make match-define work as an internal
	  define.  https://github.com/shirok/Gauche/issues/1184
	  NB: Currently, match-define expands into forms that set! matched
	  values to newly defined variables.  The existence of set! interferes
	  optimizer, and the generated code is very inefficient.

2025-10-20  Shiro Kawai  <shiro@acm.org>

	* src/libio.scm (<write-controls>): Expose numberFormat.exp_lo and
	  numberFormat.exp_hi.  We're not sure yet if these are a good way
	  to control flonum printing, so we don't make them 'official' for
	  a while.  However, it allows us to implement ~f and ~e in libfmt.

2025-10-19  Shiro Kawai  <shiro@acm.org>

	* ext/gauche/bitvector.scm (bitvector-last-bit): Export it, for
	  it is generally useful.

2025-10-18  Shiro Kawai  <shiro@acm.org>

	* src/hash.c (Scm_CombineHashValue): Improve combine-hash-value to
	  remix higher bits to lower bits.  This improve ditribution of hash
	  value significantly.
	  Note that we don't change (possibly) portable hash value---the
	  change only applies to the values that can't be portable.
	  https://github.com/shirok/Gauche/issues/1169

2025-10-11  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive/toplevel.scm (print-mode): Support
	  complex print mode customization, and rename radix -> radix-prefix.

	* src/number.c (print_complex): Support alternative complex number
	  printing.  Besides from a+bi, it can be printed out as a@b (polar)
	  a@bpi (polar-pi), or #c(a b) (vector).
	  The reader can handle all formats already.
	  This covers https://github.com/shirok/Gauche/issues/1171

	* src/gauche/number.h (ScmNumberFormat): Add comp_format slot.
	  This changes the size of ScmNumberFormat and affects the binary
	  compatibility.  However, the added field overlaps the reserved
	  field of old code, which is always zero-filled, so it won't cause
	  immediate issue.
	  Later, if we start using the reserved[1] which is out of bound
	  of the old struct, it will cause a compatibility issue, but by that
	  time we think we're in new ABI version (post-1.0, hopefully) and
	  won't be an issue.

2025-10-10  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgne/stub.scm (emit-getter, emit-setter):
	  Allow CiSE in slot's :getter/:setter spec.

	* src/libio.scm (<write-controls>): Rename :radix to :radix-prefix,
	  to make it clear it's about prefix, and avoid confusion with :base.
	  :radix is supported for the backward compatibility.
	  https://github.com/shirok/Gauche/issues/1097

2025-10-02  Shiro Kawai  <shiro@acm.org>

	* libsrc/data/trie.scm (trie-common-prefix-fold): Fix empty set case.
	  https://github.com/shirok/Gauche/issues/1179

2025-10-01  Shiro Kawai  <shiro@acm.org>

	* src/gauche/priv/writerP.h (ScmWriteControls),
	  src/libio.scm (<write-controls>): Add 'complex' slot to customize
	  how complex number is printed.

2025-09-29  Shiro Kawai  <shiro@acm.org>

	* src/read.c (read_sharp_word_1): Support reading CL-style complex
	  number, #c(x y).
	  NB: It is supported in the generic reader rather than number reader,
	  so string->number doesn't recognize it.

2025-09-28  Shiro Kawai  <shiro@acm.org>

	* libsrc/data/trie.scm: Custon tab-empty? procedure hasn't been
	  fully supported.
	  https://github.com/shirok/Gauche/issues/1174

2025-09-24  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (global-syntax=?): Compare two identifiers iff
	  both are bound to the same syntax/macro.  We add this in place
	  of global-identifier=?, which was merely a more efficient version
	  of free-identifier=?.  The issue of the latter is that it can't
	  handle aliased identifier; e.g. if we have (define-syntax def define),
	  then 'def' in (define (x) (def y 3) y) should be understood as
	  a internal define.
	* src/compile-1.scm: Use global-syntax=? instead of global-identifier=?
	  when comparing syntactic keywords.
	  Cf. https://github.com/shirok/Gauche/issues/1172

2025-09-23  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/precomp.scm (handle-define-macro): Generate
	  %insert-syntax-binding as the expansion of define-macro, instead
	  of using define to bind the macro transformer.
	* src/libalpha.scm, src/libmod.scm: Move %insert-syntax-binding
	  to libalpha, for it must be available before define-macro is
	  used in the core library.

2025-09-22  Shiro Kawai  <shiro@acm.org>

	* libsrc/file/util.scm: Rename remove-empty-directories ->
	  remove-empty-directory*, for the consistency with other APIs.

2025-09-20  Shiro Kawai  <shiro@acm.org>

	* src/gloc.c, src/module.c: Keep track of global syntactic binding.
	  Syntactic bindings introduced by define-syntax is marked so.
	  (Redefining it with normal define prints warning).
	  This info will be used during compilation.

2025-09-15  Shiro Kawai  <shiro@acm.org>

	* src/core.c (Scm_Init): On MinGW, don't start parallel mark threads
	  immediately unless env var GAUCHE_PARALLEL_MARK_ALWAYS is defined.
	  MinGW doesn't like running parallel mark in single-threaded program.
	  https://github.com/shirok/Gauche/pull/1054

	* lib/math/prime.scm (mc-factorize): Fix corner case
	  https://github.com/shirok/Gauche/issues/1170

2025-09-14  Shiro Kawai  <shiro@acm.org>

	* src/gauche-install.in: -U option removes target directory
	  if it gets empty after uninstallation.
	  https://github.com/shirok/Gauche/issues/1165

2025-09-12  Shiro Kawai  <shiro@acm.org>

	* libsrc/file/util.scm (remove-empty-directories): Added.

2025-09-09  Shiro Kawai  <shiro@acm.org>

	* lib/srfi/217.scm (iset-closed-interval): Fix missing boundary check
	  https://github.com/shirok/Gauche/issues/1166

2025-09-06  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/collection.scm (group-by-size, group-by-size-to):
	  Added.

2025-09-04  Shiro Kawai  <shiro@acm.org>

	* Dropped disjoint keyword type support.  Now keywords are symbols,
	  but automatically bound to itself in gauche.keyword module.
	  Warns if GAUCHE_KEYWORD_DISJOINT env var is defined.
	  https://github.com/shirok/Gauche/issues/1163

2025-09-01  Shiro Kawai  <shiro@acm.org>

	* src/macro.c (Scm__MakeMacroAutoload),
	  src/load.c (Scm_DefineAutoload): Support autoloading identifier macros.
	  This also changes public C API - Scm_MakeMacroAutoload becomes
	  an internal API Scm__MakeMacroAutoload(), with additional argument
	  and only visible when you include priv/macroP.h.
	  We think the function isn't used outside Gauche body.

2025-08-31  Shiro Kawai  <shiro@acm.org>

	* src/load.c: Replaced *load-path*, *dynamic-load-path*, *load-suffixes*
	  and *load-path-hooks* with parameters.  Since the first two are
	  documented, we make them identifier macros for the backward
	  compatibility but they're deprecated.

2025-08-29  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/dictionary.scm (bimap-put!): Remove the restriction
	  of adding a relation that's already in the map.

2025-08-24  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/sequence.scm (fold-left): Added.
	  https://github.com/shirok/Gauche/issues/1159

2025-08-23  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/uvlib.scm.tmpl: Support sequence-copy!|fill!.

	* libsrc/gauche/sequence.scm: Add sequence-copy! and sequence-fill!.
	  Revised permute-family for consistent treatment of fallback argument.

2025-08-21  Shiro Kawai  <shiro@acm.org>

	* src/libnet.scm: Remove conditionals depending on ipv6 availability.

2025-08-19  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/sequence.scm (inverse-permuter): Support non-bijective
	  mappings.

2025-08-17  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cond-expand-rt.scm: Added cond-expand/runtime.
	  A runtime version of cond-expand, specifically for Gauche bundled
	  libraries precompiled for distribution.

2025-08-16  Shiro Kawai  <shiro@acm.org>

	* src/libmisc.scm (has-feature?): Added.  Sometimes we need to check
	  feature identifiers at runtime, especially if the Scheme source
	  may be precompiled on different platforms.  Not for general use.

2025-08-15  Shiro Kawai  <shiro@acm.org>

	* ac/net.ac: Drop --enable-ipv6.  Now we can count on systems
	  having ipv6 support.

2025-08-14  Shiro Kawai  <shiro@acm.org>

	* src/netdb.c (make_hostent): Support ipv6 host entry.

2025-08-04  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/array.scm: Switch array printer based on write controls
	* lib/gauche/interactive/toplevel.scm: Support array-format in print-mode
	* src/libio.scm (%port-write-controls): Allow extracting
	  write-controls during recursive write-object call.

2025-08-03  Shiro Kawai  <shiro@acm.org>

	* lib/data/heap.scm (make-binary-heap): Fix a regression introduced
	  by https://github.com/shirok/Gauche/commit/7a06722333db554073ecb8186eba29a666304c07
	  It ignored key arguments.

	* lib/scheme/set.scm (size-of): Specialize this, for the fallback
	  method is slow when the set is large.

2025-08-02  Shiro Kawai  <shiro@acm.org>

	* src/libio.scm (port-walking?): Added to expose writer pass
	  to the custom object writers.

2025-08-01  Shiro Kawai  <shiro@acm.org>

	* src/libfmt.scm (make-format-maybe): Fix argument skipping
	  of ~@[ directive.
	* ext/uvector/array.scm (array->nested-list, array->nested-vector):
	  Added.

2025-07-31  Shiro Kawai  <shiro@acm.org>

	* src/write.c, src/libio.scm: Add array-format slot to
	  <write-controls>.

2025-07-30  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/array.scm, ext/uvector/matrix.scm: Add support of
	  <c32array>, <c64array>, and <c128array>.

2025-07-23  Shiro Kawai  <shiro@acm.org>

	* src/libomega.scm (report-additional-condition): Report file/line
	  of <read-error> condition.

2025-07-19  Shiro Kawai  <shiro@acm.org>

	* src/libmacro.scm (check-arg): Fix bug that argument name
	  isn't correctly passed to the error message.

2025-07-11  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/vm/insn-core.scm: Added :terminal attribute to insn-info,
	  showing that the insn unconditionally transfer control.

2025-07-10  Shiro Kawai  <shiro@acm.org>

	* libsrc/text/console.scm (putstr/link): Add capability to
	  display hyperlinked text

2025-07-07  Shiro Kawai  <shiro@acm.org>

	* lib/srfi/137.scm: Added SRFI-137.

2025-07-03  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/procutil.scm (disasm): Show lifted closures from
	  method body as well (thye were missing previously).
	* src/libproc.scm (%procedure-env->list): Changed from
	  %closure-env->list for it now handles methods, too.
	  It accepts any <procedure>, and returns () if the arg is
	  neither <closure> nor <method>.

2025-06-30  Shiro Kawai  <shiro@acm.org>

	* src/compile-3.scm (pass3): Limit # of repetition of pass3 applications
	  to catch infinite recursion of inline expansion.

2025-06-27  Shiro Kawai  <shiro@acm.org>

	* src/error.c (Scm_AssertionError): Added C convenience API
	* src/vm.c (wna): Make 'wrong number of arguments' error
	  an <assertion-violation>.

2025-06-26  Shiro Kawai  <shiro@acm.org>

	* src/list.c (Scm_Length2): Add an option not to realize lazy
	  pairs during length count.  When it hits a lazy pair, it
	  returns SCM_SMALL_INT_MAX.
	* src/liblist.scm (list?, proper-list?, dotted-list?, circular-list?):
	  Make them work with lseqs without realizing them.  Notably, they
	  no longer diverge on infinite lseqs.

2025-06-25  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/stub.scm: Use Scm_TypeError in unboxing, so that
	  it throws <assertion-violation>.

2025-06-24  Shiro Kawai  <shiro@acm.org>

	* src/libexc.scm (assertion-violation), src/libmacro.scm (assert):
	  Added for R6RS compatibility.

2025-06-23  Shiro Kawai  <shiro@acm.org>

	* src/error.c, src/gauche/exception.h: Add <assertion-violation>
	* src/error.c (Scm_TypeError): Let it throw <assertion-violation>.
	* src/libmacro.scm (<assume>, <assume-type>): Let them throw
	  <assertion-violation>.

2025-06-19  Shiro Kawai  <shiro@acm.org>

	* lib/srfi/259.scm: Added.

2025-06-02  Shiro Kawai  <shiro@acm.org>

	* lib/srfi/189.scm: Implmenet sequence protocol for Maybe/Either,
	  b/c srfi-189 treats them as 0-or-1-element sequence.
	  Our protocol doens't cover "multiple values in an element",
	  so the adaptation is partial.

2025-05-19  Shiro Kawai  <shiro@acm.org>

	* src/core.c (Scm_DeleteFeature): Added for completeness.

2025-05-18  Shiro Kawai  <shiro@acm.org>

	* src/libmisc.scm (add-cond-feature!): Added for internal use.

2025-05-17  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/precomp.scm (compile-includes): Fix precomp
	  failure on include; pass1/open-include-file requires includer
	  file path, but compile-includes passed dirname of the includer.
	* libsrc/util/match.scm, libsrc/util/match-impl.scm: Split
	  implementation of match from module business.  Preparation
	  to implement util.match using util.match.

2025-04-26  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/uvector.scm (uvector-class-valid-element?): Added.
	  (u32?, s32?, u64?, s64?): There's a bug that reversed the condition.

2025-04-25  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/uvlib.scm.tmpl (@vector-map!): Change return value
	  to #<undef>, so that the caller accidentally depends on the
	  return value.  (If the code depends on its return value, it breaks).

	* src/libio.scm (read-code): Instead of exposing <read-context>,
	  provide an alternative reader API with LITERAL_IMMUTABLE flag on.
	  So far, we use this for load and REPL interactive reader, so
	  we keep it in gauche.internal.
	* src/libeval.scm, lib/gauche/interactive.scm: Make REPL reader
	  reads literals as immutable.

2025-04-19  Shiro Kawai  <shiro@acm.org>

	* src/libomega.scm (object-hash): Lock predefined object-hash methods
	  for builtin objects.  If these methods are replaced by the user
	  it'll be a disaster.

2025-04-15  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/cise.scm (expand-cvar): Allow aggregate initializer
	  for CiSE variable definition.  Use a vector as the initial value.
	  https://github.com/shirok/Gauche/issues/885

2025-04-10  Shiro Kawai  <shiro@acm.org>

	* src/libio.scm (read): Allow <read-context> to the second
	  optional argument.

2025-04-09  Shiro Kawai  <shiro@acm.org>

	* src/libio.scm, src/read.c (current-read-context): Expose the
	  primitive parameter directly; there's no need to wrap it with
	  subr.

2025-04-07  Shiro Kawai  <shiro@acm.org>

	* src/read.c (read_sharp_asterisk): Make bitvector literal immutable
	  when the code is load-ed.

2025-04-06  Shiro Kawai  <shiro@acm.org>

	* src/compile-1.scm (define-inline): Allow "curried" definition
	  i.e. (define-inline ((foo x) y) ...).

2025-04-04  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/literal.scm (cgen-literal): Allow to add
	  comment to <cgen-literal> instance.  Some cgen-literal class
	  may emit it to the generated C code.
	  For now, the uvector literal of compressed debug info
	  shows a clue that which procedure it is for.

2025-03-27  Shiro Kawai  <shiro@acm.org>

	* lib/srfi/258.scm: Added srfi-258 uninterned symbols.

2025-03-21  Shiro Kawai  <shiro@acm.org>

	* src/compare.c (Scm_Compare): Handle the case when both are circular
	  lists and has the same contents.

2025-03-20  Shiro Kawai  <shiro@acm.org>

	* libsrc/text/console.scm (getch): Avoid using queue-internal-list.
	  Use queue->list instead.  This conses, but we don't think it'll
	  be too much perfomance hit.  We'll see.

2025-03-17  Shiro Kawai  <shiro@acm.org>

	* src/liblist.scm (extended-list-copy): Added.

2025-03-16  Shiro Kawai  <shiro@acm.org>

	* lib/control/cseq.scm: Keep the thread and queue in the procedure
	  tag of cseq generator, so that we can later close the queue and/or
	  terminate the thread.

2025-03-14  Shiro Kawai  <shiro@acm.org>

	* src/libmacro.scm (typecase): Support '=>', like case.

2025-03-11  Shiro Kawai  <shiro@acm.org>

	* src/liblist.scm (length<=? etc.): Allow to compare two lists.

2025-03-08  Shiro Kawai  <shiro@acm.org>

	* ext/data/queue.scm: Un-export queue-internal-list.  It is only to
	  support scheme.list-queue, and really shouldn't be used for other
	  purposes.

2025-03-07  Shiro Kawai  <shiro@acm.org>

	* ext/data/queue.scm (enqueue/wait!, queue-push/wait!, mtqueue-close!):
	  Add option for enqueue/wait! to return instead of error when
	  the queue is already closed.
	  Allow mtqueue-close! to be called on closed queue.

2025-03-04  Shiro Kawai  <shiro@acm.org>

	* src/liblist.scm (ilist*): Add ilist*.

2025-03-02  Shiro Kawai  <shiro@acm.org>

	* ext/data/queue.scm (mtqueue-close!): Instead of directly changing
	  MTQ_CLOSED flag, use dummy element to close the queue; this
	  keeps the queue state sane all the time.

	* src/libsys.scm (glob-fold, make-glob-fs-folder): Handle Windows
	  drive letters.  https://github.com/shirok/Gauche/1090

2025-02-27  Shiro Kawai  <shiro@acm.org>

	* ext/data/queue.scm (mtqueue-close!): Add API to close an mtqueue
	  without inserting a new data.  If there are threads waiting on
	  the queue, they reads timeout-val.

2025-02-25  Shiro Kawai  <shiro@acm.org>

	* ext/scheme/flonum.scm (flcbrt): Avoid infinite loop because of
	  numeric error. https://github.com/shirok/Gauche/issues/1118

2025-02-23  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/numioutil.scm (print-exact-decimal-point-number): Prints
	  repeating decimal representation if necessary, up to a certain
	  cycle length (1024 for now).

2025-02-20  Shiro Kawai  <shiro@acm.org>

	* ext/sparse: Add c32, c64, and c128 sparse vectors.

2025-02-18  Shiro Kawai  <shiro@acm.org>

	* src/gauche/interactive.scm: When line-edit mode is on, reflect
	  the actual screen width to the printer.
	  https://github.com/shirok/Gauche/issues/940

2025-02-15  Shiro Kawai  <shiro@acm.org>

	* src/gauche/compare.h, src/gauche/priv/compareP.h: Move the definition
	  of ScmComparator struct to a private header.  Some of the fields
	  are lazily computed, so the user code should never access the
	  struct fields directly.
	  We have allowed typeFn and eqFn to be accessed directly, but now
	  those should be accessed via ScmCompartorTypeTestPredicate() and
	  Scm_ComparatorEqualityPredicate().

	* src/libmacro.scm (ineq): Nah, '><' is too peculiar and stands out
	  too much.  The sequence can also appear in a rendered HTML sequence,
	  making searching difficult.
	  Trying 'ineq'.  Considering the fact that the rest of form is an
	  inequality, this seems more adequate.

2025-02-14  Shiro Kawai  <shiro@acm.org>

	* src/libmacro.scm (><): Try different name for chain of comparison.
	  We realized ~* is very similar to ~, but their function is totally
	  different. Let's see how it feels.  Retire the old <:<= and <=:<.

2025-02-13  Shiro Kawai  <shiro@acm.org>

	* src/libmacro.scm (~*): Experimentally add 'Chain of comparison'
	  macro.  The name is still provisional.
	  https://github.com/shirok/Gauche/issues/1114

2025-02-07  Shiro Kawai  <shiro@acm.org>

	* lib/control/future.scm (future-get): Experimentally support
	  multiple value timeout-val along the idea of
	  https://github.com/shirok/Gauche/issues/1105#issuecomment-2644730253
	  Strictly speaking this is an incompatible change, though the
	  difference is visible only under special circumstances.

2025-01-31  Shiro Kawai  <shiro@acm.org>

	* src/signal.c (Scm__GetSignalInfo), libsys.scm (get-signal-info):
	  An internal inspection utility to return system's signal names
	  and numbers.

2025-01-30  Shiro Kawai  <shiro@acm.org>

	* src/signal.c, src/thread.c: Fix handling of RT signals.
	  Let thread-terminate! sends the signal again if thread is too busy
	  to call Scm_SigCheck(), which makes the thread exit.
	  https://github.com/shirok/Gauche/issues/1106
	* src/gauche/pthread.h (GAUCHE_PTHREAD_SIGNAL): Use SIGUSR1 for
	  thread termination singal on OSX, for it does not have real-time
	  signals.  (OSX does no use signals but use thread_suspend /
	  thread_resume in GC.)
	* src/libextra.scm, test/thread-termination.scm: Add procedures
	  specifically made to test thread-termination-by-signal behavior.

2025-01-20  Shiro Kawai  <shiro@acm.org>

	* lib/control/future.scm (future-get): Fixed timeout bug
	  https://github.com/shirok/Gauche/issues/1103

	* lib/gauche/numutil.scm (inverse-mod): Added.

2025-01-17  Shiro Kawai  <shiro@acm.org>

	* lib/control/timeout.scm: Added experimentally.

2025-01-15  Shiro Kawai  <shiro@acm.org>

	* lib/math/prime.scm (grouped-factorize, reduced-totient): Added.

2025-01-12  Shiro Kawai  <shiro@acm.org>

	* src/class.c: Recognize 'placeholder' methods, methods whose body
	  is solely to call next-method and nothing else, and exclude them
	  from compute-applicable-methods.  Such placeholder methods can be
	  used to prevent users overriding the method with the specializers
	  later.  With this feature, you can add such a placeholder method
	  without impacting dispatch performance.

	  (Scm_InitBuiltinMethod): Make built-in method created with this
	  'locked' implicitly.  Replacing such fundamental method would
	  lead unexpected behavior.  This is technically an incompatible
	  change, but the code broken by this change is doing something
	  inherently dangerous.

2025-01-11  Shiro Kawai  <shiro@acm.org>

	* src/libobj.scm (initialize): Define locked method for <top> and
	  <object> to prevent user code accidentally overrides them.
	  https://github.com/shirok/Gauche/issues/1085

2025-01-10  Shiro Kawai  <shiro@acm.org>

	* lib/control/pmap.scm: Make sure all worker threads are joined,
	  even some of them result uncaught/timeout exceptions.

2025-01-07  Shiro Kawai  <shiro@acm.org>

	* src/libnum.scm (number->string): Allow the first optional argument
	  to be a <write-controls>
	  https://github.com/shirok/Gauche/issues/1096

2025-01-04  Shiro Kawai  <shiro@acm.org>

	* src/number.c, lib/gauche/numioutil.scm: Support repeating decimal
	  notation.  Delegate R7RS padding '#' reading to Scheme routine.
	  Technically, this makes previously non-number token to a number
	  (e.g. '0.#1 was read as a symbol before, but now it's a number).
	  I expect such weird token has been |-escaped practically.

2024-12-31  Shiro Kawai  <shiro@acm.org>

	* src/number.c (read_real): Allow much larger exponent for explicitly
	  exact numbers.  https://github.com/shirok/Gauche/issues/898

2024-12-29  Shiro Kawai  <shiro@acm.org>

	* src/read.c (read_number): Propagate numeric parser error message.
	  https://github.com/shirok/Gauche/issues/912

2024-12-25  Shiro Kawai  <shiro@acm.org>

	* src/vector.c: Make uvector print routine follow writeControls
	  https://github.com/shirok/Gauche/issues/1093
	  NB: This allocates more than before the change.  Mind the
	  performance.

	* src/gauche/number.h (ScmNumberFormat): Change struct format
	  for flexibility of future extensions.  This is technically an
	  ABI change (recompilation required if user code uses ScmNumberFormat
	  explicitly).

2024-12-24  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/pputil.scm (do-layout-elements): Fix column rounding
	  issue https://github.com/shirok/Gauche/issues/941

2024-12-20  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/numioutil.scm: Move print-exact-decimal-point-number
	  here.  We don't want to advertise that procedure, but autoloading
	  it from gauche.numutil causes gauche.base to export it.

	* lib/gauche/numutil.scm: Put this in a separate module
	  gauche.numutil, so that we can have some private functions here.

2024-12-17  Shiro Kawai  <shiro@acm.org>

	* src/libeval.scm (gc-stat): Enhanced to include more info.

2024-12-15  Shiro Kawai  <shiro@acm.org>

	* src/gauche/priv/writerP.h (ScmWriteControls),
	  src/libobj.scm (write-object),
	  src/vector.c (print_u8vector): Support bytestring option of
	  <write-controls>, to switch output of u8vector to use
	  srfi-207 string-notated bytevector.
	* lib/gauche/pputil.scm (layout-misc): Make prettyprinter aware
	  of bytestring flag.
	* lib/gauche/interactive/toplevel.scm: Make print-mode aware
	  of bytestring flag.

2024-12-09  Shiro Kawai  <shiro@acm.org>

	* src/compile-1.scm: Attach include source info in the continuation
	  mark with (%include-source-mark-key) during compilation, so that
	  we can report compile-time errors from the included source.

2024-12-04  Shiro Kawai  <shiro@acm.org>

	* src/libeval.scm (%invoke-other-version): Avoid using cond-expand.
	  This file may be precompiled on different platforms.

2024-12-02  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive.scm (read-eval-print-loop): Adapt to
	  user-provided prompter.
	  https://github.com/shirok/Gauche/issues/1088

2024-11-30  Shiro Kawai  <shiro@acm.org>

	* src/compile-5.scm (pass5/$DYNENV): Stop emitting EXTEND-DENV;
	  it is replaced by PRE-CALL and TAIL-EXTEND-DENV.
	  https://github.com/shirok/Gauche/issues/1086

2024-11-29  Shiro Kawai  <shiro@acm.org>

	* src/compile-i.scm (with-exception-handler): Inline expand
	  it to $DYNENV IForm when the body is a literal lambda.
	  This speeds up a lot.
	  https://github.com/shirok/Gauche/issues/1083

	* src/compile*.scm: Additional work to enhance $DYNENV.

	* src/Makefile.in, src/core.c, lib/gauche/version-alist.scm:
	  Make BUILD_GOSH's version available in version-alist
	  (key 'build.gosh-version').

2024-11-28  Shiro Kawai  <shiro@acm.org>

	* src/vminsn.scm (EXTEND-DENV, TAIL-EXTEND-DENV),
	  src/compile-5.scm (pass5/$DYNENV): Enhanced those instructions to
	  cons a new value to existing value.  The operation can be used
	  to optimize with-exception-handler etc.

2024-11-26  Shiro Kawai  <shiro@acm.org>

	* src/symbol.c (Scm_Gensym): Avoid race.  It is theoretically
	  harmless as far as gensym result is used as uninterned symbols
	  (even two threads reads the same counter, created symbols are
	  different), but their name can be dumped to a file, and it
	  is better to avoid conflicts.

2024-11-25  Shiro Kawai  <shiro@acm.org>

	* src/libeval.scm (load-from-port): Use with-exception-handler
	  instead of guard to reraise wrapped condition.  Guard rewinds
	  stack before calling the handler, so a portion of stack trace
	  is lost.

	* src/load.c (do_require): Use non-error-trapping Scm_Load when
	  PROPAGATE_ERROR is requrested.
	  https://github.com/shirok/Gauche/issues/1081

2024-11-24  Shiro Kawai  <shiro@acm.org>

	* configure.ac: 0.9.15-p2, for reproducible "official" package.

2024-11-22  Shiro Kawai  <shiro@acm.org>

	* src/libobj.scm (%expand-define-method): Avoid including
	  "#<identifier..>" in the method unique name, since it has portions
	  that vary for each build and hinders reproducible build.  The name
	  is not relevant to the program execution; only needs to be unique
	  inside the module.  So we use gensym-generated counter instead.
	  https://github.com/shirok/Gauche/issues/1080

2024-11-15  Shiro Kawai  <shiro@acm.org>

	* lib/srfi/230.scm: Support srfi-230.

2024-11-10  Shiro Kawai  <shiro@acm.org>

	* ext/gauche/atomic.scm: Provide atomic operations in a separate
	  module for now.  It's mainly to organize namespaces.
	  If we start using atomic boxes in core libraries,  we might
	  move this to the core.

2024-11-07  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive/editable-reader.scm (make-editable-reader):
	  Clear buffered input when a reader raise an error, so that
	  subsequent read won't be confused.
	* src/gauche.h (SCM_CHAR_MAX): Change SCM_CHAR_MAX to 0x10ffff.
	  We intentionally took wider range for the room of extension,
	  but now that internal encoding is fixed to utf-8 and more
	  libraries assume Unicode, it doesn't seem useful anymore.
	* src/read.c (Scm_ReadXdigitsFromString): Fix bug when a certain
	  path failed to return SCM_CHAR_INVALID in out-of-range case.
	  Also use SCM_CHAR_MAX instead of hardcoded limit number.
	  Cf. https://github.com/shirok/Gauche/issues/1078

2024-11-06  Shiro Kawai  <shiro@acm.org>

	* src/gauche/priv/atomicP.h: Change API to align to C11 atomic
	  primitives rather than emulating libatomic_ops primitives.
	  atomic_compare_exchange in C11 is not a simple replacement of
	  AO_compare_and_swap.  Since AO_ will fade out, we emulate C11
	  semantics with AO_* when C11 primitives isn't available.

2024-10-31  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/parseopt.scm: Change the order of plural option's
	  values; it's more reasonable to return the order appearing in
	  the command-line arguments.  Plural option support is added
	  after 0.9.15, so this shouldn't be a compatibility issue.
	* lib/tools/*: Removed `reverse` from plural option values
	  according to the above change.

2024-10-30  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/parseopt.scm (run-option-parser): Revise low-level API.
	  There's not much point to make <option-parser> applicable.  Explicit
	  procedure to apply the parser on the args is better for clear API
	  and readability.

2024-10-25  Shiro Kawai  <shiro@acm.org>

	* src/compile-1.scm (pass1/check-inlinable-lambda): Allow inlining
	  literal closures given to getter-with-setter
	  https://github.com/shirok/Gauche/issues/1076

2024-10-19  Shiro Kawai  <shiro@acm.org>

	* lib/srfi/234.scm (connected-components): Fix a bug in the
	  reference impl.

2024-10-10  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/version-alist.scm (gauche): Allow excluding certain
	  info from the output of 'gosh -V' by setting an environment
	  variable GAUCHE_VERSION_INFO_EXCLUSION.
	  https://github.com/shirok/Gauche/issues/1042

2024-10-07  Shiro Kawai  <shiro@acm.org>

	* doc/corelib.texi: Document <Assortment> type constructor.

2024-10-05  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive.scm: Avoid exporting REPL-variables *1 etc.
	  from #<module gauche>.
	  https://github.com/shirok/Gauche/issues/1066

2024-10-03  Shiro Kawai  <shiro@acm.org>

	* ext/digest/sha3.c: Officially support SHA-3.  Add SHA3-224.

2024-09-29  Shiro Kawai  <shiro@acm.org>

	* src/srfis.scm: Support srfi-234 officially.
	* lib/util/toposort.scm: Implement on top of srfi-234; this module
	  is for the backward compatibility.

2024-09-17  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/process.scm: Support :envioronment keyword arg.

2024-09-14  Shiro Kawai  <shiro@acm.org>

	* src/libsys.scm (sys-exec, sys-fork-and-exec): Add :environment
	  keyword arg.

	* gc/: bumped bdwgc 8.2.8

2024-09-13  Shiro Kawai  <shiro@acm.org>

	* src/system.c (Scm_SysExec): Switch to use execve() on POSIX platform.
	  Executable is searched by sys-find-file, instead of relying on
	  execvp().

2024-09-11  Shiro Kawai  <shiro@acm.org>

	* src/system.c (Scm_SysExec): Change API to allow environment in the
	  argument.  This is technically a compatibility-breaking change.
	  Our hope is that no extensions rely on this API, for it is
	  pretty low-level and awkward to use.  It's much more convenient
	  to use gauche.process.

2024-09-10  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/sysutil.scm (sys-find-file), libsrc/file/util.scm:
	  Move file.util#find-file-in-paths to the core, for sys-exec
	  will need it.  Cf. https://github.com/shirok/Gauche/issues/1071

2024-09-05  Shiro Kawai  <shiro@acm.org>

	* src/libobj.scm (describe-slots): Hide slots starting with '%' by
	  default.  Setting a dynamic state describe-details to a true value
	  changes it.  Since 'describe' is for human interaction, we think
	  this bit of convention would help users.

2024-08-29  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/version.scm: Relaxed relnum syntax.  Now it allows
	  sequence of chars except delimiting ones ([._-]).  It is becaues
	  bleeding-edge tarball has something like 0.9.15-p1+20240829.

2024-08-27  Shiro Kawai  <shiro@acm.org>

	* tools/make-tgz.sh: Allow creating snapshot tarball with snapshot_id

	* configure.ac: Add GAUCHE_SNAPSHOT_ID, an optional string to dicern
	  versions of snapshot tarballs.

	* lib/lang/c/type.scm (c-actual-type): Fix the case when identifier
	  is typedef'ed to an aggregate type.  The old code assumed the
	  inner type was always a basic type.
	  This was the cause of https://github.com/shirok/Gauche/issues/1044

2024-08-11  Shiro Kawai  <shiro@acm.org>

	* lib/srfi/190.scm: Proper support of srfi-190, based on
	  identifier syntax and syntax parameters.

2024-08-09  Shiro Kawai  <shiro@acm.org>

	* src/compile-1.scm (define-syntax-parameter, syntax-parameterize):
	  Added srfi-139 (preliminary).  We need more error checks and tests.

2024-08-06  Shiro Kawai  <shiro@acm.org>

	* src/compile-1.scm (make-id-transformer): Attach expression name
	  to identifier macros.  The id-macro object rarely surfaces:
	  When you evaluate the identifier bound to an id-macro, it
	  immediately expands, so the macro object can't be obtained through
	  evaluation.  Still it may be appear during debugging, and
	  it's useful to see the name of the macro.

2024-08-03  Shiro Kawai  <shiro@acm.org>

	* lib/util/identifier-syntax.scm (identifier-syntax): Add support
	  of R6RS identifier-syntax.

2024-08-02  Shiro Kawai  <shiro@acm.org>

	* src/macro.c (compile_rules, synrule-expand): Allow a single
	  identifier as pattern, e.g. (syntax-rules () (_ template)).
	  This pattern matches anything.  Especially useful when compiled
	  with make-id-transformer, for this pattern can be used to
	  match the identifier macro.

2024-08-01  Shiro Kawai  <shiro@acm.org>

	* src/compile-1.scm (make-id-transformer): Experimentally added.
	  It wraps ordinary macro to make an id macro.  Similar to R6RS
	  make-variable-transformer, but you need it even the id macro is
	  used without set!.

2024-07-31  Shiro Kawai  <shiro@acm.org>

	* src/compile-1.scm (set!): Add support of identifier macro call
	  when id-macro is used in (set! id expr) form.

2024-07-30  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (define-cproc), src/compile-1.scm (pass1),
	  src/libmacbase.scm (call-id-macro-expander): Allow id-macro
	  to be global.

2024-07-28  Shiro Kawai  <shiro@acm.org>

	* src/libdict.scm (dict-transparent?): Priting dictionary content
	  unconditionally is a bad idea.  A <dictionary> instance may access
	  external resources, or may have unbounded size (e.g. computed content).
	  Trying to print such a dictionary and write-walk recurse into it
	  would be a disaster.
	  With dict-transparent? method, a dictionary class may elect that
	  pprint prints its content.  Default is not transparent.

2024-07-27  Shiro Kawai  <shiro@acm.org>

	* src/libdict.scm: Make dictionary protocol implementation of
	  hashtables and treemaps built-in.  We need dict methods
	  to walk into dictionaries during write-walk.
	  (See https://github.com/shirok/Gauche/issues/1060).
	  We don't want entire gauche.dictionary built-in, since it
	  drags gauche.collection into core as well.  So externally
	  gauche.dictionary remains as a library module and nothing changes.
	* src/libhash.scm: Moved original content of libdict.scm here.
	  I've always been confused where to find hashtable cproc definitions.
	  Now it's easier.

2024-07-25  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/pputil.scm (layout-dict): Instead of letting built-in
	  print handler to display hash-table content, we can directly handle
	  it in pprint.
	  https://github.com/shirok/Gauche/issues/1032#issuecomment-2252319794
	  This can avoid the complications of recursing pprint and
	  Scm_Vprintf https://github.com/shirok/Gauche/issues/1058

2024-07-21  Shiro Kawai  <shiro@acm.org>

	* src/write.c (Scm_Vprintf): Use current column for the indentation
	  of %W.

	* src/core.c (Scm_RuntimeState): Generalize Scm_InitializedP() to
	  Scm_RuntimeState(), to track several initialization phases.

2024-07-20  Shiro Kawai  <shiro@acm.org>

	* src/hash.c (hash_print): Default printer to print hash table content.
	  https://github.com/shirok/Gauche/issues/1032

2024-07-18  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (Scm_VMDynamicWind): Allow 'before' handler to be SCM_FALSE,
	  in which case we can skip calling it.  A bit of saving.

	* src/vm.c: Ditched vm->escapePoint chain.  It had two roles:
	  error handler stack and a list of EPs that points to in-stack cont
	  frames.  Now we unified error handlers into exception handlers,
	  and keeps in-stack cont EPs in vm->floatingEscapePoints list.
	  See https://github.com/shirok/Gauche/issues/1037

2024-07-13  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (Scm_NewVM): When a new VM (thread) is created, we only
	  need to inherit parameterizations for the new dynamic environment.
	  Other dynamic stuff are reset to the default values at the entrance
	  of the thread and upstream values are never accessed.

2024-07-12  Shiro Kawai  <shiro@acm.org>

	* ext/tls: Avoid depending tls-mbed shared object on tls shared object,
	  for it complicates things on Windows.
	  (tls-debug-level-set!): Saves the debug level globally, and
	  tell it to newly registered subsystem.  By this, the debug level
	  setting isn't affected by the timing of loading of the subsystem.

2024-07-06  Shiro Kawai  <shiro@acm.org>

	* libsrc/text/tr.scm (build-char-array): Fix backslash handling.
	  https://github.com/shirok/Gauche/issues/1051
	  We also clarified the case when there are dups in from-list:
	  the first entrly wins.

2024-06-30  Shiro Kawai  <shiro@acm.org>

	* lib/srfi/234.scm: Added.

2024-06-29  Shiro Kawai  <shiro@acm.org>

	* lib/Makefile.in: generate slibcat in builddir then install,
	  instead of generating it in the installation directory.  Generating
	  after installation doesn't work if we use DESTDIR.  We had
	  slibcat-in-place makefile target specifically for that, but we can
	  generate slibcat in builddir anyway, we can always use it.
	  https://github.com/shirok/Gauche/issues/1046

2024-06-28  Shiro Kawai  <shiro@acm.org>

	* ext/tls/tls-mbed.c (mbed_read, mbed_write): Handle non-fatal
	  errors.  Without this, TLS1.3 session stops when server sends
	  a session ticket.
	  https://github.com/shirok/Gauche/issues/1047

2024-06-27  Shiro Kawai  <shiro@acm.org>

	* ext/tls/tls.scm (tls-debug-level-set!): API to set debug level of
	  TLS submodules.

2024-06-21  Shiro Kawai  <shiro@acm.org>

	* lib/tools/compile-r7rs: Drop support of COMPILE_R7RS.  If the
	  variable is set, we warn that we don't support it.  See the
	  discussion at https://github.com/shirok/Gauche/pull/1045.

2024-06-19  Shiro Kawai  <shiro@acm.org>

	* src/genconfig.in.in: Remove '--prefix' and '--exec-prefix' configure
	  arguments from CONFIGURE_ARGS if we compile Gauche to obtain
	  runtime directory relative to the library location (MinGW,
	  OSX framework).  In such cases, '--prefix' etc. is irrelevant
	  to recompile, and it becomes actually a nuisance if it appears
	  in 'gauche-config --reconfigure'.

2024-06-12  Shiro Kawai  <shiro@acm.org>

	* src/number.c (print_number),
	  lib/gauche/numutil.scm (print-exact-decimal-point-number):
	  Add hook to print exact decimal notation if ratonal number's
	  denominator is divisible by 2 and 5.
	* src/gauche/priv/writerP.h, src/libio.scm, src/write.c:
	  Add exact-decimal slot to <write-controls>
	* lib/gauche/interactive/toplevel.scm (print-mode):
	  Allow changing exact-decimal setting.

2024-06-09  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/parseopt.scm (let-args): Rewrote using er-macro,
	  supporting plural options (cmdoption that can be specified
	  more than once).

2024-06-08  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive.scm (describe): Show polar representaion
	  when describing a complex number.

2024-06-05  Shiro Kawai  <shiro@acm.org>

	* src/libobj.scm (ref): Make generic referencer work on <mv-box>.
	  https://github.com/shirok/Gauche/issues/1038.

	* lib/gauche/interactive/completion.scm (%complete-symbol): Exclude
	  verbose method names from completion candidates.
	  Cf. https://github.com/shirok/Gauche/issues/1039

2024-06-02  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/parseopt.scm (let-args, option-parser-help-string):
	  Add option help string generation.
	  Cf. https://github.com/shirok/Gauche/issues/661

2024-05-29  Shiro Kawai  <shiro@acm.org>

	* lib/text/fill.scm: Added.

2024-05-27  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/uuid.scm (make-uuid7-generator): Add optional argument to
	  specify the amount of increment.  Also fixed a bug to avoid
	  increment gets 0.

2024-05-26  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/uvector.c.tmpl: Make sure recognizing big/little endian
	  designator as well as big-endian/little-endian.
	  https://github.com/shirok/Gauche/issues/1036

2024-05-24  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/uuid.scm: Change to generator-make style a la data.random
	  and srfi.194.  This clarifies interaction with uuid-random-source,
	  and makes less lock contention.
	  https://github.com/shirok/Gauche/issues/1034

2024-05-21  Shiro Kawai  <shiro@acm.org>

	* src/genconfig.in, src/gen-genconfig.scm: Generate genconfig.in
	  form the single source of config parameter description.
	  Note: genconfig.in needs to be generated _before_ 'configure',
	  hence the generation rule isn't in Makefile.  'DIST tgz' takes
	  care of it.

2024-05-17  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/uuid.scm: Added uuid6 and uuid7, according to RFC9562.

	* configure.ac: Change --enable-common-commands to
	  --enable-shared-commands.
	  See the discussion in https://github.com/shirok/Gauche/pull/1030

2024-05-16  Shiro Kawai  <shiro@acm.org>

	* configure.ac: Add --enable-common-commands to install SRFI-defined
	  common commands such as compile-r7rs, scheme-r7rs, etc.
	  See the discussion in https://github.com/shirok/Gauche/pull/1030

2024-05-15  Shiro Kawai  <shiro@acm.org>

	* src/gen-features.sh: Define feature ids for operating system and CPU,
	  using configure's $host.  Inspired by
	  https://github.com/shirok/Gauche/pull/1033

2024-05-12  Shiro Kawai  <shiro@acm.org>

	* lib/tools/compile-r7rs: Added SRFI-138 compliant script.
	  Contributed by Antero Mejr
	  https://github.com/shirok/Gauche/pull/1030

2024-05-10  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/configure/output.scm (cf-output): Adjust escaping of
	  cf-define-ed value when it appears in -Dvar=val.
	  https://github.com/shirok/Gauche/issues/1028

2024-05-08  Shiro Kawai  <shiro@acm.org>

	* lib/srfi/252.scm (inexact-complex-generator): The previous one
	  duplicates initial seqeunces by using inexact-real-generator
	  for real and imag parts.  Fixed.

2024-05-07  Shiro Kawai  <shiro@acm.org>

	* lib/text/sh.scm: New module for shell-related text processing,
	  including shell-style pattern match.
	  (cf. https://github.com/shirok/Gauche/issues/1026)
	  shell-escape-string and shell-tokenize-string are also moved
	  here from gauche.process, since they are pure text processing and
	  nothing to do with subprocess.  (Though we keep them available
	  through gauche.process as well).

	* src/libsys.scm (glob-component->regexp): Allow special characters
	  to be scaped with '\'.  Also added :shell mode.

2024-05-06  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/configure/output.scm (cf-output): Fix srcdir substitution
	  for subdirectories
	  https://github.com/shirok/Gauche/issues/1025

2024-05-05  Shiro Kawai  <shiro@acm.org>

	* examples/spigot-subdir: Added an example when C files are
	  put under src/ subdirectory.

2024-05-03  Shiro Kawai  <shiro@acm.org>

	* src/gauche-package.in: It gets too bloated, so moved the 'meat'
	  into gauche.package.commands.

	* configure.ac: 0.9.15-p1, just to distinguish from released version.

2024-05-02  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/process.scm: (call-with-*-process): Allow #f
	  for :on-abnormal-exit, which discards the result of proc
	  and returns #f when the process exits abnormally.
	  https://github.com/shirok/Gauche/issues/1024

2024-04-30  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/configure/lang.scm: Changed cf-lang-program to take
	  either a string or a list of strings as prologue and body arguments,
	  instead of a string tree.  This technically breaks compatibility,
	  though most of the time it should work.
	  https://github.com/shirok/Gauche/issues/1023

2024-04-26  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (Scm__InitVM): Flip the default value of
	  CHECK_UNDEFIFNED_TEST flag.  Now it is on by default,
	  and is suppressed with env var GAUCHE_ALLOW_UNDEFINED_TEST.

2024-04-25  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/libutil.scm (library-for-each): Make it agnostic
	  to the return value of given proc.

	* lib/gauche/interactive/completion.scm (%complete-module-name):
	  Avoid the closure returining #<undef>.
	  https://github.com/shirok/Gauche/issues/1022

	* src/srfis.scm: SRFI-252 went final, so we officially support it.

2024-04-23  Shiro Kawai  <shiro@acm.org>

	* Release 0.9.15

	* tools/tls/Makefile.in: Downgraded MbedTLS-internal version to
	  3.5.2, since 3.6.0 has an issue on MinGW.  See
	  https://github.com/shirok/Gauche/issues/1021
	* tools/tls/process-config.sh: Need to tweak MinGW i686 build.

	* lib/gauche/configure.scm (cf-call-with-cpp): Added.

	* src/genconfig.in: Add --cpp and --cppflags for C preprocessor
	  configration.  Useful for 'configure' script.

2024-04-17  Shiro Kawai  <shiro@acm.org>

	* src/libnum.scm (sin etc.): Let them always return inexact numbers.
	  Previously we had (sin #e0) => #e0 etc., but it's not necessary,
	  and diverging from real-sin etc. isn't desirable.
	  (atan): Fix the special case when both args are zero.

2024-04-16  Shiro Kawai  <shiro@acm.org>

	* ext/tls/tls-mbed.c (Scm_Init_rfc__tls__mbed): Add missing
	  psa_crypto_init() to fix TLS handshake error.
	  https://github.com/shirok/Gauche/issues/1018

	* tools/tls/Makefile.in (include/mbedtls): Bumped MbedTLS version
	  to 3.6.0 to fetch with --with-tls=mbedtls-internal.

2024-04-15  Shiro Kawai  <shiro@acm.org>

	* src/system.c (Scm_SysExec),
	  src/libsys.scm (%sys-escape-windows-command-line): When a BAT file
	  is run via CreateProcess, Windows uses different rules to parse
	  the command line, causing a security risk.  We reject 'unsafe'
	  characters in the command line arguments if BAT file is the program
	  to run.  See CVE-2024-3566
	  https://nvd.nist.gov/vuln/detail/CVE-2024-3566

2024-04-10  Shiro Kawai  <shiro@acm.org>

	* DIST, test/standalone.scm: Run build-standalone with the installed
	  Gauche during DIST self-host-test.
	  This can catch the issue like
	  https://github.com/shirok/Gauche/issues/1013

	* src/gauche.h: Do not include gauche/priv/configP.h, even if it is
	  #ifdef'ed.  It is simply wrong to include a private header from a
	  public header.  Instead, it should be included from each
	  individual source files.
	  Cf. https://github.com/shirok/Gauche/issues/1013

2024-04-08  Shiro Kawai  <shiro@acm.org>

	* ext/sxml/sxml-tools.scm.in (sxml:sxml->xml): Replace original proc
	  to handle namespaces.

2024-04-07  Shiro Kawai  <shiro@acm.org>

	* src/libnum.scm (*, +): When used as unary operators on non-number
	  object, delegate it to object-* or object-+.  For the practical
	  purposes, they should return the argument as is; their existence
	  is the assertion that such opeartion is valid.    We used to return
	  the argument as is, but that may miss errors.  Just in case if
	  existing code depends on the old behavior, we issue a warning
	  and return the argument if there's no unary method defined on
	  the argument's class.
	  https://github.com/shirok/Gauche/issues/1012

2024-04-05  Shiro Kawai  <shiro@acm.org>

	* src/libbox.scm (unbox, unbox-value): Associate setters.  Now
	  you can say (set! (unbox <box>) <value>) etc.

	* lib/gauche/cgen/cise.scm (<cise-env>): Use box for decls. Since
	  a new inner env may be created during recursion, we need an
	  indirection so that decls pushed into the inner env won't be lost.

2024-04-04  Shiro Kawai  <shiro@acm.org>

	* src/string.c (string_putc): Buffer size too short.
	  Fix from NIIBE Yutaka.

	* src/gauche/priv/arith.h (SADDOV): Avoid undefined behavior of
	  signed integer overflow.  Fix from NIIBE Yutaka.

2024-04-03  Shiro Kawai  <shiro@acm.org>

	* src/list.c: Ensure statically allocated ExtendedPairDescriptor
	  is aligned in 8 byte boundary. It should be treated the same
	  as ScmClass because of tagged pointer.
	  Original fix from NIIBE Yutaka.

	* lib/srfi/238.scm: Added.

2024-04-01  Shiro Kawai  <shiro@acm.org>

	* lib/srfi/64.scm: Changed integration to gauche.test.  Instead of
	  having a specific runner to bridge to gauche.test, we now bridge
	  regardless of the test runner.  This actually reveled some bugs
	  that have been overlooked (because it was reported only by the
	  srfi-64 test runner and not by gauche.test).
	  https://github.com/shirok/Gauche/issues/1010

	* test/include/srfi-194-zipf-test.scm: Loosened tolerance of
	  chi^2 test a bit.  It is statistical tests and we need some
	  more room of statistical deviation.

	* lib/scheme/mapping.scm (%mapping-cmp),
	  lib/scheme/mapping/hash.scm (%hashmap-cmp): When given mappings
	  have different comparators, we should return #f, instead of
	  "cannot compare" error.

	* lib/srfi/235.scm (disjoin): Fix when a predicate created with
	  disjoin is given no arguments.  It is actually not specified
	  in SRFI text.  The test in srfi repo returns #t for it.

2024-03-29  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/test/generative.scm: Removed in favor of upcoming srfi-252.

2024-03-27  Shiro Kawai  <shiro@acm.org>

	* src/core.c (Scm_Init): Explicitly start marker threads.  Recent
	  bdwgc delays marker thread creation until the user creates the
	  first thread, by default.  See the discussion at
	  https://sourceforge.net/p/gauche/mailman/gauche-devel/thread/87r0fvd5bl.fsf%40karme.de/

	* ext/sxml/sxml-tools.scm.in: Fix sxml:attr->html and sxml:sxml->html
	  to handle HTML's diversion from XML properly.  Specifically,
	  - Do not treat colons in attribute names as namespace prefix
	  - Do not emit self-closing tag for non-void elements with empty
	  content.
	  https://github.com/shirok/Gauche-makiki/issues/11

2024-03-25  Shiro Kawai  <shiro@acm.org>

	* Bumped version number to 0.9.14-p1
	  We're not quite ready for prerelease of next version (presumably
	  1.0_pre1), but we have enough changes since the last release
	  so we want to distinguish HEAD from the offical release.

	* lib/data/random.scm (reals-between$): Fix overflow and precision loss
	  https://github.com/shirok/Gauche/issues/1000

2024-03-24  Shiro Kawai  <shiro@acm.org>

	* ext/sxml/sxml-tools.scm.in (sxml:attr->xml, sxml:attr->html):
	  Override to fix shortcomings of the original sxml that attribute
	  values are not quoted.
	  Related: https://github.com/shirok/Gauche-makiki/issues/11

2024-03-23  Shiro Kawai  <shiro@acm.org>

	* src/gauche-package.in (compile): Support --c++ option.  This tells
	  precomp to generate *.cpp file.  Later, we may switch precomp mode
	  to support C++ specific stuff.

	* lib/gauche/cgen/unit.scm (<cgen-unit>): Add 'language slot;
	  now it generate *.cpp if the language is 'c++.

	* src/libtype.scm (<Assortment>): Replace <Singleton> and
	  <Singleton-set> with <Assortment>.  With this word, we can
	  use the same type for the union of singletons, eliminating
	  the need to have separate 'set' type.
	  Cf. https://github.com/shirok/Gauche/issues/906

2024-03-22  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h, src/gauche/float.h: Ensure include complex.h outside
	  of extern "C" linkage.  OSX clang doesn't like otherwise if
	  we include gauche.h to C++ source.
	  https://github.com/shirok/Gauche/1006

2024-03-21  Shiro Kawai  <shiro@acm.org>

	* src/gauche-package.in (compile),
	  lib/gauche/package/compile.scm (gauche-package-compile):
	  Add --srcdir option for out-of-tree compilation.

	* libsrc/file/util.scm (build-path): Allow #f in the path components
	  (interpreted as ".") for the convenience.

2024-03-20  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/stub.scm (.include): Split .include in stub toplevel
	  and CiSE .include.  Stub .include is emitted to decl section,
	  while CiSE .include is emitted in place (body section).
	  This may be potentially confusing, and good documentation is desired.
	  See https://github.com/shirok/Gauche/issues/1003 for the background
	  of this change.

2024-03-19  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/cise.scm (cise-omit-source-line): Change
	  the parameter cise-emit-source-line to cise-omit-source-line,
	  flipping the logic.  This aligns better with the options
	  (e.g. --no-line of `gauche-package compile`).

	* lib/data/range.scm (%appended-range-index): Bug in binary search.
	  Patch from @gengar https://github.com/shirok/Gauche/pull/1004

2024-03-18  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/precomp.scm: Take the default value of
	  omit-line-directives keyword arg from the parameter
	  cise-emit-source-info, so that the parameter settings by the
	  the higher layer (e.g. 'gauche-package compile') is reflected.

2024-03-16  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/listener.scm (listener-read-handler): Fixed a bug revealed
	  by the last fix.  string-incomplete->complete is used in a
	  meaningless way.

	* src/string.c (Scm_StringRefCursor): Fix a bug that leaked
	  #<unbound> to the Scheme world when an incomplete string is given.
	  It could be exhibited by this:
	    (let1 z #**"\xe1;"
	      (string-ref z (string-index->cursor z 0)))
	  Now it properly raises an error.

2024-03-15  Shiro Kawai  <shiro@acm.org>

	* lib/srfi/215.scm: Supported.  Contribution from Antero Mejr.

2024-03-12  Shiro Kawai  <shiro@acm.org>

	* lib/data/random.scm (reals-power-law$): Added.

2024-03-11  Shiro Kawai  <shiro@acm.org>

	* lib/data/random.scm (finite-flonums$): Added.

2024-03-10  Shiro Kawai  <shiro@acm.org>

	* doc/Makefile.in: Use install-info if it's available, and DESTDIR
	  is not used. https://github.com/shirok/Gauche/issues/988

2024-03-09  Shiro Kawai  <shiro@acm.org>

	* examples/mqueue-cpp: Update to use modern way (no stub file).

	* ext/windows: Replace *.stub for *.scm.

2024-03-08  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/cise.scm: Handle C++ new and delete as operators.
	  (cise-render-identifier): Allow C++ namespace qualified identifiers.

2024-03-05  Shiro Kawai  <shiro@acm.org>

	* src/libnum.scm (greatest-positive-flonum): Add.  Also renamed
	  flonum-min-normalized and flonum-min-denormalized to
	  least-positive-normalized-flonum and least-positive-flonum.
	  They are consistent with {greatest|least}-fixnum.  We added
	  'positive' for clarity.  We dropped 'denormalized', since
	  the platform may not support denormalized flonums, and the
	  procedure returns normalized flonum in that case.

2024-03-04  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/package/compile.scm: Revert the idea of *.scm.c for
	  generated C files.  It messes up Makefile inference rules
	  (make thinks foo.scm should be regenerated if foo.scm.o is newer).
	  For the name conflicts, we can name the stub definition file as
	  foolib.scm, much like we've done with foolib.stub.  Now we can
	  do so because we split module definition file from stub definition
	  file.

	* lib/gauche/cgen/precomp.scm: Add support of in-module form.
	  For now, this form is valid only for precompilation; normal
	  compiler ignores it with warning.  It allows to switch modules
	  during precompilation like select-module, but the module
	  doesn't need to exist at the moment (it is created implicitly then).
	  It suppors precompiling sources with stubs separately from
	  the module definintion file.
	  Cf. https://github.com/shirok/Gauche/issues/993

2024-03-02  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/package/compile.scm:
	  When 'gauche-package compile' receives *.scm file, we create
	  intermediate C file as *.scm.c, instead of *.c, for a module
	  may already have *.c with the same name.

2024-03-01  Shiro Kawai  <shiro@acm.org>

	* examples/spigot: Update for modern way---no *.stub file, and *.scm
	  file to be precompiled.

	* lib/gauche/package/compile.scm (gauche-package-compile): Make sure
	  to pass DSO filename when '*.scm' is compiled with
	  'gauche-package compile'.  Without this fix, generated '*.sci'
	  file can't have a proper dynamic-load call.

2024-02-29  Shiro Kawai  <shiro@acm.org>

	* src/compile-1.scm, src/compile-5.scm, src/libcode.scm, src/libtype.scm:
	  Carry procedure type of closures in $lambda-meta, instead of
	  pair attribute of the source form---using pair attr was a kludge.
	  The type is carried as <descriptive-type>.
	  It is eventually stored in <compiled-code>#signature-info,
	  and retrieved by compute-procedure-type (which is called from
	  procedure-type).
	  This allows argument type information of closures to be reflected
	  to its procedure-type.

2024-02-27  Shiro Kawai  <shiro@acm.org>

	* src/libtype.scm (type?): Added.

2024-02-25  Shiro Kawai  <shiro@acm.org>

	* lib/lang/asm/regset.scm: Added.

2024-02-20  Shiro Kawai  <shiro@acm.org>

	* src/vm.c, src/libeval.scm: Remove Scm_VMInsnOffsets and
	  %vm-get-insn-offsets.  Add Scm_VMInsnAddress and %vm-get-insn-address.
	  This is an undocumented API change.

2024-02-18  Shiro Kawai  <shiro@acm.org>

	* src/libexc.scm (print-additional-error-heading): Split auxiliary
	  info reporting from print-default-error-heading, so that it can be
	  used from other error reporters.
	* src/main.c (error_exit): When we exit during with -l or -e option,
	  use print-additional-error-heading to print additional information
	  (but not a stack trace).

2024-02-14  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/vm/insn-core.scm, src/code.c: Add 'obj+native'
	  instruction type, for JIT support.

2024-02-13  Shiro Kawai  <shiro@acm.org>

	* src/code.c, src/vminsn.scm: Change operand type 'addr' to 'label',
	  to avoid confusion with the oncoming enhancement.
	  (This is an API change, though it hasn't been documented).

2024-02-12  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/cise.scm (asm): Add asm cise macro to generate
	  gcc inline assembly.

2024-02-10  Shiro Kawai  <shiro@acm.org>

	* lib/srfi/247.scm: Add SRFI-247

2024-02-07  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/collection.scm (size-of): Missing size-of method
	  defintion specialized for hashtables and treemaps, causing
	  size-of on these objects O(n).
	  Cf. https://github.com/shirok/Gauche/issues/987

2024-02-04  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/uri.scm (uri-decompose-query, uri-compose-query),
	  lib/rfc/http.scm (http-compose-query),
	  lib/www/cgi.scm (cgi-parse-parameters): Provide basic url query
	  utilities in rfc.uri, and define existing utils on top of them.

	* src/liblist.scm: Change optional argument order of new alist-*
	  procs.  It is easier to have key= argument first, to handle
	  variations.

2024-02-03  Shiro Kawai  <shiro@acm.org>

	* src/liblist.scm (alist-merge): Added.
	  (alist-ref, alist-key, alist-adjoin, alist-update-in): Renamed
	  assoc-ref, rassoc-ref, assoc-adjoin, and assoc-update-in.
	  Old names are kept for the backward compatibility.
	  https://github.com/shirok/Gauche/issues/985

2024-02-02  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/collection.scm (group-collection->alist): Added.

2024-01-31  Shiro Kawai  <shiro@acm.org>

	* libsrc/rfc/822.scm (rfc822-header-ref*, rfc822-header-put): Added.

2024-01-29  Shiro Kawai  <shiro@acm.org>

	* src/gauche-package.in: Add 'populate' subcommand.

	* lib/text/multicolumn.scm (layout-multicolumn): Fix the edge case
	  when the string list is empty.

2024-01-25  Shiro Kawai  <shiro@acm.org>

	* Release 0.9.14

2024-01-23  Shiro Kawai  <shiro@acm.org>

	* ext/charconv/jconv.c (jconv_open): If input and output encoding are
	  the same but not supported natively, use pass-through transcoder
	  instead of delegating it to iconv.  Some verion of iconv doesn't
	  seem to like it.
	  https://github.com/shirok/Gauche/issues/979

	* src/number.c (double_precision): Fix ratnum->flonum failure when
	  when either denominator or numerator is 2^(64n-1).
	  https://github.com/shirok/Gauche/issues/981

2024-01-22  Shiro Kawai  <shiro@acm.org>

	* src/libnum.scm (real-ln): Fix precision loss of taking log on
	  a large bignum. https://github.com/shirok/Gauche/issues/980

2024-01-21  Shiro Kawai  <shiro@acm.org>

	* lib/data/priority-map.scm: Allow any comparator as key-comparator;
	  we switch hashtable and treemap internally.  Then dict->priority-map
	  can take the given dictionary's key-comparator.

2024-01-20  Shiro Kawai  <shiro@acm.org>

	* lib/data/priority-map.scm (dictionary->priority-map),
	  (alist->priority-map): Added.

	* lib/text/multicolumn.scm (display-multicolumn): Add indent keyword
	  arg.

2024-01-19  Shiro Kawai  <shiro@acm.org>

	* src/gauche-package.in ("info"): Add 'gauche-package info' command.

2024-01-16  Shiro Kawai  <shiro@acm.org>

	* lib/data/random.scm: Switch the handling of current random source.
	  Now the procedures consistently captures the value of the
	  current random source at the time of creation of generators.
	  This is technically an incompatible change.
	  https://github.com/shirok/Gauche/issues/977

2024-01-15  Shiro Kawai  <shiro@acm.org>

	* lib/srfi/194.scm, lib/srfi/194/*.scm: Completing srfi-194 support.

2024-01-12  Shiro Kawai  <shiro@acm.org>

	* src/compile-5.scm (pass5/$DYNENV): Fixed a bug that when KEY or
	  VALUE of with-continuation-mark is a procedure call, its result
	  becomes the result of with-continuation-mark.

	* lib/data/random.scm (reals-between$): The range calculation was
	  broken.

2024-01-09  Shiro Kawai  <shiro@acm.org>

	* src/libfmt.scm (format-internal), src/libmacro.scm: Experimentally
	  introduce formatter cache.  The compiler determines "potentially
	  cacheable" call of `format`, and the runtime takes advantage of it
	  if possible.  The drawback is that the compiler macro now inserts
	  reference to `format-internal`.  It's embedded in the precompiled
	  code and We can't change its API across versions.

2024-01-08  Shiro Kawai  <shiro@acm.org>

	* src/libfmt.scm (formatter-parse): Support conditional directive
	  (tilde left-bracket).

2023-12-30  Shiro Kawai  <shiro@acm.org>

	* src/error.c (Scm_MessageConditionPrint): Extend the error message
	  truncation limit so that unexpected exception can give more info.

2023-12-29  Shiro Kawai  <shiro@acm.org>

	* ext/tls/tls-mbed.c (mbed_write): If the data is big, single
	  mbedtls_ssl_write may return with partial write, so we need
	  to retry to send the rest of the data.

2023-12-28  Shiro Kawai  <shiro@acm.org>

	* 0.9.14_pre1.  Preparing another release to make TLS addition
	  available.

2023-12-17  Shiro Kawai  <shiro@acm.org>

	* libsrc/file/util.scm (build-path): Allow 'cwd and 'cld as base-path
	  argument, for current workding directory and current loading
	  directory, respectively.  We've seen enough of this pattern,
	  especially the latter, so it's worth having it.

2023-12-10  Shiro Kawai  <shiro@acm.org>

	* ext/charconv: Support utf8bom encoding, which drops the optional BOM
	  at the beginning of utf8 stream.  We simply implement utf8bom->utf8
	  internal routine, and use autosynthesis of other conversions.
	  We don't support utf8bom as an output encoding, at least for now
	  (see the discussion in the issue).
	  https://github.com/shirok/Gauche/issues/966

	* src/librx.scm (%regexp-replace): Avoid rebinding current-output-port
	  during replacing, for the substitution procedure may output
	  and it's confusing that it is mixed into the result.
	  https://github.com/shirok/Gauche/issues/967

2023-12-06  Shiro Kawai  <shiro@acm.org>

	* src/string.c (string_putc): Make 'write' escape control characters
	  in strings so that it's easier if hard-to-see characters are there,
	  e.g. Zero-width no-break space.

2023-12-03  Shiro Kawai  <shiro@acm.org>

	* src/libthr.scm (run-once): Added.
	  (<mutex>, <condition-variable>, <thread-local>): Export these.
	  Class names are not in SRFI-19, but now that threads are in the
	  core, other parts of core may refer to them. (Notably, precomp
	  now needs them).

2023-11-29  Shiro Kawai  <shiro@acm.org>

	* src/gencomp: Removed.  This is an ancient script, superseded by
	  precomp long ago.

2023-11-25  Shiro Kawai  <shiro@acm.org>

	* src/system.c (Scm_ToTimeSpec): More general interface that takes
	  the base time (t0) when relative time is given.  Passing NULL
	  to t0 uses the current time.
	  Scm_GetTimeSpec() is defined on top of it.  We thought to drop it,
	  but this API may have been used from other extensions, so we may
	  keep it.

2023-11-24  Shiro Kawai  <shiro@acm.org>

	* src/builtin-sym.scm: Rearranged predefined symbols.
	  It's been for long time since we made builtin-syms.h private,
	  so no external code should depend on the order of them anymore.

	* src/system.c (Scm_GetTimeSpec): Allow negative real number
	  for relative time specification.  For the timeout argument,
	  we don't need that, but for general time operation it is useful.
	  Also support relative time specification with time-duration time.

2023-11-21  Shiro Kawai  <shiro@acm.org>

	* lib/control/pmap.scm (run-map): Terminate threads when
	  timeout reaches with fully-concurrent-mapper.
	  https://github.com/shirok/Gauche/issues/964

	* src/libsys.scm (absolute-time): Added.  Handy to canonicalize
	  'timeout' argument.

2023-11-20  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/unit.scm (<cgen-dummy-unit>): Initialize
	  cgen-current-unit with a dummy instance which issues error message
	  saying <cgen-unit> isn't set up properly.  It is better than
	  'object of class #<class <boolean>> doesn't have such slot'.

2023-11-19  Shiro Kawai  <shiro@acm.org>

	* src/libmod.scm (module-exports?, module-binds?, module-binding-ref):
	  Introduced new names in place of global-variable-visible?,
	  global-variable-bound? and global-variable-ref.
	  See https://github.com/shirok/Gauche/issues/963

2023-11-18  Shiro Kawai  <shiro@acm.org>

	* src/libmod.scm (global-variable-visible?): Added.
	  https://github.com/shirok/Gauche/issues/936

	* ext/tls/tls.scm (tls-connect, tls-bind): Make proto argument
	  optional.  DTLS is not very usable now, so there's little point
	  to allow users to specify udp here.
	* ext/tls: Add tls-poll

2023-11-17  Shiro Kawai  <shiro@acm.org>

	* ext/tls: Support get self/peer address, option to not verify
	  certificate.

2023-11-15  Shiro Kawai  <shiro@acm.org>

	* doc/: Support epub generation from @qykth-git
	 https://github.com/shirok/Gauche/pull/959

2023-11-14  Shiro Kawai  <shiro@acm.org>

	* ext/tls: Support TLS server connection.

2023-11-10  Shiro Kawai  <shiro@acm.org>

	* ext/tls: Remove AxTLS support.

	* src/module.c (Scm__InitModule): Remove obsoleted code to create
	  built-in srfi modules.  Now it is done in auto-generated libsrfi.scm
	  so they're no longer needed, but had been harmless until we switch
	  srfi-N to srfi.N naming convention.

	* lib/slib.scm (slib:features): Exclude srfi-0 from slib:features
	  to prevent slib initializer to load all available srfis, especially
	  srfi.29.  It is mentioned in the comment immediately above, but
	  I seem to have reverted the change when I updated slib.scm based
	  on a newer template. https://github.com/shirok/Gauche/issues/960

2023-11-03  Shiro Kawai  <shiro@acm.org>

	* libsrc/file/util.scm (remove-directory*): Add :if-does-not-exit
	  argument

2023-10-27  Shiro Kawai  <shiro@acm.org>

	* src/system.c (Scm__WinFastLockLock): Fast lock implementation for
	  Windows (by @Hamayama, https://github.com/shirok/Gauche/pull/955)

2023-10-26  Shiro Kawai  <shiro@acm.org>

	* src/bignum.c (bignum_mul_si): Optimize special case when bignum
	  muliplied by y=2^n (y is fixnum).

2023-10-24  Shiro Kawai  <shiro@acm.org>

	* lib/r7rs-setup.scm (open-binary-*-file): Even though Gauche
	  doesn't distinguish textual and binary ports, opening file as
	  binary may have an observable difference on Windows ('binary' mode).

2023-10-22  Shiro Kawai  <shiro@acm.org>

	* src/core.c (Scm_ObjToExitCode): Consolidate exit code translation
	  to be shared between 'exit', 'sys-exit', and 'emergency-exit'.
	  https://github.com/shirok/Gauche/issues/947
	* src/libeval.scm (exit), lib/r7rs-setup.scm (emergency-exit),
	  src/libsys.scm (sys-exit): Allow to take #f as code, which
	  is mapped to exit code 1.

2023-10-21  Shiro Kawai  <shiro@acm.org>

	* lib/srfi/74.scm: Fix blob-*-set! procedures.

	* lib/check-script, lib/tools/check-script: Move check-script
	  to tools subdirectory.

2023-10-15  Shiro Kawai  <shiro@acm.org>

	* Drop eucjp, sjis and none internal CES support.  We use utf8
	  exclusively from now on.

2023-10-14  Shiro Kawai  <shiro@acm.org>

	* Various files: Remove code with GAUCHE_API_VERSION < 98

2023-10-11  Shiro Kawai  <shiro@acm.org>

	* Release 0.9.13

2023-10-07  Shiro Kawai  <shiro@acm.org>

	* Rename gauche-default-encoding -> default-file-encoding

2023-10-05  Shiro Kawai  <shiro@acm.org>

	* src/char.c (Scm_DefaultEncodingName, gauche-default-encoding),
	  src/libio.scm (open-input-file, open-output-file),
	  ext/charconv/convaux.scm (%open-input-file/conv),
	  (%open-output-file/conv): Add support fo gauche-default-encoding,
	  the encoding to be used when no :encoding option is given when
	  performing I/O.
	  https://github.com/shirok/Gauche/issues/944

2023-10-04  Shiro Kawai  <shiro@acm.org>

	* src/core.c (init_cond_features): Define feature identifier
	  'full-unicode' only when Gauche is compiled with utf8 encoding.

2023-10-03  Shiro Kawai  <shiro@acm.org>

	* src/gauche/priv/writerP.h (SCM_WRITTEN_ELLIPSIS): Revert
	  using Unicode ellipsis to three dots for truncated output.
	  Windows terminals may not be able to handle Unicode ellipsis
	  (U+2026) depending on the OS default codepage, and it
	  triggers an error.

2023-10-01  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/json.scm (print-instance): If :json-name slot definition
	  option is #t, use slot's name as the key.

2023-09-26  Shiro Kawai  <shiro@acm.org>

	* libsrc/text/console.scm, lib/text/console/windows.scm:
	  Allow console to cache screen size.  query-screen-size
	  may return cached results, unless the optional clear-cache
	  argument is true. reset-terminal clears the cache so that
	  next query-screen-size takes the actual screen size.
	* libsrc/text/line-edit.scm: Consider screen size to show
	  completion candidates.  The screen size may be cached, but
	  updetad by refresh-display.

2023-09-24  Shiro Kawai  <shiro@acm.org>

	* src/libexc.scm, src/libthr.scm: Expose thread exception API
	  from gauche.threads module to match the document.  It was
	  defined in gauche module before, but that doesn't make sense.

	* src/liblazy.scm (make-promise), lib/r7rs-setup.scm:
	  Move R7RS make-promise into scheme.lazy, and make built-in
	  make-promise compatible to SRFI-226.  This is technically
	  an incompatible change, but we've only documented make-promise
	  under scheme.lazy, so no code should be affected.

2023-09-22  Shiro Kawai  <shiro@acm.org>

	* lib/srfi/226/parameter.scm (parameterize-srfi-226): If you
	  use srfi.226, 'parameterize' is strictly limited to the
	  srfi-226 compatible parmeters.

2023-09-20  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/literal.scm (literal-value=?): Optimized.

	* src/port.c: Reduce overhead of string port creation.  A significant
	  one is to omit registering finalizers, for they're not needed for
	  string ports.  Also a couple of micro-optimizations.

2023-09-19  Shiro Kawai  <shiro@acm.org>

	* src/parameter.c: Fix semantics of thread parameter.  To conform
	  SRFI-226, mutation of dyncamically bound thread parameter shoudln't
	  be visible from other threads.  Thus we need a fresh thread local
	  for every dynamic scope.  On the other hand, legacy parameters
	  only requires thread locals for the global scope.

	* src/threadlocal.c: Allow thread locals to be GC-ed and reused.
	  Each thread local storage keeps 'generation' along its value.
	  The generation is incremented when a thread local is GC-ed.
	  The next thread local which happens to use the same slot has
	  a different generation, so it can detect the slot is uninitialized,
	  even its value is not SCM_UNBOUND.

2023-09-14  Shiro Kawai  <shiro@acm.org>

	* src/proc.c (proc_print): Allow a procedure to have a custom
	  printer.  Scheme abstracts some kind of special constructs
	  as proceudres, e.g. parameters and continuations.  It is nice
	  if we have a specialized printer to display info specific
	  to such construct, rather than the generic procedure printer
	  which can only show procedure-info.

2023-09-13  Shiro Kawai  <shiro@acm.org>

	* src/write.c (write_object_fallback): If base class has print()
	  function pointer and derived class doesn't have write-object
	  method, we use base class's print() func instead of the
	  default printer.

2023-09-12  Shiro Kawai  <shiro@acm.org>

	* src/parameter.c, src/libparam.scm (make-legacy-parameter):
	  Added.  See https://github.com/shirok/Gauche/issues/935

2023-09-10  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/process.scm (do-process): Add :exit-code option
	  to :on-abnormal-exit keyword arg
	  https://github.com/shirok/Gauche/issues/928

2023-09-09  Shiro Kawai  <shiro@acm.org>

	* libomega.scm: Add additional report for unbound variable error -
	  list modules that exports the name.  It may help the user
	  to import necessary module.

2023-09-08  Shiro Kawai  <shiro@acm.org>

	* libexc.scm, libomega.scm: Rename report-mixin-condition
	  to report-additional-condition, so that non-mixin condition
	  can also have customized error report.

2023-09-07  Shiro Kawai  <shiro@acm.org>

	* src/error.c (Scm_MakeUnboundVariableError): Let evaluator throw
	  <unbound-variable> error for unbound variable.

2023-09-06  Shiro Kawai  <shiro@acm.org>

	* lib/tools/docprep: Renamed from preprocess-info.  The plan is to
	  make it handle common doc preparation tasks.

2023-08-31  Shiro Kawai  <shiro@acm.org>

	* lib/tools/get-cacert: Moved from ext/tls/tls/get-cacert.scm,
	  for it's a runnable tool.

	* tools/preprocess-info: Support '@c DEPRECATED' to mark deprecated
	  APIs.

2023-08-29  Shiro Kawai  <shiro@acm.org>

	* src/port.c, src/gauche/priv/portP.h: Fix the issue that port finalizer
	  causes access to already collected object.  It was the cause of
	  https://github.com/shirok/Gauche/issues/900
	  Note that a custom port's flusher and closer are no longer called
	  from the port finalizer if the custom structure is already
	  collected.  If the custom port requires guaranteed cleanup,
	  it should attach its own finalizer to the custom port's heap
	  allocated object.  In general, port's finalizer should be regarded
	  as a fail-safe mechanism, and explicit closing is recommended.

2023-08-27  Shiro Kawai  <shiro@acm.org>

	* ext/gauche/bitvector.scm (bitvector-pad, bitvector-pad-right):
	  Fix to handle the case length argument is smaller than the length
	  of the given bitvector.  For the consistency with string-pad,
	  the bitvector should be truncated.
	  https://github.com/shirok/Gauche/issues/922

2023-08-26  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/hmac.scm: Revise API to suit for typical usage.

2023-08-25  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/base64.scm, lib/rfc/quoted-printable.scm: Revise API.
	  The encoder now can take both string and u8vector, and renamed
	  to *-encode-message to reflect the generic nature.
	  The decoder now takes target class, and renamed to *-decode-string-to.
	  The latter is consistent with message digest framework.
	  The existing APIs are kept for the backward compatibility.

	* src/libmacro.scm (typecase, etypecase): Added.

	* lib/rfc/digest.scm: Allow digest-string-to to take predefined
	  encoding targets, e.g. base64 or hex.

	* lib/rfc/base64.scm: Implement Base32, Base32hex and Base16 as
	  specified in RFC4648.

2023-08-24  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/hmac.scm, lib/util/digest.scm: Add API to return digest
	  result as <u8vector>.

	* src/libio.scm (%write-walk-rec): Avoid recursing into write-object
	  when obj is a <uvector>.  This doesn't change the result, but
	  saves time.

2023-08-22  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/json.scm (<json-mixin>): A convenient mapping from Gauche
	  instance to JSON.

	* lib/rfc/base64.scm (base64-encode): Added omit-padding keyword arg.
	  Some protocol asks to do so, e.g. JWS (rfc7515).

	* src/Makefile.in (clean-to-regenerate): Add a new target just to clean
	  Gauche-generated files.  Useful to regenerate them, but no need to
	  start from reconfigure.

2023-08-17  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/precomp.scm: Use packed debug info in the precompiled
	  C code.  This reduces compiled *.o files about 10-20%.

2023-08-11  Shiro Kawai  <shiro@acm.org>

	* doc/modutil.texi: Start documenting text.info.  It is not particulary
	  featureful, but having been used for quite a while and may be worth
	  documenting.

2023-08-09  Shiro Kawai  <shiro@acm.org>

	* src/memo.c (Scm_MemoTablePutv): Workaround for table extension
	  failure.  https://github.com/shirok/Gauche/issues/914

2023-08-07  Shiro Kawai  <shiro@acm.org>

	* lib/control/scheduler.scm (scheduler-reschedule!): Allow to change
	  only time or duration argument, leaving the other intact.

2023-08-04  Shiro Kawai  <shiro@acm.org>

	* src/compile-1.scm (pass1/extended-lambda-body): Expand :optional
	  handling hygienically.

2023-08-01  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/cookie.scm (construct-cookie-string): Catch up to
	  RFC6265.  We no longer need Version attribute, and both Expires
	  and Max-Age are honored unconditionally.
	  https://github.com/shirok/Gauche/issues/911

2023-07-23  Shiro Kawai  <shiro@acm.org>

	* src/libio.scm, src/string.c, lib/gauche/interactive.scm:
	  Add string-length slot to <write-controls>, which can limit the
	  display length of strings.
	  https://github.com/shirok/Gauche/issues/908

	* src/libstr.scm (string-ellipsis), lib/gauche/pputil.scm, etc.:
	  EXPERIMENTAL: If native CES is utf-8, use Unicode ellipsis (U+2026)
	  instead of three periods when the output is truncated.
	  We hope it makes easier to distinguish whether the output is actually
	  truncated, or there is indeed an ellipsis in the data.

2023-07-20  Shiro Kawai  <shiro@acm.org>

	* src/port.c, src/portapi.c: Remove port terminal mode; it was a wrong
	  abstraction, for multiple ports can be connected to a terminal.
	  The actual issue https://github.com/shirok/Gauche/issues/877 has
	  been addressed with termios.

2023-07-19  Shiro Kawai  <shiro@acm.org>

	* libsrc/text/console.scm (call-with-console), src/portapi.c:
	  Fix port terminal mode handling.

2023-07-16  Shiro Kawai  <shiro@acm.org>

	* src/portapi.c: (Scm_Putc, Scm_Puts, Scm_Putz): Honor port terminal
	  mode.
	* ext/termios/termios.scm: Switch port terminal mode along the
	  actial terminal state changes.

2023-07-15  Shiro Kawai  <shiro@acm.org>

	* src/port.c (Scm_GetPortTerminalMode, Scm_SetPortTerminalMode):
	Added.  This is to address managing output while editable REPL
	is active. https://github.com/shirok/Gauche/issues/877

	* tools/make-export-list: Added.

2023-07-14  Shiro Kawai  <shiro@acm.org>

	* src/libnum.scm (logset+clear): Added.

2023-07-06  Shiro Kawai  <shiro@acm.org>

	* src/hash.c, src/libdict.scm (%current-recursive-hash), src/module.c,
	  src/libomega.scm (object-hash):
	  Make %current-recursive-hash a proper parameter.
	  https://github.com/shirok/Gauche/issues/879
	  NB: This commit drops Scm_CurrentRecursiveHash().  It has only been
	  used from libdict.scm.  Technically this is incompatible change,
	  but we bet nobody else depend on this.

2023-07-04  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/uuid.scm (parse-uuid): Add if-invalid keyword argument to
	  return #f for invalid uuid format, rather than raising an error.

2023-07-03  Shiro Kawai  <shiro@acm.org>

	* doc/extract.scm, lib/tools/preprocess-info: Rename extract script
	  and make it avaialble as a tool script.

2023-06-20  Shiro Kawai  <shiro@acm.org>

	* lib/srfi/216.scm, src/srfis.scm: Support SRFI-216, SICP prerequisites.

2023-06-12  Shiro Kawai  <shiro@acm.org>

	* src/libvec.scm, ext/uvector/uvector.scm: Move string <-> uvector
	  conversion routines to core, to avoid dependency issues.

2023-06-11  Shiro Kawai  <shiro@acm.org>

	* src/genstub, lib/tools/genstub: Move genstub to tools subdir.

	* lib/gauche/parseopt.scm: Allow omitting whitespace between
	  single-letter option and its argument.
	  https://github.com/shirok/Gauche/issues/904

2023-06-09  Shiro Kawai  <shiro@acm.org>

	* src/precomp, lib/tools/precomp: Start moving standard scripts
	  to tools/ namespace, e.g. one will say 'gosh tools/precomp ...'
	  instead of 'gosh precomp ...'.
	  https://github.com/shirok/Gauche/issues/891

2023-06-07  Shiro Kawai  <shiro@acm.org>

	* src/precomp, lib/gauche/cgen/precomp.scm: Add --omit-debug-source-info
	  option to drop debug-source-info from the generated compiled-code
	  literals.  This can be used for: (1) The generated C file gets too
	  big, or (2) user wants to hide the source info for application
	  distribution.
	* src/Makefile.in: Use --omit-debug-source-info to generate compile.c
	  for now.  Adding source info makes compile.c too big to compile
	  on memory-tight machines.  Note: We may be able to revert this
	  once we split compile.c.
	* ext/uvector/Makefile.in: Ditto for gauche--uvector.c

2023-06-06  Shiro Kawai  <shiro@acm.org>

	* src/precomp, lib/gauche/cgen/precomp.scm: Rename omit-source-info
	  keyword arg to omit-line-directives.  We'll add option to omit
	  debug source info in the output, so the previous name is too
	  confusing.
	  Although this flag is in the output of 'usage' of precomp command,
	  it has never been implemented as a command-line option; the flag
	  can be turned on via an environment variable, which is not
	  documented.  So we blatantly change the name without caring
	  the backard compatibility.

	* src/code.c (Scm_CompiledCodeFinishBuilder): Revive NOSOURCE
	  compiler flag (it's been ineffective after some big compiler
	  rewrite).
	  For now, we handle source-info just the same and discard them
	  at the last moment of the code generation.  We may as well ignore
	  source-info in earlier stage, but we expect using this option
	  is relatively rare so it may not worth doing so.  Let's see.

2023-06-05  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/procedure.scm: Renamed to procutil.scm for the
	  consistency.

2023-06-04  Shiro Kawai  <shiro@acm.org>

	* gc/: bumped bdwgc 8.2.4

2023-06-02  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/precomp.scm (serializable-debug-info): Attach
	  debug info to the precompiled codes.

	* src/vm.c (Scm_VMTakeSnapshot): Added.  Since VMDump calls high-level
	  output routine that may call back to Scheme code, the dump routine
	  itself may change VM state during dumping.  To prevent that, we
	  take snapshot of VM before dumping.

2023-05-29  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/numerical.scm, lib/gauche/logical.scm,
	  lib/gauche/signal.scm: Renamed to numutil.scm, logutil.scm and
	  sigutil.scm, respectively, for the consistency of autoloaded files.

2023-05-23  Shiro Kawai  <shiro@acm.org>

	* src/thread.c (Scm_ThreadTerminate): Support
	  SCM_THREAD_TERMINATE_SCHEDULE flag.
	* src/libthr.scm (thread-schedule-terminate!): Added.

	* lib/r7rs-setup.scm, src/libexc.scm, src/liblazy.scm:
	  Move raise-continuable and make-promise to the core, for
	  they are exported from srfi.226 as well.

2023-05-22  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/base64.scm (base64-decode): Add :strict keyword argument.

2023-05-20  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/mop/typed-slot.scm: Added experimentally.

2023-05-19  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/sequence.scm (inverse-permuter, unpermute): Added.
	  The names can be better.  Let's see.

2023-05-16  Shiro Kawai  <shiro@acm.org>

	* src/libio.scm (port-case-fold): Drop port-case-fold-set! (previously
	  undocumented) and replace (setter port-case-fold), for the API
	  consistency.  A few references to the old name in the source tree
	  are updated.  NB: lib/gauche/cgen/precomp.scm is used to compile
	  0.9.13, so it needs to work on both old and new gosh.  For now,
	  we use an ugly kludge for transition.
	  Also put port-case-fold in gauche.internal.  case-fold flag has
	  global effect and accidentally changing it can cause a wreak havoc.
	  There are already scope-delimited way to change the mode (#!fold-case
	  directive, or include-ci form).
	* 0.9.13_pre4, because of the above change.

2023-05-09  Shiro Kawai  <shiro@acm.org>

	* ext/package-templates/configure-compat: Remove compatibility hack.
	  Let's assume new modules are developed for 0.9.10 and later.

2023-05-08  Shiro Kawai  <shiro@acm.org>

	* src/main.c, src/libeval.scm (%invoke-other-version): Extend -v option
	  so that -v:VERSION tries to run VERSION, but if it can't find one,
	  falls back to the current version.

	* lib/gauche/fileutil.scm, src/libsys.scm: Move glob to libsys.scm.
	  Before, '%invoke-other-version' triggered autoload of fileutil,
	  but that caused some issue when the user use gosh -vVERSION
	  from the uninstalled source tree.

2023-05-01  Shiro Kawai  <shiro@acm.org>

	* src/libnum.scm: Dropped hidden real-only versions of elementary
	  functions, e.g. %sin, replacing with SRFI-94 real-sin etc.
	  They were never documented.  Now we document real-* version.
	* lib/compat/real-elementary-functions: Compatibility module to
	  provide the old names such as %sin etc.

2023-04-17  Shiro Kawai  <shiro@acm.org>

	* src/lazy.c (Scm_VMForce): Fix a race condition; there was a hazard
	  when one thread reads promise's state and goes to evaluate thunk,
	  while another thread changes them simultaneously.

2023-04-14  Shiro Kawai  <shiro@acm.org>

	* ext/gauche/unicode.scm (string-east-asian-width, string-take-width)
	  (string-drop-width): Added.

2023-04-13  Shiro Kawai  <shiro@acm.org>

	* src/class.c: Changed my mind.  Say :immutable instead of :init-once,
	  for the option is exacly for immutable slots.  Besides, init-once
	  is weird, for 'initialization' occurs once regardless of slot's
	  immutablility.  (Set-once would probably have been closer.)

2023-04-12  Shiro Kawai  <shiro@acm.org>

	* src/class.c: Support :init-once slot option.  This limits slot-set!
	  to a slot that's previously unbound.  If the slot already has a value,
	  an error is signaled.  This effectively works as an immutable
	  slot.  Note that the slot initialization calls the internal setter,
	  so we need to allow the first set!.

	* ext/threads, src/thread.c, src/mutex.c, src/libthr.scm,
	  src/gauche/thread.h: Move ext/threads into core.
	  Cf. https://github.com/shirok/Gauche/issues/893

2023-04-09  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/base64.scm (base64-encode-bytevector),
	  (base64-decode-bytevector): Added.  They depend on gauche.vport,
	  and their tests are done separately in ext/vport.

2023-04-05  Shiro Kawai  <shiro@acm.org>

	* src/compile-i.scm, src/vminsn.scm, src/vector.c: Allow uvector-ref
	  to be inlined.  UVEC-REF can now handle generic uvector.

2023-04-04  Shiro Kawai  <shiro@acm.org>

	* lib/math/simplex.scm: Allow any sequence to be b an c vectors;
	  we copy them internally anyway.

2023-03-27  Shiro Kawai  <shiro@acm.org>

	* 0.9.13_pre3

2023-03-25  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/base64.scm: Allow :digits keyword argument to specify
	  alternative digits.

	* src/vector.c (Scm_ReadUVector): Preliminary support of
	  SRFI-207 string-notated bytevectors.

2023-03-20  Shiro Kawai  <shiro@acm.org>

	* lib/math/simplex.scm: Added.  There are lots of room of optimization,
	  though it's working.

	* ext/uvector/matrix.scm (array-vector-mul, vector-array-mul):
	  Add (u)vector and array multiplication, for they appear frequently.
	  We may make array-mul to accept vector arguments, but it can be
	  done later.

2023-03-15  Shiro Kawai  <shiro@acm.org>

	* src/lazy.c (Scm_VMForce): Allowing multiple threads to force
	  a promise simultaneously, as SRFI-226 semantics.  We only guarantee
	  that the force value is always the same - the first delivered result
	  takes precedence.
	* src/compile-1.scm (delay): Support mv-delivering delay.

2023-03-11  Shiro Kawai  <shiro@acm.org>

	* src/lazy.c (Scm_MakePromise, Scm_VMForce): Run delayed thunk in
	  the parameterization of the time the promise is created.
	  This is for SRFI-226, but divergence from R7RS.
	  Note that this change breaks the current implementation of
	  SRFI-155 in a subtle way.  Once SRFI-226 is adopted, however,
	  SRFI-155 semantics is supported natively.  For now, we just
	  suppress the test that relies on the broken implementation.

2023-03-10  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/stub.scm (if, when): Warn when these obsoleted
	  stub toplevel forms are used.  These are never officially documented
	  and we switched to .if/.when for years ago, but just in case we
	  keep them a bit more.

2023-03-09  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/cise.scm (.error): Add CiSE macro to
	  generate #error cpp directive.  See libsys.scm for the use case.

	* src/compile-0.scm (define-simple-struct): Define macros and
	  cise-exprs that expands into slot offset.  This allows the
	  CiSE code to use slot offset without relying on literal numbers.
	  (See LVAR_* macros in compile.scm for the use case).

2023-03-07  Shiro Kawai  <shiro@acm.org>

	* src/libsys.scm (seconds+): Added (srfi-226)

2023-03-01  Shiro Kawai  <shiro@acm.org>

	* lib/srfi/235.scm: Start adding.

2023-02-28  Shiro Kawai  <shiro@acm.org>

	* src/libproc.scm (constantly): Allow to return multiple values,
	  adopting SRFI-235.
	* lib/gauche/procedure.scm (flip, swap): Added a couple of SRFI-235
	  procedures.

2023-02-27  Shiro Kawai  <shiro@acm.org>

	* src/libparam.scm (temporarily): 'with' -> 'temporarily', according
	  to srfi-226 revision.

2023-02-25  Shiro Kawai  <shiro@acm.org>

	* lib/control/plumbing.scm (plumbing): Add generic utility.
	  Simplify make-pump etc. just to take oports (without options).
	  If the user wants to specify options, they can use 'plumbing'.

2023-02-23  Shiro Kawai  <shiro@acm.org>

	* lib/math/const.scm: Add greek identifiers (π).  UTF-8 has become
	  ubiquitous and we don't need to hesitate using them.

2023-02-20  Shiro Kawai  <shiro@acm.org>

	* lib/control/plumbing.scm: Allow optional names to inlets/outlets
	  so that ports can be extracted from a plumbing by name.
	  NB: API of add-outlet-output-port! has changed.
	  We'll likely to change convenience utilities to accept names
	  as well.

2023-02-19  Shiro Kawai  <shiro@acm.org>

	* lib/srfi/239.scm: Add srfi-239 (documented).

2023-02-18  Shiro Kawai  <shiro@acm.org>

	* src/libsys.scm (time-comparator): Added.  Although <time> can be
	  compared with default-comparator, a separate comparator is handy
	  to be used to compose more complicated comparators (cf. srfi.228).
	  We also want date-comparator, but <date> is defined in srfi.19,
	  and we don't want to add bindings not defined in the srfi to
	  the srfi module.  We'll think where it should go.

2023-02-16  Shiro Kawai  <shiro@acm.org>

	* src/Makefile.in (BUILD_GOSH_VERSION): Give -v option to BUILD_GOSH
	  so that precompilation of core is guaranteed to be done with the
	  specified version of Gauche.  Without this, sometimes the changes
	  in the prerelease version caused build problems.

2023-02-10  Shiro Kawai  <shiro@acm.org>

	* src/libeval.scm (load): Change return value - on successful loading,
	  return the actual filename loaded.  It is useful, for 'load' tries
	  a few things to find the actual file (look for search paths, adding
	  file suffixes, etc.) so the actual file path may not be tha same
	  as the 'file' argument.
	  This is technically an incompatible change: Before, 'load' returns
	  #t on success, and it is documented.  We think returning pathname
	  is better, and the code that treats the return value as a
	  generalized boolean still works.

2023-02-09  Shiro Kawai  <shiro@acm.org>

	* src/portapi.c (Scm_Flush): Fix bug that stdout is locked
	  by the primoridal thread in REPL (or any thread that first
	  calls flush).  https://github.com/shirok/Gauche/issues/876

2023-02-07  Shiro Kawai  <shiro@acm.org>

	* src/srfis.scm (srfi-244): Supported (it's already in the core).

2023-02-01  Shiro Kawai  <shiro@acm.org>

	* src/precomp, lib/gauche/cgen/precomp.scm: Allow to suppress
	  #line directives with environment variable
	  GAUCHE_PRECOMP_OMIT_SOURCE_INFO.  Sometimes the error position
	  in *.scm is unreliable for troubleshooting.

	* ext/file/event.scm: Start adding file event API; inotify for
	  the starter.  We'll provide high-level API that hides
	  difference of subsystems.

2023-01-29  Shiro Kawai  <shiro@acm.org>

	* src/geninsn: Add feature to load/save insn to opcode map.
	  See https://github.com/shirok/Gauche/issues/869

2023-01-26  Shiro Kawai  <shiro@acm.org>

	* src/libfmt.scm (make-format-plural): Support ~P.

2023-01-24  Shiro Kawai  <shiro@acm.org>

	* src/libmacro.scm (define-class, define-generic, define-method):
	  Turn them into a macro rather than compiler-builtin, finally.
	  This, however, has a little side-effect; they expand to define
	  forms, so they can now appear in the declaration context,
	  not necessarily at the top-level.
	  We don't officially support non-toplevel use of these forms yet,
	  for these forms have global effect and we're not sure how they
	  should interact with lexical scope.

	* src/libobj.scm (define-method): Bind the method closure to a
	  module-local hidden toplevel variable, so that test-module
	  can find the method body and scan for undefined variable
	  references.
	  Note: This forces define-method to be on toplevel.  Although
	  it hasn't been explicitly documented, it's been assumed that
	  they're toplevel forms as the name suggests.  The code that has
	  been used define-method in non-toplevel raises an error after
	  this change; they should be rewritten to make define-method
	  toplevel.
	  Technically it can appear in the internal definition context,
	  but we're not sure about its semantics.

2023-01-23  Shiro Kawai  <shiro@acm.org>

	* src/number.c (Scm_SinPi): Make sure
	  (= (real-sinpi 0.25) (real-cospi 0.25)).

2023-01-22  Shiro Kawai  <shiro@acm.org>

	* lib/data/ulid.scm (make-ulid-generator): Use internal random source
	  when random-source argument is omitted.  Using default-random-source
	  causes ULID conflict for multiple runs if the user didn't randomize
	  it beforehand.
	  https://github.com/shirok/Gauche/issues/873

2023-01-20  Shiro Kawai  <shiro@acm.org>

	* src/compile-1.scm (pass1/body-rec): Make duplicate internal
	  definitions an error.
	  https://github.com/shirok/Gauche/issues/872

2023-01-19  Shiro Kawai  <shiro@acm.org>

	* libsrc/data/ring-buffer.scm (ring-buffer-room): API Added.

2023-01-18  Shiro Kawai  <shiro@acm.org>

	* lib/contro/plumbing.scm: Move tapping port from gauche.vport.

2023-01-15  Shiro Kawai  <shiro@acm.org>

	* ext/vport/vport.scm (open-tapping-port): Experimentally added.
	  We might make a separate module for it, so do not count on this.

2023-01-08  Shiro Kawai  <shiro@acm.org>

	* src/libnum.scm (negative-zero?): Rename undocumented '-zero?' to
	  'negative-zero?' and make it official.  Replaced internal use of
	  '-zero?' to 'negative-zero?'.

2023-01-07  Shiro Kawai  <shiro@acm.org>

	* src/libnum.scm: Change %expt -> real-expt etc.  The real-only
	  versions (%expt, %sin, etc.) are undocumented but used internally
	  when the domain and range are real.  SRFI-94 already defines
	  real-only names, so we name them accordingly and make them official.
	  NB: If an external program uses unofficial names, they would raise an
	  error.  If that causes a serious problem, we'll provide compatibility
	  layer.

	* src/libsys.scm (sys-strsignal): Added.

2023-01-04  Shiro Kawai  <shiro@acm.org>

	* lib/srfi/210.scm: Added SRFI-210.

	* src/libmacro.scm (set!-values): Allow improper list in the var list
	  for the consistency.

2023-01-02  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/fmtutil.scm: Support ~@r roman numeral formatter.

2022-12-29  Shiro Kawai  <shiro@acm.org>

	* src/libmacro.scm (rotate!): Added.  CL's rotatef.

2022-12-25  Shiro Kawai  <shiro@acm.org>

	* src/port.c, src/vm.c: Switch current-*-port and SCM_CUR* to
	  parameters; R7RS specifies them to be so, and we want new
	  parameterization scheme to work on these values too.
	  NB: This requires recompilation of extension modules, for
	  the code that refers to SCM_CUROUT etc. is compiled to refer
	  to the VM slots directly, which no longer exist.
	  This change may also affect performance; need to take benchmark.

2022-12-24  Shiro Kawai  <shiro@acm.org>

	* src/compile-i.scm (dynamic-wind): Optimized version of inlined
	  dynamic-wind incorrectly omitted POP-HANDLERS.  It's rare that
	  this optimization is triggered (after thunk must be a constant
	  lambda, which is not common), and probably that's why this
	  hasn't been revealed.
	  Existing code precompiled with 0.9.12 and before may contain
	  erroneous code (though it's very unlikely).

2022-12-22  Shiro Kawai  <shiro@acm.org>

	* lib/srfi/172.scm, lib/srfi/172/functional.scm: Added.

2022-12-21  Shiro Kawai  <shiro@acm.org>

	* libsrc/text/line-edit.scm (insert-closing-paren): Change paren
	  highlight.  Now it highlighs opening paren for a short period of
	  time when closing paren is inserted.

2022-12-11  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-*.scm, lib/srfi/*.scm: Make srfi/*.scm main implementation
	  files https://github.com/shirok/Gauche/issues/680

	* src/core.c (Scm_SimpleMain): Fix exit status alined with script
	  execution.  https://github.com/shirok/Gauche/issues/861

2022-12-10  Shiro Kawai  <shiro@acm.org>

	* src/libfmt.scm (formatter-lex): Support ~ + newline

	* lib/srfi-228.scm, src/srfis.scm: Add srfi-228.

2022-12-08  Shiro Kawai  <shiro@acm.org>

	* src/libfmt.scm: Add ~&.

	* src/libio.scm (fresh-line): As a side-effect from port column
	  counting, we can now easily have CL's fresh-line.

2022-12-06  Shiro Kawai  <shiro@acm.org>

	* src/libio.scm (port-link!, port-unlink!): Added.
	* src/port.c: Reset output column count when linked input port
	  reads '\n', so that ~:W indent correctly during interactive REPL.

2022-12-05  Shiro Kawai  <shiro@acm.org>

	* src/gauche/priv/portP.h, src/port.c: Add port linking.
	  Stdin and stdout is linked by default; reading from stdin
	  causes flushing stdout.

2022-12-04  Shiro Kawai  <shiro@acm.org>

	* src/libio.scm (port-column): Expose this to Scheme (but only for
	  gauche.internal module, for now)

	* src/libfmt.scm (make-format-pprint): Support ~:w (pretty print)
	  and ~@w.

2022-12-01  Shiro Kawai  <shiro@acm.org>

	* src/write.c (Scm_Vprintf): Add provisional support of %W (pprint).
	  We still need to figure out how to set indent.

2022-11-30  Shiro Kawai  <shiro@acm.org>

	* src/write.c, src/io.scm: Add indent slot to <write-controls>
	* lib/gauche/pprint.scm: Add indentation according to the indent
	  value of the controls.

2022-11-24  Shiro Kawai  <shiro@acm.org>

	* src/vm.c: Ensure dynamic handlers are invoked on a proper dynamic
	  environment.  This is important to ensure 'with' and delimited
	  continuations work together.
	  The entry of dynamic handler chain is changed.  They should be
	  treated opaque outside of vm.c.

2022-11-23  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/parameter.scm: Export parameterize as an alias of
	  parameterize/dynwind, so that the legacy code gets
	  backward-compatible parameterize.  New code shouldn't use this
	  module.

	* src/libparam.scm (parameterize/dynwind): Provide backward-compatible
	  parameterize under this name.

2022-11-22  Shiro Kawai  <shiro@acm.org>

	* src/libmacro.scm (independently), src/srfis.scm (srfi-236):
	  As srfi-236 is finalized, support this officially.  It's general
	  enough to be built-in.

2022-11-20  Shiro Kawai  <shiro@acm.org>

	* lib/scheme/comparator.scm: Incorporate srfi-162 as sell.

	* lib/compat/chibi-test.scm (chibi-test): Support test-equal.

2022-11-18  Shiro Kawai  <shiro@acm.org>

	* src/parameter.c, src/libparam.scm (current-parameterization),
	  (parameterization?, call-with-parameterization): Added.

2022-11-15  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/test/include.scm (test-include-r7): Added.  Make it easier
	  to include r7rs test script in Gauche tests.

2022-11-13  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-236.scm: Added.

2022-11-12  Shiro Kawai  <shiro@acm.org>

	* src/parameter.c: Change how parameter procedure keeps parameter
	  object.  Now we emply the same way as continuation procedure;
	  that is, SCM_PROCEDURE_INFO holds a unique uninterned symbol,
	  and the extractino procedure can use SCM_SUBR_DATA.
	  NB: With this change, parameter? returns #t for primitive parameter
	  procedures as well.  It should be.

	* src/libparam.scm (%parameterize): Start using dynamic env to keep
	  ordinary parameters.

2022-11-10  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/time.scm (time-these/report, report-time-results):
	  Allow measure/report using not only cpu times, but also real,
	  user or sys.

2022-11-04  Shiro Kawai  <shiro@acm.org>

	* src/compaux.c, src/libmacbase.scm: Remove syntactic closure support.
	  They haven't been used at all.

	* src/vm.c, src/class.c, src/libproc.scm (make-continuation-prompt-tag,
	  default-continuation-prompt-tag): Add continuation prompt tag.

2022-11-02  Shiro Kawai  <shiro@acm.org>

	* src/vm.c: Store exception handler in DENV.

2022-10-29  Shiro Kawai  <shiro@acm.org>

	* src/vm.c: VM inherits denv from calling thread.

	* src/list.c (Scm_AlistCopy): Implement in C.

2022-10-28  Shiro Kawai  <shiro@acm.org>

	* src/compile-*.scm: Support with-continuation-mark.

2022-10-27  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm ($DYNENV): New IForm node for supporting
	  continuation marks.

2022-10-20  Shiro Kawai  <shiro@acm.org>

	* src/parameter.c, ext/threads/threads.scm (make-thread-local):
	  Add srfi-226 thread-local APIs.

2022-10-19  Shiro Kawai  <shiro@acm.org>

	* src/gauche/priv/vmP.h (ScmEscapePoint),
	  src/vm.c (Scm_VMDefaultExceptionHandler, Scm_VMReraise),
	  src/libexc.scm (%reraise): Address the issue that escapePoint
	  in the floating chain loses pointer to the continuation frames.
	  https://github.com/shirok/Gauche/issues/852
	  We fell back to safe-but-slow option: Continuation chains are
	  saved as soon as default exception handler is invoked, so that
	  all active EPs point to contFrames on heap.

2022-10-03  Shiro Kawai  <shiro@acm.org>

	* src/libmacro.scm (quasirename): Attach source info of the
	  quasirename constructed lists.

2022-10-02  Shiro Kawai  <shiro@acm.org>

	* src/read.c (process_sharp_comma): Attach source info to the
	  output of sharp-comma constructor, if it yields a pair.
	  Notably, this results source info attached to string
	  interpolations.

2022-10-01  Shiro Kawai  <shiro@acm.org>

	* macro.c (compile_rule1, realize_template_rec): Carry over
	  source info of macro template and macro input.
	* libeva.scm (%show-stack-trace): Show all macro expansion
	  history along the source info.

2022-09-27  Shiro Kawai  <shiro@acm.org>

	* src/list.c (Scm_MakeImmutablePair): C API INCOMPATIBLE CHANGE:
	  Now it takes the third argument, attrs, being parallel to
	  Scm_MakeExtendedPair, for the consistency.  We expect the API
	  isn't used by external libraries, for the immutable pairs are
	  recent addition.
	* Bug fix on debug source info of quoted literals.
	  https://github.com/shirok/Gauche/issues/847

2022-09-25  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/vm/debugger.scm (debug-print-conditionally)
	  (debug-funcall-conditionally),
	  src/read.c (read_internal): Add "#??=" and "#??," debug helper
	  syntax, to print info only when condition is met.

2022-09-21  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/redefutil.scm (class-redefinition): Fix redefining
	  a class with redefined metaclass
	  https://github.com/shirok/Gauche/issues/845

	* src/libobj.scm (write-object <class>): Show 'redefined' for
	  class objects with custom metaclass.

2022-09-18  Shiro Kawai  <shiro@acm.org>

	* lib/data/range.scm (bitvector/bool-range, bitvector/int-range):
	  Added bitvector to range constructors.  Also revised <flat-range>
	  definition to allow raw-indexer customization and optimization.

2022-09-14  Shiro Kawai  <shiro@acm.org>

	* tools/tls/Makefile.in: Use mbedtls 3.2.1 for mbedtls-internal

	* src/portapi.c (Scm_Getz): Bug fix: We've treated bufport_filler
	  returning 0 as EOF, but that's not always the case---if the requested
	  size is 0, e.g. via (read-bytevector 0), returning 0 is a valid
	  return value without meaning EOF.

	* ext/tls/tls-mbed.c: Show string error message for mbedtls errors,
	  along the error code.

2022-08-26  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (Scm_VMApply0, etc.): Experimentally turn on subr
	  trampoline; if a subr is tail-called from another subr, and
	  the number of argument matches, then we skip the usual
	  argument folding & procedure dispatching sequence.

2022-08-14  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-222.scm: Added.

2022-08-12  Shiro Kawai  <shiro@acm.org>

	* libsrc/text/line-edit.scm (completion-command): Allow completion
	  with hyphenated prefxies, e.g. 'w-i-f' -> 'with-input-from-'.

2022-08-11  Shiro Kawai  <shiro@acm.org>

	* lib/text/segmented-match.scm (text.segmented-match): Added.

2022-08-09  Shiro Kawai  <shiro@acm.org>

	* doc/modutil.texi: Start adding text.multicolumn doc

	* lib/text/multicolumn.scm (layout-multicolumn): Make multicolumn
	  formatting two-step process for flexibility; layout-multicolumn
	  returns a list of text for each line, and display-multicolumn
	  uses it to print out the formatted text.

2022-08-06  Shiro Kawai  <shiro@acm.org>

	* src/libexc.scm, src/srfis.scm: Export missing identifiers from
	  srfi-35.

2022-08-04  Shiro Kawai  <shiro@acm.org>

	* src/libvec.scm (bitvector-any-value?, bitvector-every-value?):
	  Allow start/end optional args.

2022-08-03  Shiro Kawai  <shiro@acm.org>

	* src/vector.scm (bitvector-any-value?, bitvector-every-value?):
	  Rename bitvector-any? and bitvector-every? and let them take the
	  bit value to search.  This eliminates the need of bitvector-none?,
	  and also make it symmetric (we can test 'having at least 1 zero).

2022-07-30  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-209.scm: Added, passes the tests (tests depend on
	  gauche.bitvector, so it is tested in ext/gauche).

2022-07-29  Shiro Kawai  <shiro@acm.org>

	* lib/scheme/regex.scm (scheme.regex): Export missing regex?
	  https://github.com/shirok/Gauche/pull/836

2022-07-28  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (POP_CONT): Avoid copying C continuation data into
	  machine stack.  The data argument of Ccont proc now points
	  direclty to the continuation's data field.  This should be ok,
	  for subrs aren't supposed to modify these fields.
	  NB: There may be an issue if void* and ScmObj are different in size,
	  though its very unlikely in modern platforms.

2022-07-14  Shiro Kawai  <shiro@acm.org>

	* ext/srfi/srfi-178.scm, ext/gauche/bitvector.scm, lib/srfi-178.scm:
	  Move bitvector lib as gauche.bitvector, for we'll add some more
	  bitvector utilities.  srfi-178 just reexport srfi procedures.

2022-07-12  Shiro Kawai  <shiro@acm.org>

	* src/libvec.scm (bitvector-any?, bitvector-every?, bitvector-none?):
	  These are not in srfi-178 but handy to have.

2022-07-06  Shiro Kawai  <shiro@acm.org>

	* doc/corelib.texi (format): Description of ~nR was missing.

	* lib/gauche/cgen/stub.scm (define-cclass): Fix cise issue in
	  define-cclass https://github.com/shirok/Gauche/issues/832

2022-07-04  Shiro Kawai  <shiro@acm.org>

	* ext/mt-random: Make mersenne twister RNG thread-safe by default.

2022-07-03  Shiro Kawai  <shiro@acm.org>

	* lib/data/ulid.scm (ulid): Drop record type name from export list.
	  It doesn't follow Gauche's class naming convention.  We may
	  reintroduce it as <ulid> in future, but let's see.

2022-06-30  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive.scm (describe <generic>): Show each method's
	  source location if available.

	* src/libobj.scm (%expand-define-method),
	  src/class.c (method_initialize): Set source location info to
	  the list in <method>'info, so that it can be retrieved by
	  source-info.

2022-06-28  Shiro Kawai  <shiro@acm.org>

	* src/libmacro.scm (assume-type): support optional msg objs ...
	  arguments for the custom error message.
	  (assume): Use custom error message if provided.

	* src/libtype.scm, src/number.c: Native type support for
	  <intptr_t> and <uintptr_t>.

2022-06-27  Shiro Kawai  <shiro@acm.org>

	* src/libalpha.scm (make-case-lambda): Make procedure-info of
	  case-lambda more readable.  It is for human reader, and having
	  #(#<closure ...> ...) is not helpful.  Now it is
	  (<name> #(<formals> ...)).

2022-06-25  Shiro Kawai  <shiro@acm.org>

	* Release 0.9.12

2022-06-21  Shiro Kawai  <shiro@acm.org>

	* src/number.c (read_number): Support srfi-169, underscores in numbers.
	  Technically this introduces incompatibility:
	  - Tokens such as 1_2_3 is now read as a number 123, instead of
	    a symbol.
	  - Underscores in prefexed numeric literals must obey srfi-169
	    instead of simply being ignored.  #x_dead_beef_ was ok before,
	    but no longer.

2022-06-19  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/uvlib.scm.tmpl (@vector-segment): Check arg to avoid
	  infinite loop. https://github.com/shirok/Gauche/issues/828

2022-06-06  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-232.scm: Add srfi-232 Flexible curried procedures.

2022-06-05  Shiro Kawai  <shiro@acm.org>

	* src/compile-4.scm (pass4/scan): Fix incorrect free-variable
	  propagation in $clambda node.
	  https://github.com/shirok/Gauche/issues/826

2022-06-04  Shiro Kawai  <shiro@acm.org>

	* src/liblist.scm (num-pairs): Added.

2022-05-30  Shiro Kawai  <shiro@acm.org>

	* test/net.scm: Recover gauche.net test

2022-05-29  Shiro Kawai  <shiro@acm.org>

	* src/list.c (Scm_LastPair): Detect circular list.  It is not required
	  in the spec (last and last-pair), but doing so is cheap and it's
	  something nice to have.

2022-05-28  Shiro Kawai  <shiro@acm.org>

	* src/libvec.scm (make-s8vector etc.), ext/uvector/uvlib.scm.tmpl:
	  Move constructors to the core.

2022-05-21  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/connection.scm, lib/gauche/netutil.scm: Moved
	  connection protocol implementation to gauche.net.  Keep
	  gauche.connection just for the backward compatibility.

2022-05-20  Shiro Kawai  <shiro@acm.org>

	* ext/net, src/libnet.scm, src/net.c, src/netaddr.c, src/netdb.c:
	  Move ext/net into core.  Sometimes it's handy for the extension
	  modules to be able to call net-related C functions.

2022-05-16  Shiro Kawai  <shiro@acm.org>

	* ext/tls/tls.ac: Do not compile axtls by default.  Preparing
	  to drop axtls support in future releases.

2022-05-10  Shiro Kawai  <shiro@acm.org>

	* src/signal.c (Scm_SigWait): Avoid using signal number 0 for
	  sigismember/sigdelset.  This causes failure on OSX Monterey.

2022-04-21  Shiro Kawai  <shiro@acm.org>

	* ext/srfi/srfi-19.scm: Define object-compare for <date>.

2022-04-20  Shiro Kawai  <shiro@acm.org>

	* lib/util/temporal-relation.scm: Added.

2022-04-18  Shiro Kawai  <shiro@acm.org>

	* configure.ac: 0.9.12_pre1

2022-04-17  Shiro Kawai  <shiro@acm.org>

	* src/liblist.scm (list-ref): Better error message.
	  (See comments in https://github.com/shirok/Gauche/issues/814)

2022-04-16  Shiro Kawai  <shiro@acm.org>

	* src/libmacro.scm (push-unique!): Added, finally.  CL's pushnew.
	  I've been resisting the temptation to add this, for most of the
	  times it doesn't bother me much to write out the logic explicitly.
	  However, I hit the cases where this makes code much cleaner
	  enough times.

2022-04-07  Shiro Kawai  <shiro@acm.org>

	* src/main.c (main): Noticed *program-name* and *argv* aren't defined
	  when gosh invoked as REPL.  Although they are of little use in REPL,
	  leaving them undefined may cause some inconvenience.  We just
	  define "" as *program-name* and () as *argv*.

2022-04-06  Shiro Kawai  <shiro@acm.org>

	* ext/tls/tls.c: Fix fd leak in <ax-tls>
	  https://github.com/shirok/Gauche/issues/817

2022-03-21  Shiro Kawai  <shiro@acm.org>

	* lib/control/thread-pool.scm (wait-all): Fix race condition
	  ( https://github.com/shirok/Gauche/issues/812 )

2022-03-16  Shiro Kawai  <shiro@acm.org>

	* src/system.c (Scm_StrfTime): MinGW's strftime() returns a
	  multibyte string in system's language settings, so its handling
	  is tricky.  We introduced a compatibility layer.

	* src/libsys.scm (sys-setlocale): Allow #f for locale argument
	  (corresponding to passing NULL in C API).  It can be used to
	  obtain the current locale.

2022-03-10  Shiro Kawai  <shiro@acm.org>

	* src/write.c, src/libfmt.scm: If string is truncated within double
	  quotes, add '"...' (instead of ' ..."' as before).  The normal
	  truncation is ' ...' (a whitespace before dots), so it gives a
	  clue that the string is truncated.   We also support the same
	  format in Scm_Printf().

2022-03-09  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/precomp.scm: Revert commit #f5577697cf - this
	  appears no longer needed to inline procedures within the same
	  compilation unit during precompilation.

2022-03-06  Shiro Kawai  <shiro@acm.org>

	* src/write.c (vprintf_pass2): Fix truncation of %S and %A - it looked
	  like we were in the middle of the change and then forgot to pick
	  it up.

2022-03-05  Shiro Kawai  <shiro@acm.org>

	* src/libfmt.scm (chop-and-out): Make 'truncation' format directive
	  recognize an open double quote and close it properly even if
	  the content is truncated.  This will prevent font colorlizer
	  (e.g. Emacs Scheme mode) from being messed up by unclosed
	  double quotes caused by truncation.

2022-02-26  Shiro Kawai  <shiro@acm.org>

	* src/compile-2.scm (pass2/$LET): Lift component closures of locally
	  defined case-lambda into the same level of environment.  Expecting
	  the later stage of case-lambda optimization to become easier.
	  Note that this changes ordinary let frame to letrec frame (since
	  the newly introduced variable is referred to by the case-lambda
	  construction in the same environment).  We expect such conversion
	  would occur rarely (if local case-lambda is introduced by internal
	  defines, the frame is already letrec*.)

2022-02-21  Shiro Kawai  <shiro@acm.org>

	* src/libalpha.scm (case-lambda-decompose): Rename from case-lambda-info
	  (too vague).  Use new %case-lambda-info so that it can have definite
	  info, instead of relying procedure-info slot.
	  This procedure hasn't been public, so name change shouldn't affect
	  existing code.  We may come up a better name later.

2022-02-20  Shiro Kawai  <shiro@acm.org>

	* src/compile-1.scm, src/libalpha.scm: Global case-lambda inliner.
	  Now case-lambda procedure can be define-inline'd, and if the call
	  site knows the number of arguments, it preselects the apprpricate
	  branch and direclty inlines it.

2022-02-15  Shiro Kawai  <shiro@acm.org>

	* src/libalpha.scm (make-case-lambda): No longer look at 'formals'
	  argument; the info can be extracted from closures.

2022-02-14  Shiro Kawai  <shiro@acm.org>

	* src/number.c (Scm_NumCmp): Make sure '=' transitivity is kept
	  in exact v inexact comparison.
	  https://github.com/shirok/Gauche/issues/805

2022-02-12  Shiro Kawai  <shiro@acm.org>

	* text/line-edit.scm: Add whitespace after the completed word if
	  the completion returns a single definite result.  It is indicated
	  by the lister callback returning a string, rather than a list.
	  Note that we need to distinguish the case when there's only one
	  candidate but further search is possible (e.g. completing a directory
	  name when searching the actula file).

2022-02-11  Shiro Kawai  <shiro@acm.org>

	* data/ulid.scm: Added.  Port from https://github.com/shirok/scheme-ulid

2022-02-10  Shiro Kawai  <shiro@acm.org>

	* gc: Bumped bdwgc 8.0.6

2022-02-09  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/libutil.scm (library-fold): Rewrote on top of glob-fold.
	  This allows extended glob pattern such as {} and **.

	* lib/gauche/fileutil.scm (glob-fold): Add prefix keyword arg.

2022-02-02  Shiro Kawai  <shiro@acm.org>

	* src/read.c (Scm_CharWordConstituent),
	  src/libio.scm (char-word-consituent?): Expose these for they are
	  generally useful to write something that deal with Scheme names.

2022-01-30  Shiro Kawai  <shiro@acm.org>

	* libsrc/text/gap-buffer.scm
	  (gap-buffer-contains, gap-buffer-looking-at?): Added.

	* src/libstr.scm (opt-substring): Rename %maybe-substring opt-substring
	  and officially support it in #<module gauche>.  It is generally
	  useful.

2022-01-23  Shiro Kawai  <shiro@acm.org>

	* libsrc/text/line-edit.scm: Some improvement of completion.  Now
	  if there're multiple candidate and TAB is typed twice, the candidate
	  list is displayed.

	* lib/text/multicolumn.scm: Added

2022-01-21  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-227.scm: Added srfi-227.

2022-01-18  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/editable-reader.scm: Implement a rudimental symbol
	  completion.  We'll experiment for a while to see what's best
	  in REPL.

2022-01-16  Shiro Kawai  <shiro@acm.org>

	* libsrc/text/line-edit.scm: Add a hook for completion.

	* libsrc/text/gap-buffer: Drop gap-buffer-gap-start and
	  gap-buffer-gap-end.  They reveals internals unnecessarily.  They
	  weren't documented, and have only been used for testing.
	  (gap-buffer-pos-at-end?): Added.

2022-01-13  Shiro Kawai  <shiro@acm.org>

	* src/compile-1.scm (case-lambda): Change case-lambda handling.
	  Instead of expanding to the call for make-case-lambda in pass1,
	  we create $CLAMBDA node and carry it up to pass5.  This will allow
	  more optimizations.

2022-01-05  Shiro Kawai  <shiro@acm.org>

	* src/mmap.c (Scm_SysMmapWX): Separate writable pages and executable
	  page if PaX MPROTEXT is active.

2022-01-04  Shiro Kawai  <shiro@acm.org>

	* src/list-ext-objects.sh: Allow to take extra directories to scan
	  object files to archive.
	* src/Makefile.in, tools/tls/Makefile.in:
	  If --with-tls=mbedtls-internal, scan tools/tls to archive mbed
	  object files in the static library.
	  Cf. https://github.com/shirok/Gauche/issues/802

2021-12-28  Shiro Kawai  <shiro@acm.org>

	* Release 0.9.11-p1: A "patch" release fixing mbedtls-internal issue.

	* ext/tls/tls.ac: Fix build defect when internal mbedtls is used
	  https://github.com/shirok/Gauche/issues/799

2021-12-23  Shiro Kawai  <shiro@acm.org>

	* Release 0.9.11

2021-12-16  Shiro Kawai  <shiro@acm.org>

	* src/libsys.scm (sys-mmap, <memory-region>): Improve mmap API.
	  size argument needs to be mandatory (there's no reasonable default).
	  Expose fields of <memory-region> for introspection.

2021-12-14  Shiro Kawai  <shiro@acm.org>

	* ext/tls/tls-mbed.c: Support MbedTLS 3.0.  This is a partial support:
	  we need tls-bind to allow TLS-enabled server.  But at least this one
	  works as a client.

2021-12-03  Shiro Kawai  <shiro@acm.org>

	* src/libio.scm (%write-walk-rec): Handle circular reference through
	  boxes.  https://github.com/shirok/Gauche/issues/787

2021-12-01  Shiro Kawai  <shiro@acm.org>

	* check-build-version, configure.ac, Makefile.in: Before generating
	  files by BUILD_GOSH, check if it is the latest release.  With this,
	  the user who accidentally try to compile from the repo using older
	  Gauche will be told so upfront, instead of getting an misterious
	  error in the middle of building.
	  The required BUILD_GOSH version is kept in configure.ac, right
	  below the AC_INIT line.  Don't forget to update when you make
	  a new release.

2021-11-23  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/precomp.scm (handle-define-inline): Fix that
	  define-inline'ed procedures weren't expanded within the same
	  compilation unit.  We need to let the compiling enviornment know
	  about the inlined procedures.

2021-11-22  Shiro Kawai  <shiro@acm.org>

	* src/libmacro.scm (cond-expand): EXPERIMENTALLY add 'package'
	  clause to test package existence and its version.  A special
	  package name 'gauche' can be used to check running Gauche
	  version.  Let's see how it goes.

2021-11-15  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h (ScmProcedure), src/proc.c (Scm__CopyProcedure):
	  Use the reserved slot of ScmProcedure as tags-alist.
	  We can keep srfi-229 procedure tag there, and more in future.
	  INCOMPATIBLE CHANGE: We make Scm_CopyProcedure private, moved
	  to priv/procP.h and renamed to Scm__CopyProcedure.  Use code
	  shouldn't need to use it, for procedures are immutable entity
	  and copying shouldn't make difference.  It is only used internally
	  to do certain bookkeeping.

	* lib/srfi-229.scm: Added.

2021-11-11  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/stub.scm (make-array-getter-setter): Support
	  treating u8int_t array in cstruct as <u8vector>.  Eventually
	  we'll extend it to other uniform vectors, and this is the first
	  step.
	  (define-cproc): Allow '_ in the arguments to indicate unused args.

	* lib/gauche/cgen/cise.scm: (define-cenum): Added.  This has been
	  in Gauche-gl for a while.

2021-11-10  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/cise.scm: Allow '_' as an unused argument in
	  define-cfn, so that we don't need a dummy cast expression to
	  suppress 'unused argument' warnings.
	  We also need the similar stuff for define-cproc and define-cmethod,
	  but the handling of arguments differ a lot.  So, maybe later.

2021-11-07  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/stub.scm: Rename define-type to declare-stub-type.
	  Make it clear that it is merely a hint to the stub generator,
	  only effective during a single stub file processing.
	  (define-cclass): Let it handle declare-stub-type, even if it needs
	  custom c-predicate name or unboxer name.
	  (define-cstruct): Incorporated define-cstruct, an easier stub
	  interface for C struct.

2021-11-05  Shiro Kawai  <shiro@acm.org>

	* src/libtype.scm (ScmNativeType): Let it keep C type name as well.
	  The long-term plan is to integrate stub types to the built-in type
	  system, though we'll still keep some info outside of the built-in
	  types (e.g. C notation of boxer/unboxer won't be used except stub
	  generators, so no need to carry it around in the <native-type>).

	* lib/gauche/cgen/type.scm: Keep reference to the actual Scheme type
	  in the stub type.  Changed API of make-cgen-type.

2021-10-27  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/http.scm: Use new tls-connect interface that lets TLS
	  module opens the socket.  This allows proper use of mbedTLS.

	* ext/*/Makefile.in: Adjust GENERATED and CONFIG_GENERATED macros
	  to the src/*.  The 'distcclean' target removes CONFIG_GENERATED
	  (e.g. Makefile), and 'maintainer-clean' removes GENERATED as well.
	  Before this change, a build after distclean caused an error
	  while building ext/gauche, for unicode-attr.scm is removed by
	  distclean but not regenerated since src/char_attr.c exists.
	  Also, renamed GENERATED -> PREGENERATED to avoid confusion.

	* lib/rfc/http (start-connection): When no TLS module is available,
	  raise an error saying so, rather than letting rfc.tls module
	  throw an obscure error.
	  Cf. https://github.com/shirok/Gauche/issues/784
	  NB: rfc.tls is loaded by cond-expand gauche.net.tls, so we don't
	  bother to make it autoload.

2021-10-24  Shiro Kawai  <shiro@acm.org>

	* ext/digest/sha2.c (SHA1_End): Fix strict aliasing violation.
	  The original code yields incorrect binary with gcc 11.2 when
	  compiled with -O2.

2021-10-03  Shiro Kawai  <shiro@acm.org>

	* src/gauche/priv/bignumP.h: Make bignum.h private.  It was never
	  intended for public use.  Technically this is compatiblity-breaking,
	  but if the user code directly uses bignum API, there's something wrong.

2021-09-28  Shiro Kawai  <shiro@acm.org>

	* lib/data/random.scm (random-data-random-source): A parameter to
	  keep the current random source.  Previous random-state thingy was
	  awkward and not compatible to srfi-194.

	* ext/mt-random: Add mt-random-get-seed

2021-09-07  Shiro Kawai  <shiro@acm.org>

	* src/gauche/vm/debugger.scm, src/read.c: Experimentally implemented
	  per-thread debug logging.  #?@=expr records evaluation of expr like
	  #?=, but the output goes to per-thread file, with timestamp.
	  This prevents logs to be mixed up.

	* ext/threads/threads.scm (latch-clear!): Added.

2021-09-03  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive.scm (describe): Add (describe <rational>).
	* src/libnum.scm (ratnum?): Added.

2021-09-01  Shiro Kawai  <shiro@acm.org>

	* ext/threads/threads.scm (thread-try-start!): Added. A thread can
	  be terminated before it is started.  thread-start! raises an error
	  when it is applied on such a thread.  However, we may want to just
	  ignore such case.

2021-08-29  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive.scm (describe): Add (describe <real>)
	  to describe flonum.

	* ext/threads/threads.c (Scm_TerminateThread): Add flags argument, and
	  allow to choose forcible/non-forcible termination.
	* ext/threads/threads.scm (thread-terminate!): Make non-forcible
	  termination default.  Forcible termination has no guarantee the
	  process state is sane afterwards, so it should be reserved for
	  absolutely desperate situation.   We expect non-forcible termination
	  shows little difference from forcible termination, for the program
	  will go on anyways---the only difference should be the hanged thread
	  remains in the process.

2021-08-28  Shiro Kawai  <shiro@acm.org>

	* src/gauche-cesconv.in: Add --in-place option.

2021-08-24  Shiro Kawai  <shiro@acm.org>

	* src/boolean.c (Scm_EqvP): Let (eqv? -0.0 0.0) #f.  The spec of eqv?
	  has been changed since R5RS; in R7RS, it must return #f if two objects
	  are numbers and it yields different results with Scheme's standard
	  arithmetic operations.
	  Subsequently, (equal? -0.0 0.0) also returns #f.
	* src/numebr.c: Make sure integer divisions and roundings never return
	  -0.0.  It complicates things when the result is compared to 0.0
	   with equal?.

2021-08-22  Shiro Kawai  <shiro@acm.org>

	* src/number.c (scm_abs): Fix: (abs -0.0) returned -0.0.  Oops.

	* ext/srfi/srfi-19.scm: Define object-equal? on <date>.

2021-08-15  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-69.scm (hash-table-hash-function): The returned procedure's
	  second argument is now optional, for the compatibility with srfi-128.
	  https://github.com/shirok/Gauche/issues/777

2021-08-11  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-197.scm: Added (reference implementation)

2021-08-06  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/test/diff.scm (test*/diff): Renamed from test*-diff.
	  Use unified diff instead of context diff.  Handle the case
	  when the result isn't a string.

2021-08-05  Shiro Kawai  <shiro@acm.org>

	* lib/util/lcs.scm (lcs-edit-list/unified),
	  lib/text/diff.scm (diff-report/unified): Also added unified diff.

2021-08-03  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/stub.scm (cgen-genstub): Add output-directory
	  keyword argument.

2021-08-02  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/test.scm: Save failure report procedure in
	  *discrepancy-list* as well, so that we can report in the same
	  format in the test summary.  test-fail++ is enhanced to
	  take the optioanl report procedure; it's optional to keep the
	  backward compatibility.
	  Note the report procedure output is slightly changed.  The prefix
	  "ERROR: GOT " and the last newline is printed by the test framework
	  now, so the report procedure only need to display the content.
	  (prim-test): Change the optional argument order.  'hook' argument will
	  be rarely used (it's to adapt other test frameworks to Gauche), so
	  it will make more sense to have it last.

2021-08-01  Shiro Kawai  <shiro@acm.org>

	* lib/text/diff.scm (diff-report/context): Added.

	* lib/util/lcs.scm (lcs-edit-list/context): Add 'context diff'
	  functonality.

2021-07-29  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/test/diff.scm (test*-diff): Add a utility that reports
	  diff of expected and actual results.  It's a lot easier to spot
	  what went wrong than the default output.

2021-07-28  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/test.scm (test-report): Add an optional 'report' arg to
	  prim-test, test and test*, to customize failure reporting.

2021-07-27  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/test.scm (test-remove-files, test-with-temporary-directory):
	  Added.  test-remove-files is effectively the same as remove-files in
	  file.util, and only for the tests that can't rely on file.util.
	  test-with-temporary-directory is generally useful.

2021-07-24  Shiro Kawai  <shiro@acm.org>

	* src/gauche/priv/nativeP.h (SCM_ALIGNOF): Added.

2021-07-23  Shiro Kawai  <shiro@acm.org>

	* src/libtype.scm: Change <stub-type> -> <native-type>.  It'll be
	  the basis of FFI type system.

2021-07-22  Shiro Kawai  <shiro@acm.org>

	* ext/srfi/srfi-19.scm (describe): Let (describe <time>) show in
	  user-friendly time units.  If it's a point of time, we show it
	  in the date format, and if it's a duration, we show it in
	  days/hours/minutes/seconds.

2021-07-19  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive.scm (describe): Show type info when describing
	  procedures.

2021-07-17  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/record.scm (define-record-type, make-rtd): Set
	  defined-modules slot of the newly created record type.

2021-07-16  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/stub.scm: Save cproc's type info as a vector
	  (we drop the type-string, for we need module info.)
	* src/libproc.scm (procedure-type): Returns descriptive type of the
	  procedure.  If the procedure is subr, type info is reconstructed
	  from the saved type hint.

2021-07-12  Shiro Kawai  <shiro@acm.org>

	* src/libobj.scm (subclass?), src/libtype.scm (subtype?): Move subtype?
	  to libtype.scm, for it needs to handle types other than classes.
	  The existing class-only predicate is renamed to subclass?.  It is
	  only supposed to be used internal business; the user can keep using
	  subtype?, which is upper-compatible to subclass?.
	  For now, subtype? handles <stub-type> and <proxy-type>.  We'll
	  enhance it to handel <descriptive-type> later.

2021-07-10  Shiro Kawai  <shiro@acm.org>

	* Use <double> instead of <real> as a stub-type expecting C double.
	  <real> in Scheme world includes bignums and rationals, and coercing
	  it into C double is not a right thing.  Eventually we use <real>
	  type restriction to check the input is Scheme real number, but
	  pass it as ScmObj to the C world.

2021-07-08  Shiro Kawai  <shiro@acm.org>

	* src/class.c (Scm_SubclassP): Rename Scm_SubtypeP to Scm_SubclassP;
	  now that we have types other than classes, SubtypeP does no longer
	  do what the name suggests.  The Scheme API subtype? will be
	  enhanced to handle types as well.

2021-07-06  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-42: Support :range qualifier (srfi-196).

2021-07-05  Shiro Kawai  <shiro@acm.org>

	* lib/data/range.scm: Move the implementation of srfi-196 here, for
	  we want to provide more range operations better integrated in
	  Gauche.  Srfi-196 re-exports subset of data.range.

	* lib/srfi-196.scm, test/include/srfi-196-test.scm: Finishing srfi-196.

2021-07-04  Shiro Kawai  <shiro@acm.org>

	* src/libnum.scm (<=:<, <:<=): Added open-closed/closed-open range
	  comparator.  Tired of writing (and (<= x y) (< y z)) etc.  And the
	  symbol is kind of cute (like squid?).

2021-06-22  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/stub.scm (cclass-emit-standard-decls): The type check
	  macro generated by define-cclass now use SCM_ISA instead of
	  SCM_XTYPEP (so it can recognize subclasses).  We don't think this
	  affects existing code, but note it here just in case.

2021-06-21  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h, src/class.c, src/libtype.scm: Introduced <type>
	  abstract class and reorganize class hierarchies.  Now <class>,
	  <descriptive-type>, and <proxy-type> inherits <type>, for they all
	  behave as types.  <descriptive-type> (formerly <type-instance-meta>)
	  is no longer a <class>, for they don't define instances in any ways.

2021-06-15  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/literal.scm: Allow class object to appear in the
	  literals of precompiled code.  The class object is looked up based
	  on its name and defined-module.  The descriptive type instance
	  is reconstructed in the initialization code.

	* src/compile-t.scm: Start adding compile-time type handling.

	* src/class.c (init_class): Make bindings of statically initialized
	  classes inlinable, to use type information at compile-time.

2021-06-07  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-221.scm: Support srfi-221

	* lib/srfi-217.scm: Support srfi-217

2021-06-06  Shiro Kawai  <shiro@acm.org>

	* src/libomega.scm (object-equal? <comparator>): Fixed a long-standing
	  bug - it didn't work if the flavor is 'ordering.

2021-06-04  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/treeutil.scm (tree-map->generator/key-range): Added.

2021-05-30  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/treeutil.scm (tree-map-seek-right): Added.

	* libsrc/gauche/dictionary.scm (dict-seek),
	  src/libdict.scm (hash-table-seek),
	  lib/gauche/treeutil.scm (tree-map-seek): Reversed failure and success
	  arguments, to match SRFI's convention (esp. *-search procedures).
	  Technically this is an incompatible change, but those
	  procedures are still unofficial and undocumented.  The name '*-seek'
	  is still provisional.

2021-05-28  Shiro Kawai  <shiro@acm.org>

	* lib/data/heap.scm (binary-heap-find): Change argument order to
	  align other *-find API (except hash-table-find, which is peculiar).
	  Old API is still recognized by the argument type.

2021-05-26  Shiro Kawai  <shiro@acm.org>

	* ext/sparse (sparse-vector-find, sparse-table-find): Added.
	  The API may be reconsidered, for there are some variations
	  in the 'find' and 'any' APIs.

2021-05-23  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (global-call-type): Recognize type constructor expr.
	  For now, we don't do nothing in the compiler and leave it to the
	  runtime, but will switch later.

	* src/libalpha.scm (%transfer-binding), src/libobj.scm, src/libtype.scm:
	  Replace the kludgy macro 'insert-bindings' with a cproc, for we
	  need to transfer binding flags as well.  It is only available
	  during initialization.

2021-05-21  Shiro Kawai  <shiro@acm.org>

	* src/class.c, src/gauche.h (SCM_CLASS_METACLASS_CPL): Added to
	  initialize builtin metaclass easier.

2021-05-17  Shiro Kawai  <shiro@acm.org>

	* configure.ac, src/gauche.h: Bumped ABI/ABI version to 0.98.
	  We'll tweak binary ABIs in subsequent commits until 0.9.11 release.
	  Don't expect the extensions built with 0.9.10 to work; they must be
	  recompiled.  If you're using HEAD with other extensions,
	  stay with 0.9.10, or configure with --with-abi-version=97

	* 0.9.11_pre1

2021-05-16  Shiro Kawai  <shiro@acm.org>

	* ext/srfi/srfi-19.scm (date->string): Fix ~V to behave as specified
	  in ISO 8601. https://github.com/shirok/Gauche/issues/763
	  NB: Srfi is vague about how date-week-number should behave.  We may
	  need to change that, too.

2021-05-15  Shiro Kawai  <shiro@acm.org>

	* src/compile-1.scm (er-macro-transformer): Experimentally enable
	  identifier macro (set! magic hasn't done yet).  The public API is
	  still fluid; keyword arguments for macro seems awkward.  We may
	  give a different macro name.

2021-05-14  Shiro Kawai  <shiro@acm.org>

	* src/compile-1.scm (pass1),
	  src/libmacbase.scm (call-id-macro-expander),
	  src/gauche/priv/macroP.h (SCM_MACRO_IDENTIFIER): Basis of supporting
	  identifier macro.  This is an initial step.  The means to create
	  identifier macros will come next.

2021-05-13  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (cenv-lookup): No longer distinguish 'lookup as
	  syntax' and 'lookup as variable'.  This doesn't change
	  RnRS valid programs, but programs that depend on previous
	  (non-standard) behavior may be affected.
	  The distinction concerns the resolution of variable that appear
	  at non-head position.  In pre-R6RS era, macro keyword can only be
	  valid when it appears at the head of the list.  So when we looked
	  up a variable that doesn't appear at the head, we ignored local
	  macro bindings.  As an introduction of identifier macros in R6RS
	  that's no longer the case.  Although Gauche hasn't supported
	  identifier macros, we see some identifier-related srfis recently
	  and it is a good time to align the semantics.
	  Here's an example that shows the difference:
	  (let ((a 0))
	    (let-syntax ((a (syntax-rules () ((_ x) '(a x)))))
	      (list a)))  ;-> used to (0), now ERROR: invalid macro use

2021-05-12  Shiro Kawai  <shiro@acm.org>

	* src/gen-unicode.scm, ext/gauche/unicode.scm: Generate break property
	  symbols in unicode-attr.scm, instead of unicode_attr.h.  With the
	  latter, those symbols won't be available until runtime, preventing
	  some compile-time compuation.

	* src/precomp, lib/gauche/cgen/precomp.scm: Make precomp recognize -I
	  option.  This is mainly for 'include' form in the source; when
	  the build is out-of-tree and the source includes generated files,
	  it can be that the location of includer (srcdir) and the location
	  of includee (builddir) differ.

2021-05-11  Shiro Kawai  <shiro@acm.org>

	* src/gen-unicode.scm, ext/gauche/unicode.scm: Catch up word break
	  algorithm to Unicode 13.

2021-05-04  Shiro Kawai  <shiro@acm.org>

	* ext/windows/windows.scm etc.: Improve windows console handling
	  by @Hamayama https://github.com/shirok/Gauche/pull/756
	* src/libsys.scm: Fix Windows home directory handling
	  by @Hamayama https://github.com/shirok/Gauche/pull/757
	* ext/charconv/jconv.c: Fix utf-16 surrogate handling
	  by @Hamayama https://github.com/shirok/Gauche/pull/758

	* lib/text/unicode/udc.scm: Add 'ExtPict' from emoji-data.txt in
	  grapheme boundary info.
	* ext/gauche/unicode.scm: Support new grapheme break rules
	  (GB11, GB12, GB13) for Unicode 13.

2021-04-24  Shiro Kawai  <shiro@acm.org>

	* src/libobj.scm (%expand-define-class),
	  src/gloc.c (Scm_GlocSupersedableP): We make class definition
	  "inlinable" binding, to ease the compiler to do type-based
	  work.  Class redefinition needs to alter this inlinable binding,
	  so we specially allow such rebinding.

2021-04-23  Shiro Kawai  <shiro@acm.org>

	* ext/threads/threads.scm (<barrier>): Added.

	* lib/gauche/vm/debugger.scm (debug-funcall-pre): Attach thread id
	  in funcall debug print as well.

2021-04-21  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-120.scm: Added.

2021-04-20  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-219.scm: Support srfi-219.

	* ext/threads/threads.scm (<semaphore>. <latch>): Added.

2021-04-18  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/lazy.scm (coroutine->lseq): Added, for the symmetry
	  of coroutine->cseq.

	* ext/data/queue.scm: Add 'close' operation in mtqueue.  This is
	  useful in producer-consumer concurrency, when the producer side
	  wants to tell consumer to stop the service.  If we use a separate
	  flag, we'd need to protect the flag and the queue with another mutex.

2021-04-16  Shiro Kawai  <shiro@acm.org>

	* libsrc/scheme/charset.scm : moved from lib/srfi-14.scm.

	* src/main.c, src/libomega.scm: Make line-editing mode on by default.
	  Users can turn it off by GAUCHE_NO_READ_EDIT environment variable.

2021-04-15  Shiro Kawai  <shiro@acm.org>

	* lib/control/scheduler.scm: Added.

	* lib/data/priority-map.scm (priority-map-{min|max}): Fix: It should
	  pick a single key, even when there are more than one keys with
	  the same value. Manual entry is correct. Tests got it wrong.
	  (priority-map-{min|all}-all): Added, in case user wants all keys.

	* ext/srfi/srfi-19.scm (make-time, make-date): Check the range of
	  slot values.  Giving out-of-range values inadvertently would result
	  hard-to-track bugs.

2021-04-08  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (macroexpand-all, global-call-type),
	  src/gauche/vm.h (SCM_COMPILE_NOINLINE_INLINER): Allow macroexpand-all
	  to expand hybrid macro as well.  We still need to suppress expansion
	  of general inliners, for they can insert $asm node, which is not
	  useful as the output of macro expansion.  This is a kludge, due to
	  the current way that hybrid macro keeps macro xformer in the
	  inliner slot.  If we track macro binding and runtime binding
	  separately, NOINLINE_GLOBALS flag may suffice.  We may adopt
	  that solution in future, dropping NOINLINE_INLINER flag.

2021-04-04  Shiro Kawai  <shiro@acm.org>

	* src/vminsn.scm (PUSH-HANDLERS): Change it to take one parameter,
	  an argument list for before/after procedure.  This will allow
	  the compiler to lift those procedures.
	* lib/gauche/vm/insn-core.scm: 0.9.10 compiler tries to generate
	  PUSH-HANDLERS without parameters, so we need a transient hack
	  to convert it to PUSH-HANDLERS(0).

	* src/vm.c (Scm_VMDynamicWindC): Deprecate it.  It has never been
	  used and not so useful anyway.

2021-03-30  Shiro Kawai  <shiro@acm.org>

	* doc/modutil.texi: Document control.cseq.  Haven't used heavily, but
	  probably it's useful enough.

2021-03-29  Shiro Kawai  <shiro@acm.org>

	* ext/bcrypt: Rename blowfish functions so that it won't conflict
	  with system's libcrypt function.
	  Generallly we *should* use system's functions when available, but
	  we had a incompatibility case.  Besides, system's crypt function
	  is available through sys-crypt.

2021-03-28  Shiro Kawai  <shiro@acm.org>

	* src/module.c (Scm_ModuleExports): Include symbols exported from
	  the parent modules.  It is probably accidental that we didn't included
	  them.

2021-03-27  Shiro Kawai  <shiro@acm.org>

	* src/compile-4.scm (pass4/scan): Fix an issue that some closures
	  weren't lifted when they should've been.
	  As a side effect, we now reject non-internal define that doesn't
	  appear in the toplevel; e.g. (when (...) (define ...) ...).
	  Some cases of this form were tolerated previously.  The code that
	  depends on this behavior will stop working.

2021-03-26  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/procedure.scm (disasm): Force an object in the closed
	  environment before checking if it is a lifted closure.  Such
	  'delayed' closure can be seen in the ones created with parser.peg.

	* lib/contro/cseq.scm: Added experimentally.

2021-03-25  Shiro Kawai  <shiro@acm.org>

	* src/compile-1.scm (pass1/mark-closure-inlinable!): We didn't set
	  inlinable flag in the dummy binding, preventing inlinable procedure
	  to be expanded within the expressions in the same compiler unit.
	  This is particularly hurting performance of the precompiled modules.
	  After the fix and recompilation, for example, parsing char.c of
	  with PEG get 30% speed improvement, because the small inlinable
	  procedures such as parse-success? got inlined.
	  Fixing it revealed another bug that sets incorrect inliner procedure
	  to the dummy proc.  Actually we don't need a special inliner
	  procedure at all--we can just set the packed iform.

	* src/module.c, src/glob.c: Add SCM_BINDING_DUMMY flag, that indicates
	  the inlinable binding is for the dummy proc.  Without this, the
	  runtime can't distinguish legit redefinition of inlinable procedures
	  (replacing dummy proc during compilation, and the proper proc
	  inserted at the runtime).

2021-03-23  Shiro Kawai  <shiro@acm.org>

	* ext/peg/peg.scm ($binding): Allow fail procedure to yield
	  non-recoverable failure.  The interface is a bit awkward (optional
	  tag argument) so we may reconsider it.

2021-03-14  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/configure.scm (cf-prog-cxx): This hasn't been working
	  after we changed cf-arg-var.  Now cf-arg-var sets "" if the
	  environment variable isn't defined, and other parts of the code
	  thinks it has value.

2021-03-13  Shiro Kawai  <shiro@acm.org>

	* src/port.c, src/portapi.c, src/libio.scm: Revised port attribute
	  API.  This is technically an incompatible change, but port atttribute
	  API has never been documented, so it should be OK.
	  See https://github.com/shirok/Gauche/issues/753 for the issue
	  initiated this change.
	- We don't lock the port's main lock while accessing port attr.
	  Rather, we use a separate lock.  Port attr can be accessed from
	  a thread other than the one reading from/writing to the port.
	  This eliminates *Unsafe version of C API.
	- We dropped procedural port attributes.  If we call back to the
	  Scheme, lock management gets complicated.
	- We dropped port-attribute-create API.  It is only needed for
	  procedural attributes.

	* ext/peg/peg.scm ($raise, $cut): Experimentally add 'early exit'
	  means.  A new failure type, fail-error, prevents parsers from
	  backtracking.  This helps producing better error messages.
	  See Andre Murbach Maidl, et al., "Error Reporting in Parsing
	  Expression Grammers", https://arxiv.org/abs/1405.6646

2021-03-11  Shiro Kawai  <shiro@acm.org>

	* ext/peg/peg.scm (<parse-error>): Add 'rest' slot to keep the rest
	  of input stream.  It turned out that just keeping offending token
	  isn't enough.  The 'token' slot is now redundant, but we keep it
	  for the backward compatibility.

2021-03-09  Shiro Kawai  <shiro@acm.org>

	* ext/peg/peg.scm ($one-of, $.): Fixed symbol matching. We've doing
	  something different.  ($. 'foo) should match the symbol itself
	  in the token stream.
	  ($symbol): Moved to parser.peg.deprecated.  It was never documented,
	  and the name is ambiguous, for it looks like it matches input symbol
	  token.
	  ($list, $list*): Added.

2021-03-06  Shiro Kawai  <shiro@acm.org>

	* libsrc/data/ring-buffer.scm: Rename 'flat-vector' to 'xvector',
	  and rewrote them using ring-buffer->xsubvectors.

2021-03-03  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/uuid.scm (uuid-random-source): Make this a parameter.
	  Deprecate uuid-random-source-set!, for it has global effect.

2021-03-02  Shiro Kawai  <shiro@acm.org>

	* libsrc/data/ring-buffer.scm: Add ring-buffer->flat-vector.
	  Also make-ring-buffer accepts initial indexes.  It allows to
	  create a pre-filled ring-buffer.

2021-02-24  Shiro Kawai  <shiro@acm.org>

	* src/libnum.scm (degrees->radians, radians->degrees): Added.
	  https://github.com/shirok/Gauche/issues/749

2021-02-22  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-189.scm (either-guard): Fixed the recognized syntax of
	  either-guard.  It has been changed during draft period but hasn't
	  been reflected.

2021-02-19  Shiro Kawai  <shiro@acm.org>

	* src/port.c: Ensure to compute port address hash as unsigned.
	  Fix from@Hamaya https://github.com/shirok/Gauche/pull/748
	  This caused crash on Windows 64bit with recent MSYS toolchain.

2021-02-16  Shiro Kawai  <shiro@acm.org>

	* doc/Makefile.in, doc/makedoc.scm: New target 'make htmls-head'
	  generates html docs for development HEAD: The header shows
	  "Development HEAD" instead of Gauche version.  It is generated
	  in a separate directory, gauche-ref[ej]-head, from the normal
	  destination.  It is maily to publis the cutting-edge documentation
	  on the web.

2021-02-09  Shiro Kawai  <shiro@acm.org>

	* src/native.c, src/libnative.scm, ext/native: Experimenting FFI.
	  Currently only started to support amd64 ABI, with limited argument
	  types.  The API isn't fixed at all.  ext/native is just for
	  testing, not the real extension module.

	* lib/gauche/cgen/literal.scm (<cgen-scheme-uvector>): Bug fix:
	  Needed 'static' in uvector literal content definition, otherwise
	  it caused name conflict if more than one DSOs had uvector literals.

2021-02-05  Shiro Kawai  <shiro@acm.org>

	* src/libeval.scm (dynamic-load): Change the default value of
	  :init-function to #t, indicating using the default name derived
	  from DSO name.  We use :init-function #f to indicate not to call
	  init function at all.  This makes more sense than the previous
	  implicit convention that #f indicates default name.
	  The value #f was never documented, and previously there's no
	  reason that user directly use dynamic-load, so we presume
	  this won't break existing code.

	  (dlobj-get-entry-address): Expose Scm_DLOGetEntryAddress in
	  gauche module.  When we support ffi, there'll be no reason to
	  hide this procedure.  (We might want a separate namespace,
	  e.g. gauche.ffi, just to indicate this is for those who know
	  what they're doing, though.  Let's see.)

2021-02-03  Shiro Kawai  <shiro@acm.org>

	* src/load.c (Scm_DynLoad): Make it return #<dlobj>.  Allow #t as
	  initfn argument _not_ to call initialization function.  Preparation
	  for ffi.

2021-01-31  Shiro Kawai  <shiro@acm.org>

	* lib/control/future.scm: Added.  This is a provisional impl.
	  We'd like to use implicit thread pool to avoid thread creation
	  overhead.

	* src/vector.c, src/libvec.scm (make-view-uvector): Provides the means
	  to access memory region via uvector.

2021-01-30  Shiro Kawai  <shiro@acm.org>

	* src/system.c, src/libsys.scm (sys-mmap): Added mmap interface.

2021-01-29  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/type.scm (cgen-box-tail-expr): Separate box-expr
	  and box-tail-expr, the latter to be used when boxed value will
	  immediately be returned to the VM.  Only <real> type needs the
	  distinction, to utilize VM flonum registers.  NB: If there's a code
	  that directly accesses <cgen-type>'boxer (which it shouldn't do),
	  this change may slow it down, for boxer of <real> is now
	  Scm_MakeFlonum.  It should use cgen-box-tail-expr.
	  (<cgen-type>): Change slot name of c-predicate, unboxer, boxer and
	  maybe, to make it private.  Those info should be accessed via
	  cgen-pred-expr, cgen-unbox-expr, cgen-box[-tail]-expr, and
	  cgen-type-maybe?.

2021-01-28  Shiro Kawai  <shiro@acm.org>

	* doc/modgauche.texi: Add doc of gauche.mop.instance-pool; make it
	  official.

2021-01-23  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive.scm (describe): Show source info for macro
	  description if available.

2021-01-22  Shiro Kawai  <shiro@acm.org>

	* src/macro.c (Scm_MakeMacro): Switch macro internal fields; making
	  'source' field to more general alist, and ditch 'describer' field
	  (One time I had a plan to use it for better macro debugging, but
	  now we have macro tracer and I'm no longer sure what I had in mind
	  then).  We have flags field instead, but reserved for future use.
	  Technically this is API change, but noboty external should be
	  affected.

2021-01-21  Shiro Kawai  <shiro@acm.org>

	* src/libcode.scm (<compiled-code>): Removed obsoleted 'info' and
	  'arg-info' slots from the defintiion.  They're now
	  'debug-info' and 'signature-info'.  We switched so long ago
	  so we supposed it's about time.
	* src/libstr.scm, src/string.c: Removed string pointer code.

2021-01-19  Shiro Kawai  <shiro@acm.org>

	* src/libalpha.scm (error): Initialize message-prefix and message-args
	  when it is invoked as (error <error> args ...).

2021-01-16  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (Scm_VMThrowException): Changed the semantics of
	  with-exception-handler from srfi-18 to srfi-34/R7RS.  Srfi-18's
	  semantics aims at minimalism and the user should be responsible
	  to avoid infinite recursion of the handler; unfortunately, it seems
	  that users casually use it without being aware of the pitfall.
	  Almost all srfi-18 code should work with srfi-34 semantics.
	  A contrived counterexample may be to recurse into the current
	  exception handler via 'raise', but the same can be achieved more
	  easily and explicitly.

2021-01-10  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/lazy.scm (<sequence-position>): OK, let's make it a
	  record to give it a solid interface and keep the option of future
	  extension without clients depending on internal stuff too much.
	  One concern is a performance, but we should solve it with better
	  optimization of record types.
	  At this moment, we don't expose constructor of the position, though;
	  it can still be constructed with 'make'.

2021-01-09  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/lazy.scm (lseq->list): Added.

2021-01-08  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/lazy.scm (port->char-lseq/position): Generating lseq
	  with input position carried in pair attributes.


2021-01-07  Shiro Kawai  <shiro@acm.org>

	* src/libmacro.scm (lcons): Experimental: Allow optional attrs argument
	  to specify pair attributes.

	* src/liblazy.scm, src/lazy.c (Scm_LazyCons): Further simplify
	  lazy pair protocol.  Basically, we have two kinds of lazy pairs--
	  one that the generator yields next element, and the one that the
	  generator yields next pair.  We can separeate two by the constructor,
	  instead of fiddling the return value(s) of the generator.
	  For the Scheme world, the former is created by generator->lseq and
	  the latter is created by lcons.  How we distinguish two kinds
	  internally is hidden in lazy.c.

2021-01-06  Shiro Kawai  <shiro@acm.org>

	* src/lazy.c: Experimentally allow the generator to generate
	  pair attributes to be attached after a lazy pair is forced.
	  Pretty kludgy, so we keep it unofficial and see how it is useful.
	  ABI INCOMPATIBLE CHANGE: Scm_MakeLazyPair now takes the third
	  argument.  I presume nobody is calling such obscture API directly.

	  Also we changed internal protocol of generator output so that
	  eliminated Scm_DecomposeLazyPair; it is also technially an
	  incompatible ABI change, though I also presume nobody is directly
	  calling this.

2021-01-05  Shiro Kawai  <shiro@acm.org>

	* src/liblist.scm: Make extended pairs public.  Add optional arg
	  to extended-cons to specify initial attributes.

	* src/lazy.c: Make a lazy pair turn into an extended pair
	  (it happens to be the case in older versions, but no longer in
	  0.9.10 when we changed extended pair layout.  Now it is the case
	  again.)

2020-12-26  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/typteutil.scm: Add experimentally.  Abstract type
	  utitilies for type checking.

2020-12-23  Shiro Kawai  <shiro@acm.org>

	* src/libsys.scm (sys-ctermid): Fix a bug accessing local memory
	  out of its extent. https://github.com/shirok/Gauche/issues/740

2020-12-14  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/version-alist.scm (version-alist): Make it autoloaded
	  code, since build.configure info needs to load gauche.config and
	  gauche.process.
	* src/main.c: Process version info output after -ftest path setup,
	  for we need to be able to load gauche.version-alist.

2020-12-10  Shiro Kawai  <shiro@acm.org>

	* Release 0.9.10

	* lib/gauche/configure.scm: Define more descriptive alias for feature
	  check predicate, e.g. cf-check-header == cf-header-available?.
	  It is so confusing that cf-check-header is a predicate while
	  cf-check-headers is for side-effecting procedure.

2020-12-03  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-181.scm: Properly support all eol-styles.

2020-12-01  Shiro Kawai  <shiro@acm.org>

	* ext/charconv: Support iso8859-N (N = [2-11,13-16])

2020-11-27  Shiro Kawai  <shiro@acm.org>

	* ext/chaconv/jconv.c: Support utf-16 & iso8859-1.

2020-11-26  Shiro Kawai  <shiro@acm.org>

	* libsrc/file/util.scm (file->bytevector): Added.

2020-11-23  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/redefutil.scm (update-direct-subclass!): Do not recover
	  direct-subclasses link of the parent of redefined class.

	  Suppose we have a class <foo> and its subclass <bar>.  When we
	  redefine <foo>, <bar> is also redefined since its slots and/or
	  CPL may change.  We want to keep both parent-child relationship of
	  old <foo> - old <bar>, and new <foo> - new <bar>, for it may matter
	  during transition (including instance update, which occur the
	  later timing).  However, if <bar> has more than one parents, say
	  <foo> and <baz>, the old code makes <baz> refer to both old <bar>
	  and new <bar>, causing issues.

	  Since direct-subclasses link isn't used much except class
	  redefinition, we make a choice that redefined class won't appear
	  in the direc-subclasses list (the redefined class still keeps
	  direct-supers link).

	  http://chaton.practical-scheme.net/gauche/a/2020/11/22#entry-5fbab148-42ea5

2020-11-22  Shiro Kawai  <shiro@acm.org>

	* src/libexc.scm (condition-message): Added.

2020-11-20  Shiro Kawai  <shiro@acm.org>

	* libsrc/text/gap-buffer.scm (gap-buffer-replace!): Renamed from
	  gap-buffer-change!, for the consistency and clarity.

2020-11-19  Shiro Kawai  <shiro@acm.org>

	* ext/charconv/jconv.c: Drop euc-jp pivoting.  To widen supported
	  CESes, fixing the pivot encoding is cumbersome.  Instead, each
	  pair of {in-code, out-code} can choose suitable intermediate
	  encoding if necessary.

2020-11-16  Shiro Kawai  <shiro@acm.org>

	* src/libobj.scm (%expand-define-class): Fix hygienic keyword match
	  issue.  If define-class is generated by a macro, keywords such as
	  :metaclass may be renamed.
	  This fix is provisional---we simply compare identifier's name.
	  Eventually we should compare them hygienically.

2020-11-11  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-181.scm (i/o-decoding-error?, i/o-encoding-error?):
	  Use built-in <io-decoding-error> and <io-encoding-error>, which
	  gauche.characonv raises.
	  NB: We don't have i/o-encoding-error-char support yet.

	* src/error.c (Scm_PortError): Set PORT_ERROR_OCCURRED flag of the
	  port within this procedure.  If a port raised an error and left open
	  with an inconsitent state, Scm_Cleanup tries to flush it when the
	  process exit and bad things can happen.
	  (Scm_PortErrorWithAux): Enhanced ScmPortError condition to allow
	  keeping extra 'auxinfo', which should be an alist.  Its content
	  depends on the actual class of the port error.

2020-11-09  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-181.scm (transcoded-port, bytevector->string)
	  (string->bytevector): Reimplement on top of gauche.charconv.

2020-11-07  Shiro Kawai  <shiro@acm.org>

	* src/portapi.c (Scm_GetPortPosition), ext/vport/vport.c:
	  Support getpos/setpos slots.  It allows srfi-181 get-position/
	  set-position! to be directly mapped to vport slots.

	* src/string.c (build_index_array): Fixed another bug that the
	  index array is allocated too short.
	  Also changed to store the index array size in the second word of
	  the index array.  By doing so we can check the accidental out-of-bound
	  access.

2020-11-06  Shiro Kawai  <shiro@acm.org>

	* src/string.c (build_index_array): Fix: The signature byte is supposed
	  to be repeated in the first element of the vector, so it can work
	  for any endianness, but it didn't.

	* src/liblist.scm (length<=?): Fix integer overflow bug. Also,
	  if list is circular we treat it infinitely long.

2020-11-05  Shiro Kawai  <shiro@acm.org>

	* Document identity and constantly.

	* src/compile-1.scm (pass1/extended-lambda-body): Fix ((:key var) init)
	  pattern handling when GAUCHE_KEYWORD_DISJOINT=1.

	* src/libmacro.scm (%let-keywords-rec): Compare input as bare symbol
	  against potential keywords.  This may not be ideal, for hygiene is
	  not preserved.  Since keywords are from gauche.keyword module,
	  we should be able to compare it hygienically.

	* src/libmacbase.scm (unwrap-syntax-1): Added.

2020-10-30  Shiro Kawai  <shiro@acm.org>

	* ext/tls/tls.ac, tools/tls: Adding configure option to build mbedtls
	  inside the build tree.

2020-10-29  Shiro Kawai  <shiro@acm.org>

	* ext/windows/windows.stub (sys-get-disk-free-space-ex): Added.

	* src/libsys.scm, ext/fcntl/fcntl.scm: Move statvfs stuff to
	  gauche.fcntl, for it is less frequently used.

2020-10-28  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-170.scm: Catch up with the final srfi.

	* src/libsys.scm: Add <sys-statvfs> class and sys-statvfs(2) interface.

2020-10-20  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/process.scm (process-shutdown): Rename from
	  process-terminate-gracefully.  It's shorter, more appripriate,
	  and in sync with (connection-shutdown <process-connection>).

2020-10-19  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/package/util.scm (copy-templates): Fill authors name
	  of the package.scm from git config output, if available.

	* libsrc/gauche/process.scm (run-process): Allow :merge to :error
	  keyword arg, for the shorthand of :redirect ((>& 2 1)).
	  This is especially useful for higher-level utilities such as
	  process-output->string, in which you can get error output in
	  the result as well.

2020-10-18  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/process.scm (process-wait/poll)
	  (process-terminate-gracefuly): Added.

2020-10-14  Shiro Kawai  <shiro@acm.org>

	* src/libeval.scm (gauche): Include thread subsystem and tls subsystem
	  info in version-alist.

2020-10-06  Shiro Kawai  <shiro@acm.org>

	* src/libio.scm (open-input-fd-port, open-output-fd-port): There was a
	  bug that owner? argument logic is reversed.  It was introduced when
	  we add support of 'dup a month ago.

2020-10-02  Shiro Kawai  <shiro@acm.org>

	* ext/tls/tls/get-cacert: Provide a script to download cacert.pem from
	  curl official site and install it into Gauche library directory.
	  This is for the users who can't somehow install
	  ca-certificates package or openssl.
	* ext/tls: The 'system' ca-bundle search include the cacert.pem
	  downloaded by get-cacert.

2020-10-01  Shiro Kawai  <shiro@acm.org>

	* ext/tls/tls.ac: Make the default of --with-ca-bundle to "check".
	  It checks the system ca-bundle availability at initialization and
	  set tls-ca-bundle-path to either 'system or #f.
	  This allows the use to explicitly disable default ca bundle path
	  by saying --with-ca-bundle=no.

2020-09-30  Shiro Kawai  <shiro@acm.org>

	* ext/tls/tls.c: Changed handling of default tls-ca-bundle-path
	  and default-tls-class.  If we find system ca bundle in initialization,
	  we favor <mbed-tls>.

2020-09-27  Shiro Kawai  <shiro@acm.org>

	* src/core.c: Add a secret feature to show initialization progress
	  if env var GAUCHE_DEBUG_INITIALIZATION is set.  This helps when
	  things got derailed during core initialization.

	* src/module.c (Scm_FindModule), lib/gauche/cgen/precomp.scm:
	  Distinguish a module created explicitly (by define-module
	  or find-module) and implicitly (via identifier literals).
	  If a module is created only because of identifiers embedded
	  in macro output, it shouldn't appear in (all-modules).

2020-09-18  Shiro Kawai  <shiro@acm.org>

	* src/error.c: Add <io-invalid-position-error> as a subclass of
	  <port-error>.

2020-09-15  Shiro Kawai  <shiro@acm.org>

	* ext/tls: Refactor load_system_cert().  Try known ca-bundle.crt path
	  for 'system' ca-bundle on non-Windows platforms.
	  Cf. https://github.com/shirok/Gauche/issues/365

2020-09-14  Shiro Kawai  <shiro@acm.org>

	* src/box.c: Added srfi-195 multi-valued box support.  We use separate
	  type for mv-box, for we want to keep single-value box lightweight.

	* src/vm.c (Scm_ValuesFromArray): Added.

2020-09-13  Shiro Kawai  <shiro@acm.org>

	* src/gauche/port.h (ScmPort): INCOMPATIBLE CHANGE: Hide most of
	  ScmPort guts from the user.  User code that directly accesses
	  fields of ScmPort needs to be changed to use the public access
	  functions.
	  The actual struct definition is moved to src/gauche/priv/portP.h.
	  This change is to give flexibility in the future port enhancement.

2020-09-11  Shiro Kawai  <shiro@acm.org>

	* src/port.c: Make port-name an attribute.

	* src/portapi.c: Add a new port attribute entry that is read-only
	  and undeletable; it's for the system-reserved attributes such as
	  'name'.

2020-09-10  Shiro Kawai  <shiro@acm.org>

	* src/srfis.scm: Make srfi-193 official, as it is finalized.

2020-09-09  Shiro Kawai  <shiro@acm.org>

	* src/gauche-package.in: Add --scheme-only option.

	* ext/template.*: Moved package template files under
	  package-templates subdirectory.

2020-09-08  Shiro Kawai  <shiro@acm.org>

	* src/libio.scm: open-{input|output}-fd-port and port-file-number
	  now have an option to dup the fd.

2020-09-07  Shiro Kawai  <shiro@acm.org>

	* doc/modgauche.texi: Document <stacked-map>.

2020-09-06  Shiro Kawai  <shiro@acm.org>

	* src/libparam.scm, libsrc/gauche/parameter.scm: Move make-parameter
	  and parameterize into core.  gauche.parameter is kept for the
	  backward compatibility and some fluff (observers).

2020-09-05  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/parameter.scm: Make <parameter> a subclass of
	  <primitive-parameter>, and make make-parameter return a procedure.
	  The latter is to conforms R7RS.
	  The code that tested if obj is a parameter by is-a? should now use
	  parameter?.  The code that uses parameters in the standard way
	  doesn't need to be changed.

2020-09-04  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-192.scm: Added.  Currently it's a copy of the reference
	  implementation.  We need to modify port protocl to fully support
	  this srfi.

	* src/parameter.c: Make BindPrimitiveParameter wraps primitive
	  parameter with subr.  In R7RS, parameters should behave strictly
	  as a procedure, e.g. must respond #t to procedure?.
	  Rel: https://github.com/shirok/Gauche/issues/720

2020-09-03  Shiro Kawai  <shiro@acm.org>

	* lib/r7rs-setup.scm, src/libio.scm, ext/vport/vport.scm,
	  ext/uvector/uvector.scm: Move R7RS binary i/o stuff (read-u8,
	  write-bytevectr etc.) into Gauche side.  It is easier to run
	  a snippet written for r7rs without loading full r7rs.

	* lib/srfi-181.scm: Added.  Currently it's a copy of the reference
	  implementation.  Need customize on transcoded port.

2020-09-02  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/dictionary.scm: Revised <stacked-map>; make it
	  comparator-aware.  Add a couple of methods.

2020-09-01  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-178.scm: finished implementation.

	* libsrc/gauche/sequence.scm (subseq): Dropped the undocumented feature
	  that subseq accepts negative value as END, counting from the end
	  of the sequence.  It will get in a way if more sequence types defines
	  specialized method, for such convention isn't widely adopted for
	  type-specific procedures.

2020-08-26  Shiro Kawai  <shiro@acm.org>

	* src/read.c, src/string.c: Changed incomplete string literal to
	  #**"...", for #*"..." conflicts with bitvector literals (we thought
	  it wouldn't, but overlooked that '#*' can be a valid bitvector
	  literal.)  The reader allows old syntax depending on reader lexical
	  mode.

	* src/main.c (further_options): If -fwarn-legacy-sytnax is given,
	  don't forget to change the reader syntax mode of SCM_CURIN, which
	  has already been opened.  The setting of Scm_SetReaderLexicalMode only
	  affects the ports opened after the change.

2020-08-24  Shiro Kawai  <shiro@acm.org>

	* src/main.c: Allow multiple S-exprs in -e option.

2020-08-22  Shiro Kawai  <shiro@acm.org>

	* libsrc/text/line-edit.scm (read-line/edit): Install SIGCONT handler
	  to handle the case when REPL is stopped by shell's job control and
	  then restarted.  Singal handler has global effect, so it may
	  interfere with the application---in which case we may provide an
	  option to turn it off.  For now, let's see how it goes.
	  Cf. https://github.com/shirok/Gauche/issues/715

2020-08-21  Shiro Kawai  <shiro@acm.org>

	* libsrc/text/console.scm (canonical-mode?): Add an API to query
	  if the terminal is in canonical (line editing) mode.  Useful to
	  detect when a process wakes up by SIGCONT and see if the terminal
	  setting has been changed by shell job control.

	* ext/threads/threads.scm (atomic-update!): Allow proc to return more
	  values than the atom holds.  It is useful if one wants to update
	  atom state and compute something using before-update values.

2020-08-18  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/process.scm: Allow command pipeline in process port API
	  https://github.com/shirok/Gauche/issues/717

2020-08-16  Shiro Kawai  <shiro@acm.org>

	* src/gauche/vector.h (ScmBitvector), src/vector.c: Start adding
	  bitvector support (srfi-178).

2020-08-15  Shiro Kawai  <shiro@acm.org>

	* src/signal.c (Scm_SigFillSetMostly): Allow SIGCONT to be handled
	  in Gauche by default.

2020-08-12  Shiro Kawai  <shiro@acm.org>

	* src/gauche/vm.h, src/vm.c: Add SCM_COMPILE_SRFI_FEATURE_ID flag.
	* src/libmacro.scm (cond-expand): Warn srfi-N feature id is used
	  when SCM_COMPILE_SRFI_FEATURE_ID flag isn't set.
	  This is to gradually retire usage of srfi-N as a feature id.
	  Ref. https://github.com/shirok/Gauche/issues/709

2020-08-11  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/pputil.scm (layout-misc): Fix circular structure printing
	  in case when the cycle begins in the middle of a list.
	  https://github.com/shirok/Gauche/issues/713

2020-08-08  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-180.scm: Finishing support of srfi-180.

	* lib/rfc/json.scm (construct-json): rfc7159 loosened the restriction
	  of rfc4627 that the toplevel object must be an array or an object.
	  Updated the code to allow that.

	* ext/vport/vport.scm (open-output-accumulator): Added procedures
	  to convert accumulators to an output port.

2020-08-04  Shiro Kawai  <shiro@acm.org>

	* src/libomega.scm (object-hash): Let the base method of object-hash
	  return a constant value.  We can't make it error if we want
	  default-hash to accept arbitrary Scheme value, and we can't
	  compute a non-constant hash value without knowing equality semantics.
	  We'll encourage users to define object-hash method for user-defined
	  classes if their instances are ever hashed.
	  https://github.com/shirok/Gauche/issues/708

2020-08-03  Shiro Kawai  <shiro@acm.org>

	* src/libdict.scm (make-hash-table): If a comparator whose equality
	  predicate is eq?/eqv?, we use eq-/eqv-hash regardless of comparator's
	  hash function.  It is permitted by srfi-125, and it allows
	  objects that doesn't have hash method can still be used
	  with eq/eqv based hashtables.
	  https://github.com/shirok/Gauche/issues/708

2020-07-29  Shiro Kawai  <shiro@acm.org>

	* src/class.c (<box>): Rename <%box> to <box>, for there's no reason
	  to obscure it.

	* src/libobj.scm (ref): Added accessor for a box.  srfi-123.

2020-07-28  Shiro Kawai  <shiro@acm.org>

	* src/libmacro.scm (let-optionals*): Fix the expander inserting
	  'undefined' unhygienically.

2020-07-26  Shiro Kawai  <shiro@acm.org>

	* src/system.c: Add support of timespec timestamps in struct stat
	  (st_atim, st_mtim and st_ctim).

	* src/libsys.scm (sys-nice): Added.

2020-07-25  Shiro Kawai  <shiro@acm.org>

	* ext/fcntl/fcntl.scm (O_CLOEXEC): Add flag.

2020-07-24  Shiro Kawai  <shiro@acm.org>

	* src/libsys.scm (sys-utime): Use utimensat(2) instead of utime(2).
	  Allow <time> object, real number, and #t for atime/mtime.
	  #t is for "unchanged".

	* ext/fcntl/fcntl.scm (sys-open): Added low-level open(2) interface.
	  Generally Scheme programs should use open-{input|output}-file.
	  This is for the rare case that you want to get fd without building
	  whole Scheme port thing, so we put it in the extension rather than
	  in the core.  SRFI-170 needs this.

2020-07-21  Shiro Kawai  <shiro@acm.org>

	* src/number.c (Scm_GetDouble): Fix double-rounding bug in ratnum to
	  flonum conversion.  Originall reported in Ruby, it is a common
	  issue that first convert numerator and denominator to double
	  and then divide.
	  Cf. https://twitter.com/tanaka_akr/status/1285273115464007685

2020-07-15  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-189.scm: Srfi finalized.  Adjust to the final spec.

2020-07-13  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-42 (:collection): Allow to use a collection as a generator.

	* lib/rfc/json.scm (json-nesting-depth-limit): Add the parameter
	  to support srfi-180.

	* src/error.c (Scm_MixinConditionClass), src/libexc.scm: Make
	  <mixin-condition> a base class so that Scheme code can define
	  other mixin condition inheriting it.  Functionally there's no
	  special feature in <mixin-condition> itself; it's just to indicate
	  the condition is intended to be used as a mixin.

2020-07-08  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-175.scm: Added.

2020-07-03  Shiro Kawai  <shiro@acm.org>

	* src/compile-1.scm (and-let*): Fix 20-year old bug - and-let* is
	  allowed an empty body.

2020-07-02  Shiro Kawai  <shiro@acm.org>

	* src/libmacro.scm (assume, assume-type): Fix assume, which must return
	  expr's value according to srfi-145.  Adjust assume-type as well.

	* src/gauche-package.in: Add some options to 'generate' command.

2020-06-13  Shiro Kawai  <shiro@acm.org>

	* lib/math/prime.scm (naive-factorize): Reject other than positive
	  exact integers.  Also let (naive-factorize 1) return (), for the
	  consistency.

2020-06-04  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-78.scm: Officially support srfi-78.

	* lib/gauche/test.scm: Add some hooks to make it easy to wrap
	  gauche.test with other test framework.

2020-06-02  Shiro Kawai  <shiro@acm.org>

	* src/number.c (Scm_StringToNumber), src/libnum.c (string->number):
	  Support default-exactness flag, to specify the exactness of the
	  read number when no exactness prefix is given.

2020-05-29  Shiro Kawai  <shiro@acm.org>

	* src/lazy.c (Scm_Force): The original code assumes VM trampoline,
	  so it should really be named Scm_VMForce.  We added Scm_Force which
	  is safe to be called with C convention, using ApplyRec.

2020-05-26  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/sortutil.scm: Absorbed into src/libcmp.scm

	* libsrc/srfi-1.scm (lset=): Fix bug on the argument order of =.

2020-05-23  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive/ed.scm -> lib/text/external-editor.scm
	  Renamed.  Generally useful.

	* src/main.c: Add -fread-edit and -fno-read-edit command-line arguments
	  to enable/disable input editing.  This overrides the setting by
	  the environment variable GAUCHE_READ_EDIT.

2020-05-21  Shiro Kawai  <shiro@acm.org>

	* src/list.c (Scm_CopyList): Detect circular list and raise an error.

2020-05-20  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/configure.scm: Set build, host and target substs.
	  Not that we don't really support cross compiling yet---but the code
	  that checks (cf$ 'target) etc. will work.

2020-05-17  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/regexp.scm: Move rxmatch-* macros into core.

2020-05-15  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/vm/debugger.scm, src/libeval.scm (debug-source-info):
	  Moved to the core, for it is used in some macros needed for
	  editable-reader, and we don't want to load gauche.vm.debugger just
	  for it.

	* lib/gauche/listener.scm, src/libstr.scm (complete-sexp?): Moved
	  the definition from listener to core, for it is also used in
	  gauche.interactive.editable-reader.

2020-05-14  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/process.scm: Precompile.

	* src/gauche/condutil.scm, src/gauche/stringutil.scm: Absorbed into
	  the core.

	* configure.ac: 0.9.10_pre1.  Looks like we need more releases before
	  1.0.

2020-05-13  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive.scm: Allow turn on/off input editing by
	  the toplevel command (,edit).  Note: If the input editing isn't
	  available at the initialization time, you can't turn it on.

2020-05-08  Shiro Kawai  <shiro@acm.org>

	* lib/text/line-edit.scm (keymap-describe): Start adding online
	  editor help.

2020-05-07  Shiro Kawai  <shiro@acm.org>

	* lib/text/pager.scm: Refactor out the pager calling heuristics
	  from gauche.interactive.info.

2020-05-04  Shiro Kawai  <shiro@acm.org>

	* lib/text/line-edit.scm: Bind C-M-x to commit input.
	  https://github.com/shirok/Gauche/issues/683

2020-05-03  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (check_arglist_tail_for_apply): Detect circular list
	  in the argument.
	* src/libproc.scm (apply): Ditto.

	* ext/peg/peg.scm ($match1, $match1*): Support 'failure procedure'.
	  The result expression can do additional check and let the parser fail.

2020-04-30  Shiro Kawai  <shiro@acm.org>

	* ext/vport: Support bidirectional virtual ports.

2020-04-29  Shiro Kawai  <shiro@acm.org>

	* src/*: Surround pre-1.0 compatibility APIs with #if.
	  If you set GAUCHE_API_VERSION to 1000, they are excluded.

	* lib/text/line-edit.scm (default-keymap): Let C-j always insert newline.
	  If it's commit-or-newline, we can't insert a newline in completed
	  sexp.  (Well, we can do C-q C-j but ont intuitive.)
	  Later, we'll implement auto-indent, too.

2020-04-27  Shiro Kawai  <shiro@acm.org>

	* src/class.c: Changed ScmClass.serialize to ScmClass.hash.  The
	  serialize proc has never been used, and we think now that it's better
	  to be implemented at Scheme level, outside of class.
	  OTOH, class-specific hash is became more important than before, for
	  now users count on default-hash just works.

	* lib/srfi-174.scm: Added.

2020-04-26  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-185.scm: Added.

2020-04-25  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/generator.scm (giterate, giterate1): Added.
	  lib/gauche/lazy.scm (literate): Added.
	  http://chaton.practical-scheme.net/gauche/a/2020/04/25#entry-5ea4496b-9be8a

	* src/compile-3.scm (pass3/$RECEIVE): Optimize the common pattern
	  (receive vs expr body ... (apply values vs)).   It appears in the
	  expansion of begin0, for example.  We omit
	  packing/unpacking of multiple values when we know expr can only
	  yield a single value.

	* lib/gauche/vm/insn-core.scm, src/vminsn.scm: Added multi-value slot,
	  specifies if the insn can result multiple values.  Used by the
	  compiler for optimization.

2020-04-18  Shiro Kawai  <shiro@acm.org>

	* doc/modutil.texi: Officially document data.priority-map.

	* lib/gauche/interactive/init.scm: Do not load ~/.gaucherc if
	  the process is suid/sgid-ed.

	* lib/gauche/interactive.scm (get-history-filename): Changed
	  history file environment variable from GAUCHE_HISTFILE to
	  GAUCHE_HISTORY_FILE; we generally avoid abbreviation.
	  Also we ignore it when process is suid/sgid-ed.

	* src/libsys.scm (sys-setugid?): eXpose Scm_IsSugid() to Scheme.

	* src/system.c (Scm_IsSugid): Use issetugid() if the system has it.
	  If it is not available, we remember the initial state of real and
	  effective uid/gid.  Just comparing them when this function is called
	  isn't good, for suid-ed process may have changed its real and
	  effective uids match.

2020-04-16  Shiro Kawai  <shiro@acm.org>

	* configure.ac: Report whether document will be built or not in
	  the summary.

	* lib/gauche/interactive/info.scm (get-info): Graceful handling for
	  the case when info document couldn't be found.

2020-04-14  Shiro Kawai  <shiro@acm.org>

	* .dir-locals.el: Gauche-specific settings for Emacs
	  by @lassik https://github.com/shirok/Gauche/pull/670

2020-04-12  Shiro Kawai  <shiro@acm.org>

	* src/libfmt.scm (make-format-currency): Add ~$ support.

2020-04-09  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-125.scm (alist->hash-table, hash-table-unfold): Fix bugs.
	* src/libdict.scm (hash-table-map!-r7, hash-table-fold-r7,
	  hash-table=?): Fix incorrect implementation.

2020-04-07  Shiro Kawai  <shiro@acm.org>

	* src/libfmt.scm (make-format-flo): Make ~f handle complex numbers.
	  The d parameters are effective on both real and imaginary part.
	  (format): Support single character escape family, ~nt, ~n%, ~n~ and
	  ~n|.
	  Also support ~?.

2020-04-06  Shiro Kawai  <shiro@acm.org>

	* src/libeval.scm (load-from-port): Fixed 3-year old bug
	  https://github.com/shirok/Gauche/issues/292

2020-04-04  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/experimental/command-lines.scm: Added.  To test out
	  command-line srfi.  The interface is subject to change.

	* src/libsys.scm (sys-normalize-pathname),
	  src/system.c (Scm_NormalizePathname): Rewrote this in Scheme.

	* src/execenv.c: Overhaul Scm_InitCommandLine taking the idea of
	  @lassik https://github.com/shirok/Gauche/pull/640
	  - Added `os-command-line` parameter, that keeps entire command line
	    list given by the OS.  (The name is subject to change, to follow
	    the coming command-lines srfi.)
	  - Application can set up `command-line` and/or `os-command-line`
	    separately, or simultaneously.
	  - For 1.0 API, we have 'kind' argument in Scm_InitCommandLine.  To
	    keep the ABI compatibility, 0.97 API has Scm_InitCommandLine2.
	* src/libeval.scm (load): Add :main-script parameter; if #t, it
	  records the full path of loaded file in `script-file` parameter.
	  It can only be done here, since the full path is known after `load`
	  searches the file.
	* src/load.c, src/gauche/load.h: Add SCM_LOAD_MAIN_SCRIPT flag.

2020-04-03  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h: Introduced GAUCHE_API_VERSION macro in place of
	  GAUCHE_API_xx.  Currently it's 97.  It'll be 1000 on 1.0 prerelease.
	  After 1.0 release, we'll use it as major*1000 + revision.  Revision
	  is only incremented when API changes, and isn't necessarily in sync
	  with Gauche minor/micro versions.
	* src/vector.c: Add immutable flag for API_VERSION >= 1000.  This is
	  binary incompatible change and client code will need to be recompiled.
	* src/compaux.c (unwrap_rec): Make literal vectors immutable on
	  API_VERSION >= 1000.

2020-04-01  Shiro Kawai  <shiro@acm.org>

	* src/main.c: When -ftest is given, try to use executable location
	  first, if it's available.
	  This achieves the goal of  https://github.com/shirok/Gauche/pull/600

2020-03-29  Shiro Kawai  <shiro@acm.org>

	* src/compile-1.scm: Make literal pairs immutable by default.
	  Can be switched back by env var GAUCHE_MUTABLE_LITERALS.
	  If this breaks too many existing code, we'll reverse the default.
	  Let's see.

	* src/list.c, src/class.c: Abandon the idea of having <mpair> and
	  <ipair> separately.  (1) It breaks the existing code that assumes
	  class of pair is always <pair>. (2) It'll be cumbersome if we have
	  to define mutable/immutable subclasses for other kind of extended
	  pairs. (3) We don't have separate classes for other immutable objects.
	  Note that, now the first word of ScmRealExtendedPair is not a tagged
	  pointer to ScmClass.  Less uniformity, but the extended pairs are
	  exceptional, so it wouldn't matter except you're looking at the
	  binary dump.

2020-03-28  Shiro Kawai  <shiro@acm.org>

	* src/compaux.c (unwrap_rec): Fix circular structure handling.  The
	  old code didn't correctly handle all the cases.

2020-03-27  Shiro Kawai  <shiro@acm.org>

	* src/libmacbase.scm (unwrap-syntax),
	  src/compaux.c (Scm_UnwrapSyntaxImmutable): Way to create immutable
	  structure after unwrap-syntax.

2020-03-26  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-116.scm, lib/scheme/ilist.scm : Added.

2020-03-24  Shiro Kawai  <shiro@acm.org>

	* src/libeval.scm (Scm_RuntimeDirectory): Make it public API, for
	  it is generally useful, and we'll cover more platforms.

	* lib/gauche/process.scm (%apply-run-process): Fix high-level
	  utilities rejecting :encoding keyword argument.
	  https://github.com/shirok/Gauche/issues/651

2020-03-22  Shiro Kawai  <shiro@acm.org>

	* lib/www/css.scm: Support an+b syntax
	  from @gengar https://github.com/shirok/Gauche/pull/648

2020-03-21  Shiro Kawai  <shiro@acm.org>

	* lib/www/css.scm (construct-css): Fix :not pseudo class rendering
	  from @leque https://github.com/shirok/Gauche/pull/645
	  Also add rendering of @import and @media.
	* libsrc/file/util.scm (make-directory*): Fix timing hazard.

2020-03-15  Shiro Kawai  <shiro@acm.org>

	* src/*: Implement immutable pairs.  This has a few visibile changes:
	- An ordinary pair is an instance of <mpair>, which inherits <pair>.
	  An immutable pair is an instance of <ipair> which is also a
	  subclass of <pair>.  We can't just keep mutable pairs as <pair>
	  and subclass <ipair> from it, for mutable pairs and immutable pairs
	  don't have subtype relationship.  BUT, this change may break code
	  that assumes all pairs are instances of <pair> and has tests like
	  (eq? (class-of x) <pair>).
	- SCM_SET_CAR and SCM_SET_CDR simply calls Scm_SetCar and Scm_SetCdr,
	  which rejects mutating immutable pairs (and we'll have other kind of
	  hooks).  They do have far more overhead than signle assignment like
	  before.  If you KNOW you're setting car/cdr of normal pairs (typically
	  the one you just allocated), you can use SCM_SET_CAR_UNCHECKED and
	  SCM_SET_CDR_UNCHECKED.
	- These changes are provisional.  If it breaks something horribly,
	  we'll change the strategy.

2020-03-14  Shiro Kawai  <shiro@acm.org>

	* Exclude string pointers unless GAUCHE_STRING_POINTER is defined
	  non-zero.  String pointers are never officially documented, and
	  now we have string cursors that does the job.   We keep the code
	  one more release in case there's application code that depends on it.

2020-03-13  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive/editable-reader.scm (%input-complete?):
	  Regard an empty string as complete input.  I don't remember why
	  I explicitly excluded it.
	  Cf: https://github.com/shirok/Gauche/pull/629

2020-03-12  Shiro Kawai  <shiro@acm.org>

	* src/compile-1.scm (pass1/extended-lambda-body):
	  Allow :allow-other-keys without :key.  It can be useful that the
	  procedure itself won't handle specific keyword arguments, but
	  want to let Gauche check the arguments are even.

2020-03-10  Shiro Kawai  <shiro@acm.org>

	* src/compile-1.scm (define-macro, define-syntax): Fix
	  macro-defining-macro called from other module.
	  Cf: https://github.com/shirok/Gauche/issues/532

2020-03-03  Shiro Kawai  <shiro@acm.org>

	* src/regexp.c, lib/gauce/regexp/sre.scm: Implement BOG/EOG asseritions.
	  Patch by @pclouds https://github.com/shirok/Gauche/pull/618
	  Also support 'grapheme' of SRE.
	  Patch by @pclouds https://github.com/shirok/Gauche/pull/620

2020-02-28  Shiro Kawai  <shiro@acm.org>

	* lib/text/line-edit.scm (macro!): Keystrokes macro feature by @pclouds
	  https://github.com/shirok/Gauche/pull/612

	* src/compile-1.scm (define-hybrid-syntax): Renamed
	  define-inline/syntax, which is a name from implementor's viewpoint
	  (we use the same mechanism to handle it as define-inline) but rather
	  confusing for the users.
	* doc/macro.texi: Document define-hybrid-syntax

2020-02-27  Shiro Kawai  <shiro@acm.org>

	* src/libeval.scm (version-alist): srfi-176 defines Scheme proc
	  to retrieve this info.
	* src/main.c (version): Use version-alist to generate output.

2020-02-24  Shiro Kawai  <shiro@acm.org>

	* src/srfis.scm, src/main.c: Support srfi-176
	  Cf. https://github.com/shirok/Gauche/pull/607 by @lassik

2020-02-18  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/literal.scm, src/gauche.h: Align statically allocated
	  pairs in two-ScmWord boundary.  A preparation for the new extended
	  pair tagging.

2020-02-17  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-159*, lib/scheme/show*: Ported from Chibi, done by
	  @pclouds.  Also with documentation.

2020-02-13  Shiro Kawai  <shiro@acm.org>

	* ext/tls: Avoid using Scm_SysError to report tls error (axTLS routine
	  doesn't set errno!).  Use our own error code -> message conversion.

2020-02-11  Shiro Kawai  <shiro@acm.org>

	* ext/peg/peg.scm (peg-parse-string, peg-parse-port): Add optional
	  continuation procedure to allow to receive the rest of the input.

2020-02-07  Shiro Kawai  <shiro@acm.org>

	* src/libsym.scm (identifier?, identifier->symbol): POSSIBLY
	  INCOMPATIBLE CHANGE: Make identifier? respond to both symbol and
	  <identifier>s.  It greatly simplifies low-level macros.
	  The original 'identifier?' is renamed to 'wrapped-identifier?'
	  (we may change the name later).  The 'identifier?' procedure entry
	  has been in the manual, but without descriptions.  We expect
	  no other code depends on it, and most of the dependent one
	  won't break, as long as it only uses these two procedures.
	  (The accessor to the <identifier> field is in gauche.internal).
	  Some code needs to be read by 0.9.9 during build, so we have
	  transient code in several places.  The VM instruction IDENTIFIERP
	  is also changed to respond to both symbol and identifier.

2020-02-02  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-135.scm: Added.

	* src/libstr.scm (string-copy-immutable): Added.
	  (string-map, string-for-each): Integrate R7RS one and SRFI-13 one
	  into one procedure supporting both interface.

	* src/string.c (Scm_MaybeSubstring): Returns immutable string if
	  input is immutable.  The caller can't count on the input string
	  begin copied, so it must copy the returned value anyway if it wants
	  a mutable string.

2020-02-01  Shiro Kawai  <shiro@acm.org>

	* src/vm.c, src/main.c (-fsafe-string-cursors): A runtime flag
	  that makes all string cursors 'large', for misuse detection
	  trading off the speed and space.
	  https://github.com/shirok/Gauche/pull/584 by @pclouds.

	* ext/template.Makefile.in: Pass down CFLAGS etc into
	  ;gauche-package compile'.  Other small fixes.
	  https://github.com/shirok/Gauche/pull/580 from @Hamayama

	* src/string.c (Scm_StringBodyBuildIndex),
	  src/libstr.c (string-build-index!, string-fast-indexable?):
	  Add O(1) access multibyte string feature.

2020-01-30  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/configure.scm (cf-arg-var): Always make the symbol a
	  subst var even if the environment variable isn't set.
	  (cf-subst): Make the value optional.  When omitted, the symbol
	  is made subst and set to "" if it hasn't been a subst var, but
	  is left intact if it's already a subst var.

2020-01-29  Shiro Kawai  <shiro@acm.org>

	* src/string.c, src/gauche.h, src/gauche/string.h: Introduce small
	  string cursor which is an immediate value.  Almost all cursors fit
	  in the small range and we can avoid allocations.
	  Done by @pclouds https://github.com/shirok/Gauche/pull/576

2020-01-28  Shiro Kawai  <shiro@acm.org>

	* examples/pegintro.scm: Added.

2020-01-27  Shiro Kawai  <shiro@acm.org>

	* src/string.c, src/libstr.c (Scm_StringRefCursor, Scm_SubstringCursor):
	  Added.
	  (Scm_MaybeSubstring): Support cursor.
	  by @pclouds https://github.com/shirok/Gauche/pull/571

2020-01-26  Shiro Kawai  <shiro@acm.org>

	* src/gauche/string.h, src/string.c, src/libstr.scm, src/class.c:
	  Add ScmStringCursor type by @pclouds
	  https://github.com/shirok/Gauche/pull/569

2020-01-25  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/uvector.scm: Enhanced make-bytevector and bytevector-fill!
	  so that we don't need have separate definition in scheme.bytevector.
	  We also provide bytevector-copy!-r6 here to alleviate confusion
	  having same name, different procedures (we can just explain that
	  scheme.bytevector exports bytevector-copy!-r6 as bytevector-copy!)

2020-01-24  Shiro Kawai  <shiro@acm.org>

	* lib/scheme/bytevector.scm: Added R7RS-large scheme.bytevector.
	  Tests are coming along.

2020-01-23  Shiro Kawai  <shiro@acm.org>

	* ext/gauche/unicode.scm (string->utf32, utf32->string): Added.
	  (codeponts->words): Fix: Document has been saying the result
	  is a list of sequences of the same type as input, but we returned
	  a list of lists.  Code relying on previous behavior will break, but
	  technically this is an implementation bug.

2020-01-22  Shiro Kawai  <shiro@acm.org>

	* ext/gauche/unicode.scm (string->utf16): Add add-bom? argument, for
	  the symmetry of utf16->string (but the logic is reversed, for the
	  convenience).

2020-01-21  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/uvector.scm (string->[su]32vector[!]),
	  ([su]32vector->string): Add endian argument.
	* src/string.c (count_size_and_length): Strictly check invalid encoding
	  in input so that such string becomes incomplete.
	* ext/gauche/unicode.scm (utf8->string): When input contains invalid
	  utf8 sequences, replace them with U+FFFD instead of throwing an error.
	  The behavior is consistent with scheme.bytevector.
	  NB: This breaks the code that relied on the throwing error behavior
	  and implemented their own alternative conversion mechanism by catching
	  the error.  I doubt there's any, though, for it is easier to
	  use u8vector->string if that's Gauche-specific code.

2020-01-20  Shiro Kawai  <shiro@acm.org>

	* src/gauche/endian.h: We can't refer to SCM_SYM_BIG_ENDIAN etc publicly.
	  So we export functions (Scm_IsBE() etc.) here, and moved the macros
	  to src/gauche/priv/bytesP.h.  The function definitions are in
	  number.c for now, since we already have Scm_DefaultEndian() there.
	  Also endian.h is now included from gauche.h.

2020-01-19  Shiro Kawai  <shiro@acm.org>

	* ext/gauche/unicode.scm (utf8->ucs4, ucs4->utf8, utf16->ucs4)
	  (ucs4->utf16): Support 'replace' strictness that replaces invalid
	  encoding with U+FFFD.

2020-01-17  Shiro Kawai  <shiro@acm.org>

	* src/srfis.scm: Do not load srfi-101 on (cond-expand ((srfi-101) ...)).
	  Loading srfi-101 without prefix or renaming would shadow important
	  list operators and cause surprises.  Slib uses cond-expand to
	  check library availability and loading srfi-101 would make slib
	  unusable.  Cf. https://github.com/shirok/Gauche/issues/566

2020-01-15  Shiro Kawai  <shiro@acm.org>

	* ext/peg/peg.scm ($symbol): Make it take a symbol; which is just
	  natural.
	($string): We don't need to gather the matched result.  We already know
	  what it would be.
	($many-chars): Deprecate this.  ($many ($. #[...])) isn't much longer.
	($.): Support $symbol as well.
	(return-failure): To explicitly show it's a failure.

2020-01-14  Shiro Kawai  <shiro@acm.org>

	* ext/peg/peg.scm ($alternate): Deprecate $alternate, for
	  it overlaps $sep-by.
	($match1*): Rename from $match, to avoid confusion of util.match
	  macro, which takes multiple clauses.
	($any): Drop optional arg.  It only fails at the end of input.

2020-01-13  Shiro Kawai  <shiro@acm.org>

	* ext/peg/peg.scm ($do, $skip-many, $skip-many1, $followed-by, $count):
	  Make these deprecated, moved to parser.peg.deprecated.
	  $do can be rewritten with $let or $let*.
	  $skip-many and $skip-many1 got new names $many_ and $many1_.
	  $followed-by is renamed to $seq0.
	  $count is the same as $repeat.
	($repeat_, $many-till_): Added for the consistency.
	($unexpect, $skip-count): Removed, for they were not exported and
	  not used anywhere.
	($assert-not): Dropped.  Instead, make $not never consume input.
	($and): Dropped.  Upon the change of $not, we can simply use $seq for
	  negative lookahead assertions, and having $assert for positive
	  lookahead assertions won't be so much hassle, so I see not much
	  point of having $and.

2020-01-12  Shiro Kawai  <shiro@acm.org>

	* ext/peg/peg.scm ($assert, $assert-not, $and): Added zero-width
	  assertions.

2020-01-11  Shiro Kawai  <shiro@acm.org>

	* src/gauche/endian.h, src/gauche/priv/bytesP.h: C MACRO API CHANGE:
	  Split bytes_inline.h into these two; the first one provides a
	  public macros to check endianness symbols, and the second one is
	  private for byte-swapping macros.  The public macros are prefixed
	  with SCM_.
	* src/gauche/bytes_inline.h: Removed.

	* lib/scheme/rlist.scm: srfi-101 is also scheme.rlist

2020-01-10  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-101.scm: Added.

2020-01-08  Shiro Kawai  <shiro@acm.org>

	* ext/mt-random/mt-random.c (Scm_MTInitByUI): When bignum is given
	  as a seed, use all the bits in it.  (Technically this is
	  an INCOMPATIBLE CHANGE, for the random series would change
	  for the same bignum seed.  We assume it is rare that bignum
	  is actually used.)

2020-01-07  Shiro Kawai  <shiro@acm.org>

	* src/srfi-27.scm (random-source-randomize!): If /dev/urandom is
	  available, use 128 bits from it for the seed.

2020-01-04  Shiro Kawai  <shiro@acm.org>

	* src/libio.scm (current-trace-port): A parameter to keep trace output.
	* src/libmacbase.scm: Macro traces goes to current-trace-port.
	* lib/gauche/vm/debugger.scm: Debug print goes to current-trace-port.

2020-01-01  Shiro Kawai  <shiro@acm.org>

	* rfc/uuid.scm: Added.

2019-12-31  Shiro Kawai  <shiro@acm.org>

	* src/compile-3.scm (pass3/optimize-call): Apply constant computation
	  if arguments are not only constants but has inlinable binding.

2019-12-29  Shiro Kawai  <shiro@acm.org>

	* src/libproc.scm (procedure-constant?): Added (internally)

	* lib/gauche/time.scm: make-time-result wasn't exported.

	* src/class.c, src/gauche.h, src/libobj.scm (generic-seal!):
	  Experimentally use 'constant' attribute of generic as the "sealed
	  generic" to allow the compiler to pre-select methods.

2019-12-27  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/record.scm: Enhance define-record-type and make-rtd
	  to allow to specify metaclass, and list of mixin classes separately
	  from record inheritance.

	* lib/gauche/pputil.scm: Render (quote X) as 'X etc.

2019-12-26  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/record.scm: Rewrote define-record-type with er-macro.

2019-12-24  Shiro Kawai  <shiro@acm.org>

	* src/liblazy.scm, src/libmacro.scm (lcons, lcons*, llist*): Implement
	  them in er-macro.

2019-12-21  Shiro Kawai  <shiro@acm.org>

	* data/skew-list.scm: Add list*->skew-list to handle improper lists.
	  Also adapted to the sequence protocol.

	* libsrc/gauche/record.scm (make-rtd): Allow record type to inherit
	  from non-record class, as long as the class doesn't add slots.

2019-12-20  Shiro Kawai  <shiro@acm.org>

	* src/main.c: Make sure libgauche.so in the build tree is linked
	  when invoked with -ftest, even LD_LIBRARY_PATH is set.
	  Based on https://github.com/shirok/Gauche/pull/557 by @pclouds

	* data/skew-list.scm: Added. This will be the base of scheme.rlist.

2019-12-17  Shiro Kawai  <shiro@acm.org>

	* Gauche.spec.in, rpmfiles-*.txt: Remove rpmfiles*.txt from repo,
	  and let it be generated by makefile.  Also make Gauche.spec generated
	  by configure (we tend to forget updating version in it.)

2019-12-15  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-14/set.scm (char-set-diff+intersection!): Provisional
	  fix to avoid depending on evaluation order.
	  https://github.com/shirok/Gauche/issues/554

	* src/libomega.scm: Make charset hashable by default-hash.
	* lib/gauche/interactive.scm (apropos): Allow to take a string
	  https://github.com/shirok/Gauche/pull/555

2019-12-14  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-14.scm, src/libchar.scm (char-set-hash): Moved to core.

2019-12-13  Shiro Kawai  <shiro@acm.org>

	* Release 0.9.9

2019-12-06  Shiro Kawai  <shiro@acm.org>

	* src/compile-1.scm, src/vm.c: Add compiler flag
	  SCM_COMPILE_LEGACY_DEFINE to switch back the behavior of define
	  to older mode, in case if old code depends on it.  Environment
	  variable GAUCHE_LEGACY_DEFINE turn it on.

2019-12-05  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h: Add SCM_UNINITIALIZED that indicates the toplevel
	  variable is bound but not initialized.  It clarifies the state
	  introduced by https://github.com/shirok/Gauche/issues/549, when
	  a variable is bound at the compile-time but its value hasn't been
	  calculated at runtime.  It's different from SCM_UNBOUND, which
	  says the variable is not bound at all.  Like SCM_UNBOUND,
	  SCM_UNINITIALIZED should never be seen by the Scheme user code.
	* src/vm.c (GLOBAL_REF): Catches when a global variable has
	  SCM_UNINITIALIZED, and raises an error.

	* src/gauche/priv/macroP.h (ScmSyntax): Keep defining module for
	  better debugging info.
	  (Scm_MakeSyntax): INCOMPATIBLE CHANGE: move to private header and
	  change API.  No external libraries should've called this.

2019-12-04  Shiro Kawai  <shiro@acm.org>

	* src/compile-1.scm (pass1/define): Allow R6RS-style (define <name>).
	  (pass1/body-rec): Ditto.

	* lib/r7rs-setup.scm (define): We've been exporting Gauche's define
	  instead of vanilla define inadvertently.  Fixed.

2019-11-28  Shiro Kawai  <shiro@acm.org>

	* src/numebr.c, src/read.c: Reject underscores in numeric literals
	  in strict-r7rs mode.

2019-11-26  Shiro Kawai  <shiro@acm.org>

	* src/compile-1.scm (pass1/define): Insert a dummy binding to the
	  compiling module at compile-time.  It is necessary if we compile
	  multiple modules at once, and one imports another with qualifiers.
	  Cf. https://github.com/shirok/Gauche/issues/549

2019-11-07  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/sortutil.scm (stable-sort!): Make sure sort! and
	  stable-sort! can be used without referring to their return values;
	  that is, after calling them, seq argument should point to sorted
	  list.  Before, we assumed sort! is linear-updating, thus caller
	  should use the return value insted of counting the side effects.
	  However, srfi-95 doesn't explicitly says so.

	* lib/srfi-162.scm: Added srfi-162 support.  Move comparator-{min|max}
	  implementation to from srfi-114.scm to srfi-162.scm, and let
	  srfi-114 depend on srfi-162.

2019-11-06  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-173.scm: Added srfi-173 Hooks.

2019-10-21  Shiro Kawai  <shiro@acm.org>

	* src/gauche/vm.h (ScmContFrameRec, ScmVM), src/vm.c: Fix partial
	  conitnuation structure by @Hamayama.  See PR #529 for the details.

2019-10-17  Shiro Kawai  <shiro@acm.org>

	* src/libproc.scm, src/libmacro.scm (let-optionals*, let-keywords),
	  (let-keywords*): Make these macros hygienic, and moved their
	  definitions to libmacro (er-macro-transformer must be placed
	  _after_ the compiler is initialized).

	* src/compile-1.scm (pass1/extended-lambda-body): Insert aux macros
	  hygienically.

2019-10-16  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/json.scm (%number): Fix number parser - converting integral
	  part and fractional part separately to numbers then combining them
	  could introduce rounding errors.

2019-10-13  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (macroexpand-all): Also let it take environment
	  argument, for the consistency with macroexapnd.
	* src/libmacbase.scm (macroexpand, macroexpand-1): INCOMPATIBLE CHANGE:
	  Process output via unravel-syntax by default.  These procedures are
	  mainly used for humans to check macro output, so identifier
	  information is just an annoyance.  If you need identifier information,
	  pass #t to the second arg.  You can also pass a module to the second
	  arg to expand in the given environment.

2019-10-11  Shiro Kawai  <shiro@acm.org>

	* src/libmacbase.scm (trace-macro, untrace-macro): Allow regexp pattern
	  for the macros to trace.  Make it official.

2019-10-03  Shiro Kawai  <shiro@acm.org>

	* src/regexp.c (rc1_lex_charset_category): Support \p{<category} and
	  \P{<category>} in regexp literals.

2019-09-28  Shiro Kawai  <shiro@acm.org>

	* src/char.c: Support \p{<category>}, \P{<cateogry>} notation in
	  charset literals.

2019-09-27  Shiro Kawai  <shiro@acm.org>

	* src/gen-unicode.scm, src/char.c: Add overall general category
	  charsets, e.g. char-set:L for all L* categories.

2019-09-24  Shiro Kawai  <shiro@acm.org>

	* src/gen-unicode.scm, src/char.c: Add ascii-* counterparts to
	  all predefined charsets (except when it doesn't make sense),
	  for the consistency.
	* src/char.c (read_predef_charset): Read [:alpha:] etc. as ASCII
	  charset.  Recognize [:ALPHA:] etc. to cover full Unicode range.
	  Support [:^alpha:] negation (like Go).

2019-09-18  Shiro Kawai  <shiro@acm.org>

	* src/char.c, src/gen-unicode.scm: Also enhance char-set:whitespace
	  and char-set:blank to full Unicode range.  For the backward
	  compatibility, char-set:ascii-whitespace and char-set:ascii-blank
	  is also defined.  \s means char-set:ascii-whitespace.

2019-09-17  Shiro Kawai  <shiro@acm.org>

	* src/char.c, src/gen-unicode.scm: Enhance char-set:digit and
	  SCM_CHAR_SET_DIGIT to include all Unicode Nd characters.
	  Add char-set:ascii-digit to cover the original range. "\d" in
	  regexp and char-set means ascii-digit for the backward compatibility.
	  By @pclouds, https://github.com/shirok/Gauche/pull/525

2019-09-12  Shiro Kawai  <shiro@acm.org>

	* ext/parser/peg.scm ($parameterize): Added, based on the suggestion
	  from @SaitoAtsushi

2019-09-11  Shiro Kawai  <shiro@acm.org>

	* lib/text/line-edit.scm (backward-word, forward-word): Added
	  By @pclouds, https://github.com/shirok/Gauche/pull/524

	* src/main.c: `gosh -h` to emit help message to stdout, and exit
	  with 0, while other unrecognized option use stderr and 1.

2019-09-07  Shiro Kawai  <shiro@acm.org>

	* ext/parser/peg.scm ($let, $let*): Experimenting $let/$let*
	   instead of $do.

2019-08-29  Shiro Kawai  <shiro@acm.org>

	* lib/r7rs-setup.scm: Rename 'r7rs' module to 'r7rs.vanilla', to
	  avoid people from doing (import (r7rs)) accidentally.

2019-08-27  Shiro Kawai  <shiro@acm.org>

	* ext/uvector: Generate interface module gauche.uvector.base,
	  corresponds to (srfi-160 base) library.

2019-08-26  Shiro Kawai  <shiro@acm.org>

	* lib/r7rs.scm -> lib/r7rs-setup.scm: Renamed.  The name 'r7rs' might
	  give a wrong impression to users that (use r7rs) or (import (r7rs))
	  is suffice to use r7rs features, while the 'r7rs' module should
	  never be used or imported directly.  Thus we rename it to
	  r7rs-setup, indicating it's the internal setup for r7rs libraries
	  such as (scheme base).
	  Cf. https://github.com/shirok/Gauche/issues/513

2019-08-17  Shiro Kawai  <shiro@acm.org>

	* src/librx.scm (%regexp-replace-rec): If regexp matches zero-length
	  string, after replacing it we advance one character to loop, to
	  avoid infinite loop.  (We used to make it error.)  This behavior
	  is adopted by Perl and Ruby as well.

2019-08-14  Shiro Kawai  <shiro@acm.org>

	* src/libfmt.scm: Fix ~vr https://github.com/shirok/Gauche/issues/509

2019-08-11  Shiro Kawai  <shiro@acm.org>

	* lib/util/stream.scm: Add srfi-41 procedures
	* lib/srfi-41.scm, lib/scheme/stream: Add srfi-41 (scheme.stream)
	  support

2019-08-02  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/uvlib.scm.stub (TAGvector-swap!, TAGvector-reverse!)
	  (TAGvector-fill!): Let them return #<undef>, so that programs won't
	  accidentally relies on the return value.  NB: TAGvector-fill! used
	  to return the uvector itself, but it's undocumented.

2019-07-27  Shiro Kawai  <shiro@acm.org>

	* src/libsys.scm, src/port.c: Do not restart close() and dup2().
	  https://github.com/shirok/Gauche/issues/504

	* lib/srfi-115.scm, src/regexp.c etc.: More support of SRE and
	  srfi-115, by @pclouds https://github.com/shirok/Gauche/pull/502

2019-07-25  Shiro Kawai  <shiro@acm.org>

	* src/module.c (search_binding): Fix transitive export and only/rename
	  import combination
	  https://github.com/shirok/Gauche/issues/472
	* lib/scheme/vector/*: Added scheme.vector.@ files (R7RS tangerine).

2019-07-23  Shiro Kawai <shiro@acm.org>

	* src/regexp.c, lib/gauche/regexp/sre.scm: Added support of SRE by
	  @pclouds https://github.com/shirok/Gauche/pull/495
	* lib/gauche/cgen/stub.scm: Added # of return values check in
	  'return' macro.

2019-07-23  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/stub.scm (process-body-inner): Support more than
	  3 return values
	  Patch by @pclouds https://github.com/shirok/Gauche/pull/499

	* src/char.c (Scm_CharSetAdd): Fix a bug when adding ASCII char
	  to a large char set inadvertently cleared the large flag.
	  Patch by @pclouds https://github.com/shirok/Gauche/pull/500

	* ext/uvector - Added support of srfi-160 procedures.

2019-07-22  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/precomp.scm (compile-toplevel-form): Handle toplevel
	  begin and include.

2019-07-21  Shiro Kawai  <shiro@acm.org>

	* src/gauche/priv/vmP.h, src/boolean.c, src/gauche/vminsin.scm:
	  EXPERIMENTAL: Add a check if #<undef> appear in the test of
	  conditional expression.  It can be turned on by the environment
	  variable GAUCHE_CHECK_UNDEFINED_TEST.  The expression returning
	  #<undef> means the value doesn't matter.  It leads to an assumption
	  that you can change the value without affecting other parts of the
	  program.  But such change breaks if the value is used in
	  conditional tests.
	  It turned out Gauche internal code has plenty of such cases,
	  so we keep it unofficial until we fix out code first.  Eventually
	  we'd like to prohibit #<undef> from being used in conditional tests.

2019-07-20  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/ifgen.scm: Generate interface modules such as
	  gauche.uvector.u8 etc.  They are to be used as scheme.vector.u8 etc.
	  later.

2019-07-19  Shiro Kawai  <shiro@acm.org>

	* ext/uvector: Added almost full support of c32, c64 and c128 uvectors
	  (except byte swapping).

2019-07-17  Shiro Kawai  <shiro@acm.org>

	* src/gauche/int64.h etc.: Removed [u]int64 emulation code.  Now we
	  assume C99, [u]int64_t types are available.

2019-07-15  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-124.scm, lib/scheme/ephemeron.scm: Added.

2019-07-14  Shiro Kawai  <shiro@acm.org>

	* src/vector.c, src/class.c, src/read.c: Core support of complex
	  uniform vectors (for srfi-160).

	* src/gauche/float.h, src/gauche/number.h, src/number.c:
	  Support of native complex numbers (ScmHalfComplex, complex float
	  and complex double).

2019-07-13  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/generator.scm (grange): Support negative step.

2019-07-09  Shiro Kawai  <shiro@acm.org>

	* src/compile-4.scm (pass4): Avoid generating large local frame
	  for lifted lambdas in toplevel $seq node.

2019-07-08  Shiro Kawai  <shiro@acm.org>

	* src/vminsn.scm (XLREF, XLSET), src/compile-5.scm: Support large env
	  frames---the offset exceeds 1023.  Now we can support up to
	  2^20-1.  There are other instructions (e.g. BOX, ENV-SET) that uses
	  the same range for frame offset so this is the reasonable limit.
	  https://github.com/shirok/Gauche/issues/487

2019-07-06  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/test/script.scm (test-script): Add compile-only option
	  to prevent toplevel forms in the script to be executed.

2019-07-05  Shiro Kawai  <shiro@acm.org>

	* src/compile-1.scm (lambda): Attach formal parameter info to
	  extended lambdas as well (it's been missing for a while).

2019-06-30  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/pputil.scm: Fixes a bug that emits lables in negative
	  numbers https://github.com/shirok/Gauche/issues/484

2019-06-15  Shiro Kawai  <shiro@acm.org>

	* Release 0.9.8

2019-06-13  Shiro Kawai  <shiro@acm.org>

	* libobj.scm (%record-ref): Check unbound slot.  #<unbound> should never
	  be leaked to Scheme world.
	* class.c (Scm_InstanceSlotRef3): New API that checks slot unbound
	  situation.  This one follows the standard *Ref() API.  The old
	  Scm_InstanceSlotRef should be considered as obsoleted.  We'll
	  rename *Ref3() version to *Ref() in 1.0 release.
	* libobj.scm (instance-slot-ref): Rewrite using Scm_InstanceSlotRef3.

2019-06-10  Shiro Kawai  <shiro@acm.org>

	* test/include/srfi-144-tests.scm: Change one flexp-1 test to use
	  test/approx.
	  http://chaton.practical-scheme.net/gauche/a/2019/06/10#entry-5cfe669c-c4805

2019-06-05  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive.scm: (Experimental): Turn on prettyprinting
	  on REPL by default. It can be turned off by setting env var
	  GAUCHE_REPL_NO_PPRINT.

2019-05-20  Shiro Kawai  <shiro@acm.org>

	* ext/vport/vport.c: Accept :name initarg to set port names
	  when a virtual port is constructed.

	* lib/gauche/pputil.scm (layout-misc): Fixed pprint on uvector.

2019-05-10  Shiro Kawai  <shiro@acm.org>

	* src/libmacro.scm (cond-expand): Let 'library' clause accept
	  Gauche-style library name, as well as R7RS-style one.

2019-05-08  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/generator.scm: Add specialized methods for
	  (x->generator <hash-table>) and (x->generator <tree-map>)

	* src/vm.c (PUSH_ARG): Fix a bug that had stepped on UB.  Surfaced
	  depending on optimization.

2019-05-03  Shiro Kawai  <shiro@acm.org>

	* src/gen-unicode.scm: Update Unicode database to 12.1.0, thanks to
	  @qykth-git. https://github.com/shirok/Gauche/pull/471

2019-04-19  Shiro Kawai  <shiro@acm.org>

	* ext/test/unicode.scm (utf8-length): Fix behavior of permissive and
	  ignore strictness for the consistency; these shoudn't throw error if
	  octet is in [0..255], but does throw error if octet is out of range.
	  Within the range, permissive strictness returns 1 for invalid octet,
	  while ignore strictness returns 0 for them.

2019-03-31  Shiro Kawai  <shiro@acm.org>

	* src/number.c (scm_div): Fix bug that yields infinity in (/. +nan.0 0).

2019-03-30  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/numerical.scm (approx=?): Added.

	* src/libnum.scm (flonum-min-normalized, flonum-min-denormalized):
	  Added.

	* src/number.c (Scm_EncodeFlonum): Clean up the code; make it
	  truly inverse of Scm_DecodeFlonum.
	  (Scm__EncodeDouble): Switched argument order for the consistency.
	  This is internal function and shouldn't be used from other than
	  number.c and binum.c.

2019-03-28  Shiro Kawai  <shiro@acm.org>

	* src/libmacro.scm (unwind-protect): Moved here from common-macros.scm,
	  and removed the restriction that prevents from reentering to BODY
	  once HANDLERS are executed.  There are useful cases to reenter to
	  BODY even after HANDLERS are done (such as calculations captured
	  in a delimited continuations within BODY and that doesn't depend
	  on resources cleaned up by HANDLERS).
	  See the comment for other implementation details.  Be aware that
	  unwined-protect now expands to the call of %unwind-protect, and
	  that persists across Gauche versions so we can't change the interface
	  of %unwind-protect casually.

2019-03-26  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/literal.scm: Fix uniform vector literal generation.
	  We have to handle infinity, NaN, and minus zero properly.

	* lib/srfi-42.scm (srfi-42-uvector): Support uvector as well.

	* ext/uvector/uvector.scm: (uvector->list, uvector->vector):
	  Add generic version.

2019-03-25  Shiro Kawai  <shiro@acm.org>

	* src/libnum.scm (-zero?): Added experimentally.  Could be better
	  to provide signbit instead; not sure yet.

2019-03-24  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/procedure.scm (disasm): Show lifted closure (the one
	  that's only referenced thru closed env).

	* src/compile.scm (transparent?): Recognize some $ASM node transparent.
	* src/compile-3.scm (pass3/$SEQ): Let empty $seq at the last of
	  sequence prevent the previous constant expression from being
	  optimized away.

	* src/compile-2.scm (pass2/dissolve-apply): Optimize away TAIL-APPLY
	  if we know all the arguments.  It often happens after inline expansion.
	  Note: As the result of this optimination, merely 'apply'-ing
	  procedure to a list of argument won't suppress further inlining,
	  e.g. (apply + '(1 2)) will become constant 3.  Needed to tweak
	  tests so that we can ensure the tested procedures are called.
	* src/compile.scm, src/main.c: Add -fnodissolve-apply option to
	  disable above optimization.

2019-03-23  Shiro Kawai  <shiro@acm.org>

	* src/vminsn.scm (SCM_NUMMUL2): Fix: finite inexact number multiplied
	  by an exact zero should yield an exact zero (consistency with
	  Scm_Mul).
	* src/liblist.scm (iota): Fix: make sure inexact step calculation
	  uses inexact multiplication (because of above fix, normal
	  multiplication can yield exact zero).

2019-03-21  Shiro Kawai  <shiro@acm.org>

	* ext/srfi/srfi-144.scm: Start adding srfi-144.

2019-03-16  Shiro Kawai  <shiro@acm.org>

	* ext/uvector: Move r7rs core bytevector procedures into
	  gauche.uvector.

2019-03-15  Shiro Kawai  <shiro@acm.org>

	* lib/scheme: Add aliases for R7RS-large Tangerine Edition:
	scheme.mapping -> srfi-146
	scheme.mapping.hash -> srfi-146.hash
	scheme.generator -> srfi-158 (change from srfi-121)
	scheme.division -> srfi-141
	scheme.bitwise -> srfi-151
	scheme.fixnum -> srfi-143

2019-03-13  Shiro Kawai  <shiro@acm.org>

	* src/libmacro.scm (cut, cute, define-values, set!-values),
	  lib/srfi-26.scm, lib/gauche/defvalues.scm: Make these macros
	  built-in.

2019-03-12  Shiro Kawai  <shiro@acm.org>

	* src/libmacro.scm (cond-expand), lib/srfi-0.sm: Make cond-expand
	  built-in.

2019-03-11  Shiro Kawai  <shiro@acm.org>

	* src/libmacro.scm (rec), lib/srfi-31.scm: Make 'rec' built-in.

2019-03-10  Shiro Kawai  <shiro@acm.org>

	* gc: Bumped bdwgc 8.0.4 and libatomic_ops 7.6.10
	  by @qykth-git https://github.com/shirok/Gauche/pull/457

2019-03-06  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/matrix.scm: Added array-negate-elements! and
	  array-reciprocate-elements!.
	  See also @Hayamaya's fix https://github.com/shirok/Gauche/pull/456.

2019-03-01  Shiro Kawai  <shiro@acm.org>

	* ext/peg/peg.scm ($match1): Added experimentally.

2019-02-22  Shiro Kawai  <shiro@acm.org>

	* src/symbol.c: Make GAUCHE_KEYWORD_IS_SYMBOL default.  It's been
	  4.5 yrs since its introduction.  To get the old behavior, a user
	  can set GAUCHE_KEYWORD_DISJOINT env var.

	* src/libnum.scm: Let trigonometric functions return exact value
	  when the arg is exact zero.

2019-02-21  Shiro Kawai  <shiro@acm.org>

	* ext/peg/peg.scm ($match): Added experimentally.

2019-02-19  Shiro Kawai  <shiro@acm.org>

	* lib/libmisc.scm, lib/libomega.scm (identity): Attach compiler macro
	  to identity so that it can be optimized away when used literally.
	  It is useful for macro---identity inserted by macro expansion will
	  cost nothing.  We need to move the definition to libomega, though,
	  for define-inline/syntax requires the compiler to be booted up.

2019-02-16  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive.scm, src/main.c: Instead of loading
	  gauche.interactive, main.c loads gauche/interactive/init.scm,
	  which in turn 'use' gauche.interactive.  This is to exclude
	  side-effect causing expressions from gauche.interactive module,
	  so that it can be used as an ordinary module.  Notably, the code
	  to load .gaucherc is done in gauche/interactive/init.scm.
	  Cf. https://github.com/shirok/Gauche/issues/448

2019-01-30  Shiro Kawai  <shiro@acm.org>

	* INSTALL.adoc: Converted to asciidoc by @qykth-git
	  https://github.com/shirok/Gauche/pull/441

2019-01-28  Shiro Kawai  <shiro@acm.org>

	* src/hash.c: Support uniform vector hashing
	  Patch by @Hamayama: https://github.com/shirok/Gauche/pull/440
	  Plus enabling default-hash work on every uvector types.

2019-01-26  Shiro Kawai  <shiro@acm.org>

	* configure.ac: Generate features.{c|flags} at configuration time.
	  When cross compiling, features.flags is passed to BUILD_GOSH
	  so that it expants cond-expand according to the host architecture
	  instead of the build architecture.
	  Cf. https://github.com/shirok/Gauche/issues/407

2019-01-24  Shiro Kawai  <shiro@acm.org>

	* src/gen-features.sh: Generate Scm_AddFeatures code by scanning
	  config.h instead of relying C preprocessor.

2019-01-19  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/cise.scm: Support function type in the form:
	  (.function (arg::type ...) ::rettype)

2019-01-18  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/cise.scm: Support struct and union types, in the
	  following forms:
	    (.struct tag (member::type ...))
	    (.struct (member::type ...))
	    (.struct tag)
	  and substituting .struct with .union.
	  (declare-cvar, define-ctype): Added.

2019-01-17  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/cise.scm (declare-cfn): Added.  See
	  https://github.com/shirok/Gauche/pull/430

2019-01-15  Shiro Kawai  <shiro@acm.org>

	* src/gauche-package.in, lib/gauche/package/compile.scm:
	  Add -k | --keep-c-files option.
	  Add --no-line option to suppress #line directive.
	  (cf: https://github.com/shirok/Gauche/issues/427)

2019-01-13  Shiro Kawai  <shiro@acm.org>

	* lib/control/mapper.scm: Added.

2019-01-11  Shiro Kawai  <shiro@acm.org>

	* src/gauche/priv/atomicP.h: If GC is using compiler-builtins, we
	  also use them and totally depart from AO_t stuff.  OSX compiler
	  seems picky about types of atomic and atomic variables, so
	  we introduce two typedefs, ScmAtomicWord and ScmAtomicVar, and
	  switch them whether we use C11 intrinsics or libatomic_ops.

2019-01-10  Shiro Kawai  <shiro@acm.org>

	* configure.ac, src/gauche/priv/atomicP.h: Drop duplicate check of
	  libatomic_ops in configure.ac; instead, we rely on the check
	  in gc/configure and take the result.  Also adapted to the
	  intrinsic support of atomic operations.

2019-01-04  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/numerical.scm (floor/), lib/srfi-141.scm (ceiling/):
	  Fix bugs that returns incorrect values when remainder is zero.
	  https://github.com/shirok/Gauche/issues/420

	* src/gen-unicode.scm, src/char.c: Replace predefined charsets
	  for static immutable char-sets.  Note that SCM_CHAR_SET_x enums are
	  changed.  Srfi-14's predefined charsets such as char-set:letter
	  are now in gauche module.  In addition to srfi-14 sets, we have
	  char-set:Lu etc., as well.

2019-01-01  Shiro Kawai  <shiro@acm.org>

	* src/gen-unicode.scm, lib/text/unicode/codeset.scm: Generate static
	  immutable char-sets corresponding to Unicode General Category.

2018-12-29  Shiro Kawai  <shiro@acm.org>

	* gc/: Update to libgc 8. https://github.com/shirok/Gauche/pull/414

	* src/compile-1.scm (_, ...): Bind these two as syntaxes so that they
	  can be exported from (scheme base).

2018-12-28  Shiro Kawai  <shiro@acm.org>

	* src/libmacro.scm (quasirename): Adjust behavior of quasirename
	  by the environment variable GAUCHE_QUASIRENAME_MODE, to help
	  the transition.

2018-12-26  Shiro Kawai  <shiro@acm.org>

	* src/libmacro.scm (quasirename): Fixed to handle nested quasiX
	  properly.  In order to work with nested quasiquotes, we now
	  recognize (quasirename expr `form) as the proper form.  We'll
	  support the old format (without quasiquote) for a while.

2018-12-22  Shiro Kawai  <shiro@acm.org>

	* src/libmac.scm (define-compiler-macro): Drop support.  It now
	  just triggers an error.

2018-12-21  Shiro Kawai  <shiro@acm.org>

	* gc/: Update to libgc 7.6.10 / libatomic_ops 7.6.8
	  https://github.com/shirok/Gauche/pull/409

	* src/*.c: Remove pre-GAUCHE_API_0_95 entries.

2018-12-20  Shiro Kawai  <shiro@acm.org>

	* Release 0.9.7

2018-12-18  Shiro Kawai  <shiro@acm.org>

	* src/core.c (Scm_DisableFeature), src/main.c (feature_options):
	  Allow to disable a feature by -F-feature option.

2018-12-16  Shiro Kawai  <shiro@acm.org>

	* ext/peg - Deprecate pre-defined character parsers (anychar,
	  upper, lower, letter, alphanum, digit, hexdigit, newline,
	  tab, space, spaces, and eof), and shorthands ($s, $c, and $y).
	  Those names are easy to conflict (esp. 'newline') yet not so
	  much useful, for it's quite easy to define.
	  We added $any and $eos parser makers; with inlining
	  there's no overhead from using predefined parsers.  We also add
	  $., which supersedes $s and $c, and also can be used for $one-of.
	  Although parser.peg is unofficial, they've been around for years
	  and there might be code that depends on it, so we provide the
	  deprecated APIs in a separate module, parser.peg.deprecated.

2018-12-08  Shiro Kawai  <shiro@acm.org>

	* configure.ac (--with-gperftools), main.c, signal.c: Support linking
	  with gperftools.

2018-12-06  Shiro Kawai  <shiro@acm.org>

	* src/libomega.scm: Turn on generic dispatcher on a few popular
	  gfs experimentally.  Env var GAUCHE_DISABLE_GENERIC_DISPATCHER
	  turn off this feature in case if there's a serious bug.

	* src/parameter.c: Rename Scm_DefinePrimitiveParameter to
	  Scm_BindPrimitiveParameter; it's weird that Scm_Define* returns
	  a value.

2018-12-04  Shiro Kawai  <shiro@acm.org>

	* src/parameter.c: Make primitive parameter an ScmObj.

2018-12-03  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pack-iform, unpack-iform): Save iform symbolic tags
	  instead of numeric tags in packed iforms, so that we can change
	  numeric tag values across versions.

2018-12-01  Shiro Kawai  <shiro@acm.org>

	* src/hash.c (Scm_HashCoreCopy): Fix a bug that didn't copy
	  entries' hashval.  It won't surface until the copied hashtable
	  is rehashed, at that time the entries are chained in a wrong
	  bucket.  The culprit of https://github.com/shirok/Gauche/issues/400

2018-11-26  Shiro Kawai  <shiro@acm.org>

	* src/parameter.c: Add 'lazy parameter' feature, that implicitly
	  forces the parameter value when dereferenced.  For now, we have
	  this feature available only from C API (use SCM_PARAMETER_LAZY flag
	  upon creation of ScmPrimitiveParameter).
	* ext/tls: Made default-tls-class a lazy parameter, and set its
	  value to <mbed-tls> when mbedTLS is used but not axTLS.  We need it
	  to be lazy so that rfc.tls.mbed won't be loaded during loading
	  rfc.tls.

2018-11-24  Shiro Kawai  <shiro@acm.org>

	* src/parameter.c etc.: C API/ABI INCOMPATIBLE CHANGE: Revised
	  low-level parameter handling.  Obsoleted ScmParameterLoc and
	  introduced opaque ScmPrimitiveParameter.  Scm_InitParameterLoc,
	  Scm_ParameterRef and Scm_ParameterSet still work but deprecated.
	  Scm_DefinePrimitiveParameter API is incompatibly changed to return
	  ScmPrimitiveParameter*.  Updated other components to use the new API.

2018-11-22  Shiro Kawai  <shiro@acm.org>

	* src/parameter.h: Change parameter table rayout
	  (ABI incompatible change - recompilation needed).

2018-11-21  Shiro Kawai  <shiro@acm.org>

	* ext/tls: Support 'system CA store for axTLS as well. By @qykth-git
	  https://github.com/shirok/Gauche/pull/398

2018-11-18  Shiro Kawai  <shiro@acm.org>

	* ext/tls: Support 'system CA store on Windows/mbed, that fetches
	  CA certs from the system certificate store.  By @qykth-git
	  https://github.com/shirok/Gauche/pull/395

2018-11-12  Shiro Kawai  <shiro@acm.org>

	* src/vminsn.scm: Reorder instructions for better understandability,
	  and removed obsoleted instructions.  This break binary compatibiltiy.
	  We break it anyways in 0.9.7, so let's do this now.

2018-11-02  Shiro Kawai  <shiro@acm.org>

	* src/genconfig.in, m4/gauche.m4: Drop support of fixup-extension.
	  GC can already detects data section of DSO files.

2018-11-01  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/macroutil.scm, src/libomega.scm (quasirename): Move
	  quasirename into core.

2018-10-27  Shiro Kawai  <shiro@acm.org>

	* ext/tls: Adapted to <connection> interface.  INCOMPATIBLE CHANGE:
	  Now tls-connect and tls-accept takes socket, not the fd.
	  These procedures are undocumented.

	* src/class.c, lib/gauche/connection.scm, ext/net/net.scm:
	  Add <connection> interface.  Make <socket> implements connection.

2018-10-25  Shiro Kawai  <shiro@acm.org>

	* src/liblist.scm (assoc-adjoin, assoc-update-in): Added.

2018-10-19  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/fileutil.scm (glob-fold): Let glob sort the result
	  by default.  The sorter argument allows to customize sorting,
	  or disable sorting at all.  Inspired by comment from NIIBE Yutaka.

2018-10-15  Shiro Kawai  <shiro@acm.org>

	* libsrc/file/util.scm (call-with-temporary-file),
	  (call-with-temporary-directory): Added.

2018-10-14  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/package/build.scm (gauche-package-tarball): Modernize
	  tarball creation:
	  - Reading package.scm for package name and version
	  - Add operations what "DIST tgz" has bee doing---creating
	    exclusion files.
	  - Used with gauche.configure, this basically eliminates the need
	    of DIST script.

	* lib/gauche/configure.scm (cf-check-func, cf-check-funcs)
	  (cf-msg-notice): Added.

2018-10-13  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/configure.scm (cf-check-type, cf-check-types)
	  (cf-check-decl, cf-check-decls, cf-check-member, cf-check-members):
	  Added.

2018-10-11  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/configure.scm (cf-init-gauche-extension),
	  (cf-output-default): Simplify boilerplate script a lot
	  by including common tasks in these two APIs.

2018-10-03  Shiro Kawai  <shiro@acm.org>

	* ext/net/addr.c: Avoid type punning to access ipv6 address fields.

2018-10-01  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/package.scm (make-gauche-package-description): Instead of
	  rejecting unrecognized keywords, just issue warnings.  It is useful
	  to update package.scm for the newer Gauche and still allowing
	  it to work for older Gauche.
	  Also added :providing-modules to gpd.

	* lib/gauche/configure.scm (cf-check-lib, with-cf-subst): Add support
	  of cf-check-lib.  Auxiliary funciton with-cf-subst is also useful
	  so we export it.

2018-09-29  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-154.scm (dynamic-lambda): Updated to the final srfi-154.
	  Make it official.

2018-09-22  Shiro Kawai  <shiro@acm.org>

	* lib/util/digest.scm (digest-hexify): Accept u8vector as well, for
	  the consistency.
	* doc/modutil.texi: Make it clear that digester accepts both strings
	  and u8vectors.

2018-09-17  Shiro Kawai  <shiro@acm.org>

	* configure.ac: 0.9.7_pre1

	* src/gauche.h: Switched C API 0_95 by default - the following functions
	  are affected:
	  - Change Scm_Raise(e) to Scm_Raise(e, 0).
	    Use Scm_Raise2(e, 0) to work both 0_9 and 0_95 API.
	  - Change Scm_ReportError(e) to Scm_ReportError(e, SCM_OBJ(SCM_CURERR)).
	    Use Scm_ReportError2(e, port) to work both 0_9 and 0_95 API.
	  - Change Scm_MakeMacro(name, xformer) to
	    Scm_MakeMacro(name, xformer, SCM_FALSE, SCM_FALSE)
	    Use Scm_MakeMacroFull(e, x, s, d) to work both API.
	  - Change Scm_VMThrowException(vm, exc) to
	    Scm_VMThrowException(vm, exc, 0).

2018-09-16  Shiro Kawai  <shiro@acm.org>

	* configure.ac: Bumped up ABI version to 0.97, for we can't safely
	  use extensions compiled with 0.9.6 or before.
	* src/libomega.scm: Removed the compatibility code that searches
	  extension modules compiled with 0.9.

	* src/gauche/string.h: INCOMPATIBLE CHANGE: Switched string length
	  and size from int to ScmSmallInt.  Also the 'flags' argument becomes
	  u_long.  Both ABI and C API are affected.
	  For C code, callers of those APIs that receives string length and
	  size and pointers needs to be modified: Scm_GetStringContent,
	  Scm_CStringArrayToList and Scm_DStringPeek.
	  Precompiled code includes static data of struct ScmStringRec,
	  so they need to be recompiled.

2018-09-08  Shiro Kawai  <shiro@acm.org>

	* doc/modutil.texi: Document compat.chibi-test.

2018-08-30  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-113.scm (set<? etc.): The reference implementation assumed
	  (set<? x y) == (not (set>=? x y)) but it is incorrect.

2018-08-23  Shiro Kawai  <shiro@acm.org>

	* ext/array.scm (array-copy): Added as a public API.
	  NB: We remove copy-object generic function.  It is undocumented
	  and only used internally in matrix.scm.  If we ever expose it,
	  we need to support otehr types consistently.

2018-08-18  Shiro Kawai  <shiro@acm.org>

	* lib/text/mexpr.scm: Added.

2018-08-17  Shiro Kawai  <shiro@acm.org>

	* ext/peg/peg.scm ($satisfy): Accept result argument that can modify
	  the parse result.  The result argument, if given, is a procedure
	  that takes two arg, the input datum and the result of predicate.
	  By default, the input datum is returned as is.
	  ($string, $string-ci, $char, $char-ci, $one-of): Allow input being
	  not a character stream.  Useful if we have a separate tokenizer.

2018-08-16  Shiro Kawai  <shiro@acm.org>

	* src/libexc.scm (%reraise), lib/gauche/commom-macros.scm (guard):
	  The argument of %reraise isn't used, so we omit it.
	  (For the backward compatibility, we allowed it but ignore).
	  The C API Scm_VMReraise is changed.

2018-08-14  Shiro Kawai  <shiro@acm.org>

	* various files: Further code cleanup.  The following C API
	  has changed:
	  - Scm_ReadDigitsAsLong : the last arg is ScmSize* now.
	  - Scm_Putz : len arg is ScmSize now.
	  - ScmCharSet : size member is ScmSize now.
	* src/libio.scm (%open-input-file, %open-output-file): Check and
	  honor element-type keyword arg (only makes sense on Windows,
	  but we check its vailidity on Unix as well).

	* gc/ : Bumped to bdwgc 7.6.8 (by @qykth-git)
	  https://github.com/shirok/Gauche/pull/373

2018-08-11  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h (ScmSize): Use ScmSize instead of int where it's
	  appropriate.
	  THIS IS C API COMPATIBILIY-BREAKING CHANGE.  Extenstions that
	  do the following may be required to recompile and/or edit.
	  - C code that defines custom port.  Buffer sizes and the amout
	    of data trasferred are now ScmSize instead of int.  The ScmPort
	    structure layout may change.
	  - Scm_ListToArray: Now the # of elements is in ScmSize.  The
	    second argument type is changed from int* to ScmSize*.

2018-08-09  Shiro Kawai <shiro@acm.org>

	* lib/text/html-lite.scm: Add HTML5 elements
	  by @tabe https://github.com/shirok/Gauche/pull/363

2018-08-08  Shiro Kawai  <shiro@acm.org>

	* src/libeval.scm (load-from-port): If internal encoding is utf-8,
	  ignore BOM at the beginning of file.

2018-07-17  Shiro Kawai  <shiro@acm.org>

	* ext/tls: Support server cert validation in axTLS, too.
	  https://github.com/shirok/Gauche/pull/362
	* lib/rfc/http.scm (start-secure-agent)
	  It is desirable to validate certs always.  However, for the backward
	  compatiblity, we proceed the migration gradually.
	  - If tls-ca-bundle-path isn't given at configuation time, we set its
	    default value to #f.
	  - If tls-ca-bundle-path is #f at the time of start-secure-agent,
	    we use SSL_SERVER_VERIFY_LATER.  (It is ignored by <mbed-tls>).
	  Next step is to issue warnings when we don't validate certs, then
	  we switch the default to always validate unless user explicitly
	  asks not to.

2018-07-15  Shiro Kawai <shiro@acm.org>

	* src/libobj.scm (%make-accessor): Fix the confusing behavior regarding
	  implicit setter gf visibility, reported in
	  https://sourceforge.net/p/gauche/mailman/message/36363814/ .
	  Now we try to find setter gf from the getter gf first, before
	  creating our own |setter of ...|.  (Actually, we might get rid of
	  |setter of ...| thing altogether by keeping setter gf anonymous,
	  but there may be old code that depends on the existence of
	  the named setter gf.)

	* src/core.c: Add feature identifier gauche.sys.zlib to detect
	  whether rfc.zlib is available.  (The name of feature identifier
	  is debatable; let's see how it sits.)
	* lib/text/info.scm: Make it work even --without-zlib.

2018-07-09  Shiro Kawai <shiro@acm.org>

	* ext/sxml/src/SSAX.scm: Fix whitespace handling.
	  https://github.com/shirok/Gauche/pull/360
	* ext/sxml/src/serializer.scm (srl:attribute->str-lst): Dropped
	  special handling of boolean attributes indicated as attr='attr'.
	  It is indistinguishable from a string attribute with the value
	  being 'attr'.  It is harmless to render it as ordinary attributes.
	  Patch by @pclouds https://github.com/shirok/Gauche/pull/359

2018-07-04  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive/info.scm: Allow PAGER to have command and
	  options.  https://github.com/shirok/Gauche/pull/358

2018-07-03  Shiro Kawai  <shiro@acm.org>

	* Release 0.9.6

2018-07-02  Shiro Kawai  <shiro@acm.org>

	* Document regular-string$.

2018-07-01  Shiro Kawai  <shiro@acm.org>

	* ext/tls/tls.scm: Set rfc.tls.mbed autoloaded by referencing
	  <mbed-tls>.  The user is no longer supposed to directly use
	  rfc.tls.mbed; just (use rfc.tls) and refer to <mbed-tls> if
	  you need it.

2018-06-26  Shiro Kawai  <shiro@acm.org>

	* ext/tls: Split mbedTLS-dependent part to a separate DSO. Preparation
	  to build static linked binary without depending libmbed.
	* src/vector.c (Scm_GetBytes): Added.

2018-06-24  Shiro Kawai  <shiro@acm.org>

	* ext/tls/tls.ac: Allow to compile both axtls and mbedtls support.
	  By default, axtls is automatically enabled, and mbedtls is enabled
	  when it's available.
	  Also changed --enable-tls-ca-file-path to --with-ca-bundle, following
	  curl's configure option.
	* ext/tls/tls.scm (tls-ca-bundle-path): Renamed from
	  tls-ca-certificate-path.
	  (default-tls-class): Make TLS class used by make-tls parameterized.
	  (<ax-tls>, <mbed-tls>): Conditionally exported.

2018-06-23  Shiro Kawai  <shiro@acm.org>

	* src/libstr.scm (string-incomplete->complete): Add :escape mode
	  to escape illegal bytes in lossless way.
	* src/string.c (Scm_StringIncompleteToComplete): Obsolete this
	  C API; for the function is now implented in libstr.scm.

2018-06-14  Shiro Kawai <shiro@acm.org>

	* src/gauche/vector.h, src/libvec.scm, ext/uvector/uvlib.scm.tmpl:
	  Fix integer overflow of TAGvector-length.

2018-06-09  Shiro Kawai  <shiro@acm.org>

	* ext/tls/tls.c: Make ca cert path changeable at runtime, using
	  a parameter tls-ca-certificate-path.

2018-06-02  Shiro Kawai  <shiro@acm.org>

	* ext/tls: Incorporated mbedTLS support by @qykth-git.
	  (https://github.com/shirok/Gauche/pull/350)
	  Note that the actual availability of proper version of mbedTLS
	  isn't checked (yet).  We also wanto to make TLS subsystem switchable
	  at runtime.  Until then, we consider this unofficial.

2018-05-25  Shiro Kawai  <shiro@acm.org>

	* src/srfis.scm: Make srfi-146 support official, for it is
	  finalized.

2018-05-14  Shiro Kawai  <shiro@acm.org>

	* lib/data/random.scm (regular-string$): EXPERIMENTAL - a generator
	  maker that generates strings that match the given regexp.

2018-05-13  Shiro Kawai  <shiro@acm.org>

	* src/libexc.scm (print-default-error-heading): Actually, limiting
	  the length of error message is better to be done in the printing
	  stage, instead of error object constructing stage.  Reverting the
	  previous Scm_Error change and add the feature here.

2018-05-12  Shiro Kawai  <shiro@acm.org>

	* src/error.c (Scm_Error etc.): Limit the length of error message
	  header.  When error irritant is a huge structure, displaying the
	  entire structure in the error header gets in way of debugging.
	  It also makes Emacs slow when it happens in *scheme* buffer
	  with font-locking on.
	  NB: We need to do the similar thing in Scheme-side definition
	  of error.

2018-05-09  Shiro Kawai  <shiro@acm.org>

	* src/char.c (Scm_CharLexerCategoryP): Common lexer predicate to be
	  used in both symbol writer and symbol reader.
	* src/symbol.c (Scm_WriteSymbolName): Make symbol writer to avoid
	  escaping iff the symbol name is a valid R7RS symbol name without
	  escapes.

2018-04-02  Shiro Kawai  <shiro@acm.org>

	* src/libnum.scm (flonum-epsilon): Added.

2018-03-16  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/process.scm (do-process!): Added.

2018-03-05  Shiro Kawai  <shiro@acm.org>

	* doc/coresyn.texi: Document define-inline.

2018-02-28  Shiro Kawai  <shiro@acm.org>

	* gc/: Update to bdwgc 7.6.4
	  Patch from @qykth-git https://github.com/shirok/Gauche/pull/342

2018-02-17  Shiro Kawai  <shiro@acm.org>

	* gauche.process: Fix a bug that prevented extra keyword arguments
	  such as :directory to be given to high-level API like
	  call-with-input-process etc.

2018-02-13  Shiro Kawai  <shiro@acm.org>

	* configure.ac: Make BUILD_GOSH precious variable.
	* src/Makefile.in: Add BUILD_GOSH_FLAGS make variable so that
	  the user can give extra flags to BUILD_GOSH during precompilation.
	  (It only matters when building from scratch; building from tarball
	  isn't affected.)
	  This is useful when you want to build HEAD with the latest release
	  of gosh, while you've already installed newer gosh.  After ./configure,
	  run make BUILD_GOSH_FLAGS=-v0.9.5 will use 0.9.5 instead of
	  the installed version. (You have had 0.9.5 installed, of course).
	* ext/Makefile.ext.in: Use BUILD_GOSH when cross compiling.

2018-02-09  Shiro Kawai  <shiro@acm.org>

	* doc/modutil.texi: Document text.template; make it official.

2018-02-01  Shiro Kawai  <shiro@acm.org>

	* src/main.c, doc/program.texi: Document -v<version> option; make it
	  official.

2018-01-26  Shiro Kawai  <shiro@acm.org>

	Squash merge of @Hamayama's work on R7RS-compatible exception handling
	https://github.com/shirok/Gauche/pull/335
	* src/gauche/vm.h (ScmEscapePoint): Add reraised flag.
	* src/vm.c (Scm_VMDefaultExceptionHandler): Allow to return from this
	  if the exception is reraised.
	  (Scm_VMReraise): API for reraise exception to return from the
	  caller of raise.
	* lib/gauche/common-macros.scm (guard): Adjust semantics to R7RS.
	* lib/r7rs.scm (with-exception-handler): Added R7RS-compatible
	  with-exception-handler.

	* lib/gauche/common-macros.scm: Make it a separate module to hide
	  auxiliary toplevel bindings.

2018-01-16  Shiro Kawai  <shiro@acm.org>

	* src/compaux.c: Make identifier's module and env slots immutable.

2018-01-14  Shiro Kawai  <shiro@acm.org>

	* gc: Bumped GC version to 7.6.2.  Patch from @qykth-git
	  https://github.com/shirok/Gauche/pull/337

2018-01-13  Shiro Kawai  <shiro@acm.org>

	* src/macro.c: Renaming identifiers in template only at the
	  macro expansion time.  This avoids extra wrapping of identifiers.

2018-01-06  Shiro Kawai  <shiro@acm.org>

	* src/libmod.scm, src/compile.scm (free-identifier=?): Moved it to
	  compile.scm, for it needs access to internal env-lookup.
	  Also rewrote er-compare in C to speed up syntax-rules expander.

2018-01-05  Shiro Kawai  <shiro@acm.org>

	* src/macro.c (compare), src/compile.scm (er-comparer):
	  Fix literal identifier comparison in syntax-rules macro, based
	  on the patch by @Hamayama https://github.com/shirok/Gauche/pull/330
	  We should employ the same semantics as er-comparer when we deal
	  with literals, ellipses and underbar, while expanding syntax-rules
	  macro.

2017-12-26  Shiro Kawai  <shiro@acm.org>

	* src/libeval.scm (add-embedded-code-loader!): Added to support
	  statically linked applications.
	* lib/gauche/cgen/standalone.scm: Fixes library loading via
	  relative paths.

2017-12-25  Shiro Kawai  <shiro@acm.org>

	* src/libeval.scm (find-load-file): Introduced an alternative way to
	  trigger load hooks; if a path in load-path begins with "@", it will
	  invoke load hooks.  With this, we can make the relative path loading
	  from string ports work.  The previous way of using "" to trigger
	  the load hooks is deprecated, for it can be achieved by just "@".
	  See the comment of find-load-file for the details.

	* src/libio.scm (open-input-string, open-output-string): Add name
	  keyword argument to specify the name of created ports.

2017-12-24  Shiro Kawai  <shiro@acm.org>

	* rfc.http (http-request): Do not include extra headers whose value
	  is #f.

2017-12-23  Shiro Kawai  <shiro@acm.org>

	* Makefile.in: Create static link library by default.

	* src/gen-staticinit.scm: Split gdbm-related code to a separate C
	  file.  This enables to generate a stand-alone binary without linking
	  GPL code.

	* lib/gauche/pputil.scm (pprint): Change default print-length and
	  print-level to #f, and add newline after printing by default.
	  That behavior captures the most common use case.

2017-12-22  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/precomp.scm
	  (cgen-scm-path->c-file,cgen-c-file->initfn): expose those translation
	  functions so that other tools can use consistent naming scheme.

2017-12-14  Shiro Kawai  <shiro@acm.org>

	* src/macro.c (compile_rule1): Fix the long-standing bug in hygienic
	  macro-generating macros.  The key was that we assumed we could
	  avoid renaming pattern variables, for they wouldn't appear in the
	  output (because they would be replaced by macro input).
	  However, if the pattern itself is generated by hygienic macro,
	  we have to distinguish the generated pattern variables from bare
	  symbols carried over from macro input.

2017-12-11  Shiro Kawai  <shiro@acm.org>

	* src/compaux.c (Scm_MakeIdentifier, Scm_IdentifierEnv): Delay the
	  truncation of closed binding frames until needed.  This fixes a bug
	  that local macro-inserted identifier fails to refer to the binding
	  introduced in the same level of internal defines.  See the enabled
	  tests in test/macro.scm for the concrete examples.
	  Note: We changed the member name of ScmIdentifierRec (env -> frames)
	  to detect code that touches the member directly.  Such code should
	  use Scm_IdentifierEnv() instead.
	  This fix is based on the patch provided by @Hamayama
	  https://github.com/shirok/Gauche/pull/328

2017-12-09  Shiro Kawai  <shiro@acm.org>

	* src/libmac.scm (unravel-syntax): Added experimentally.
	  (call-macro-expander): Use unravel-syntax to display macro input
	  and output.

2017-12-08  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm: Removed PATTERN frame - no longer used.  This opens
	  up a new optimization for cenv-lookup-syntax (it doesn't need to
	  check frame type at all), but we'll take care of it later.
	  (cenv-toplevel?): Since R7RS let{rec}-syntax delimits scope, we
	  shouldn't treat <body> of outermost let{rec}-syntax as toplevel.
	  That makes this procedure simpler; just check if the frames are empty.

2017-11-30  Shiro Kawai  <shiro@acm.org>

	* ext/tls: Update to axTLS 2.1.4, by @qykth-git.

2017-11-24  Shiro Kawai  <shiro@acm.org>

	* ext/sxml/src/serializer.scm: Adapt to HTML5, fix from @pclouds
	  https://github.com/shirok/Gauche/pull/322

2017-11-17  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/http.scm (http-request): Fix a bug in the path where
	  we give up redirect and the 3xx response has a body.

2017-11-04  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/process.scm (%check-redirects): Fix a bug that rejected
	  uvector for '<<' redirects.

2017-11-03  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/generator.scm, lib/srfi-158.scm (ggroup)
	  (genreator-map->list): Moved srfi-158 extra 2 generator procedures
	  to gauche.generator.  Leave accumulators in srfi-158.
	  (make-bits-generator): Dropped.  This was in srfi-121 draft but
	  didn't get in to final srfi, so shouldn't have been added.
	  We have bits->generator.  Also srfi-151 has make-bitwise-generator.

2017-10-31  Shiro Kawai  <shiro@acm.org>

	* src/vm.c, src/vmcall.c, src/gauche/priv/vmP.h, src/main.c:
	  Experimentally add call trace feature, proposed several years ago.
	  For now, we make it available when env var GAUCHE_CALL_TRACE is set
	  to a positive integer (the API is ugly, so we may change it later).
	  This change incurs slight overhead for every call ever we don't use
	  call traces.  We'll benchmark it and if it's a problem we might
	  need more heavy changes (e.g. switch VM loop entirely with or without
	  instrumentation.)

2017-10-28  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-158.scm: Update to the final srfi.

2017-10-24  Shiro Kawai  <shiro@acm.org>

	* src/string.c (Scm_StringCmp): Allow comparing complete string vs.
	  incomplete string. It is inconveninent if we throw an error.
	  We compare based on the octet array, and if both have the same
	  octets, complete string comes before incomplete string.
	  NB: We haven't touched case-insensitive comparison; we could make
	  it work if we define incomplete string fold into itself.

2017-10-20  Shiro Kawai  <shiro@acm.org>

	* src/libfmt.scm (format): Support ~f directive.
	* Makefiles: Make them work when install destination path contains
	  whitespaces.

2017-10-19  Shiro Kawai  <shiro@acm.org>

	* src/number.c (print_double): Implement notational rounding mode.

2017-10-16  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/generator.scm (gmerge): Fixed to ensure that
	  if elements ties, leftmost one is taken.

2017-10-15  Shiro Kawai  <shiro@acm.org>

	* doc/modsrfi.scm: Document srfi-152.  For now, most procedures are
	  described in other modules (e.g. srfi-13).  If this srfi gets
	  traction as a standard string library, we'll move description to
	  here from srfi-13.

2017-10-14  Shiro Kawai  <shiro@acm.org>

	* doc/modsrfi.scm: Document srfi-151.  Reduces content of srfi-60
	  description to avoid duplication.  Change references to srfi-60
	  for references to srfi-151 wherever relevant.

	* lib/srfi-158.scm: Added.  Srfi-158 is still draft, so this is
	  a provisional addition and may be changed later.

2017-10-13  Shiro Kawai  <shiro@acm.org>

	* test/include/srfi-152-tests.scm: Added srfi-152 tests.
	  Now srfi-152 support is complete.

2017-10-12  Shiro Kawai  <shiro@acm.org>

	* src/libnum.scm (number->string): Use Scm_PrintNumber directly
	  so that we can make ScmNumberFormat customization feature available
	  to Scheme.  Need more testing, so it's unofficial yet.

2017-10-10  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/stringutil.scm (string-split): INCOMPATIBLE CHANGE:
	  splitting an empty string now yields an empty list instead of
	  (""), as srfi-152 specifies.  Let's see if it cause a problem.

2017-10-09  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/stringutil.scm (string-split): Enhanced to support
	  srfi-152.  Accept grammar, start and end optional arguments.
	  Allow zero-width splitting.

2017-10-07  Shiro Kawai  <shiro@acm.org>

	* src/libio.scm, lib/r7rs.scm (write-string): Make it built-in,
	  for it'll be also exported from srfi-152.  Also, made it more
	  efficient using %maybe-substring.

2017-10-01  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-154.scm, lib/srfi-155.scm : Added.
	  NB: srfi-154 and 155 haven't finalized yet. This is for testing.

2017-09-26  Shiro Kawai  <shiro@acm.org>

	* ext/peg/peg.scm (make-peg-parse-error): Fix error message of
	  nested compound error.

2017-09-03  Shiro Kawai  <shiro@acm.org>

	* src/main.c, src/libeval.scm (%invoke-other-version):
	  EXPERIMENTAL: Add -v VERSION option to gosh, which execs the
	  specified version of gosh given that the version is also installed
	  in parallel.  It is mainly for testing---invoking different version
	  incurs overhead, so it shouldn't be used in production.

2017-09-02  Shiro Kawai  <shiro@acm.org>

	* configure.ac, src/Makefile.in: Link gosh aganist
	  $(ARCH_INSTALL_DIR)/libgauche instead of $(LIB_INSTALL_DIR)'s.
	  The former isn't overwritten by installation of other versions of
	  Gauche, so $(ARCH_INSTALL_DIR)/gosh stays runnable when
	  multiple versions of Gauche are installed.
	  NB: We still install libgauche to $(LIB_INSTALL_DIR) for linking
	  extension modules and applications.

2017-08-30  Shiro Kawai  <shiro@acm.org>

	* lib/text/console.scm, lib/text/line-edit.scm: Incorporated patches
	  from @Hamayama to support various Windows console supports.

2017-08-27  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/test.scm (test-module-common): Fix binding check on
	  remaing export.

2017-08-24  Shiro Kawai  <shiro@acm.org>

	* lib/data/ring-buffer.scm (%ensure-room!): Fix a bug when add-front!
	  is used in overwrite mode.  It didn't overwrite from the end.

2017-08-23  Shiro Kawai  <shiro@acm.org>

	* lib/text/progress.scm (make-text-progress-bar): Check if max-value
	  is positive.  If it's 0, the error message was incomprehensible
	  to the user.

2017-08-22  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-11.scm, lib/gauche/common-macro.scm (let-values, let*-values):
	  Make them built-in.

2017-08-19  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-132.scm, src/srfis.scm: Support srfi-132.

2017-08-10  Shiro Kawai  <shiro@acm.org>

	* src/libio.scm (<write-controls>): INCOMPATIBLE CHANGE:
	  Dropped 'print-' prefix from slot names, for it is redundant.
	  Keep make-write-controls and write-controls-copy backward
	  compatible by making old keywords recognized.  Only the code
	  that directly access with the slot names must be changed.

2017-08-07  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive.scm (print-mode),
	  lib/gauche/interactive/toplevel.scm (print-mode, print-all):
	  New REPL feature to switch print-mode (<write-controls> parameters).

2017-08-06  Shiro Kawai  <shiro@acm.org>

	* src/gauche/priv/writerP.h, src/libio.scm: Add printPretty field to
	  ScmWriteControls.
	* src/write.c: Integrated pretty printer to 'write'.  If printPretty
	  slot of controls is true, pretty printer is invoked.
	  NB: Haven't worked on the case when user-defined object-write method
	  recurses to write.
	* lib/gauche/pputil.scm: Renamed from pp.scm and set to be autoloaded.

2017-08-05  Shiro Kawai  <shiro@acm.org>

	* src/gauche/writer.h, src/gauche/priv/writerP.h (ScmWriteControlsRec):
	  Move the definition to the private header.

2017-08-01  Shiro Kawai  <shiro@acm.org>

	* src/libmac.scm (trace-macro, untrace-macro): Added experimentally.

2017-07-30  Shiro Kawai  <shiro@acm.org>

	* src/compile-1.scm (pass1/body-rec): First step of fixing internal
	  definitions.

2017-07-29  Shiro Kawai  <shiro@acm.org>

	* lib/scheme/box.scm, lib/scheme/charset.scm, lib/scheme/comparator.scm,
	  lib/scheme/generator.scm, lib/scheme/ideque.scm,
	  lib/scheme/list-queue.scm, lib/scheme/list.scm,
	  lib/scheme/lseq.scm, lib/scheme/set.scm, lib/scheme/sort.scm,
	  lib/scheme/vector.scm: Added dummy libraries that are defined in
	  Red edition of R7RS-Large and already supportedin Gauche.

2017-07-27  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/common-macros.scm (doplist): Added experimentally.  Not
	  documented yet (document commented out).  Let's see if it's worth
	  to have.

2017-07-25  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-151.scm: Support srfi-151.

2017-07-23  Shiro Kawai  <shiro@acm.org>

	* src/srfis.scm: Officially support srfi-149.

2017-07-22  Shiro Kawai  <shiro@acm.org>

	* src/libomega.scm (object-hash, object-equal?): Add those methods
	  for builtin hashtables.
	* lib/gauche/hashutil.scm (hash-table-empty?)
	  (hash-table-compare-as-sets): Added.

2017-07-21  Shiro Kawai  <shiro@acm.org>

	* lib/compat/r7rs-srfi-tests.scm: An ad-hoc adapter to run srfi
	  tests written in r7rs define-library directly without loading
	  full r7rs layer.  See test/srfi.scm for example usage.

2017-07-20  Shiro Kawai  <shiro@acm.org>

	* src/libomega.scm (default-comparator): Fix the default comparator
	  when comparing numbers; we should use =, instead of equal?.

2017-07-18  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/configure.scm (cf-check-headers): Fix bug that passed
	  a string, instead of a symbol, to cf-define.

2017-07-13  Shiro Kawai <shiro@acm.org>

	* lib/srfi-146.scm, tests/include/srfi-146-test.scm: Add srfi-146
	  based on draft #10.  The API may change before finalization.

2017-07-12  Shiro Kawai <shiro@acm.org>

	* src/treemap.c: Fix bug that deleting the current node during
	  iterator traversal broke the iterator.

2017-07-11  Shiro Kawai <shiro@acm.org>

	* lib/gauche/treeutil.scm, src/treemap.c: Make treemaps comparable
	  using tree-map-compare-as-sequences.

	* src/gauche.h, src/class.c (Scm_ObjectCompare): Make it public API.
	  Built-in classes can give this cfn as 'compare' function, then
	  object-compare and object-equal? methods will work on the instances
	  of the classes.

2017-07-08  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/treeutil.scm (tree-map-compare-as-sets),
	(tree-map-compare-as-sequences): Added.

2017-07-07  Shiro Kawai  <shiro@acm.org>

	* src/libdict.scm: Move internal procedures (%tree-map-iter etc.) to
	  gauche.internal.  They're not supposed to be exposed.

2017-07-06  Shiro Kawai  <shiro@acm.org>

	* src/libdict.scm: Add {hash-table|tree-map}-{adjoin!|replace!}.

2017-07-04  Shiro Kawai  <shiro@acm.org>

	* src/hash.c (Scm_HashTableSet), src/treemap.c (Scm_TreeMapSet):
	  INCOMPATIBLE CHANGE: Let these return the previous value associated
	  with the key.  If there's no entry with the key, SCM_UNBOUND is
	  returned.  (1) This works consistently across flags, and (2) The
	  caller can know whether the association has already been there
	  or not.  The code that expects these to return the updated value
	  will break and need to be changed.  We see that in most cases
	  these procedures are used only for the side effects and the
	  return value is ignored.

2017-07-01  shiro  <shiro@acm.org>

	* lib/gauche/common-macros (assume-type): Added.
	* src/libexc.scm (type-error): Added.  Consolidate type error
	  handling in Scm_TypeError.

2017-06-30  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/generator.scm (generator->uvector, generator->uvector!)
	  (generator->bytevector, generator->bytevector!): Added.

2017-06-23  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-64.scm: Add integration to gauche.test.  When srfi-64 tests
	  are executed during gauche.test tests, the behavior of default test
	  runner switches to cope with gauche.test.

2017-06-22  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/logger.scm: Allow 'current-output as path of <log-drain>
	  to send output to stdout.  Accept 'current-error, too, as well as
	  #t to send output ot stderr, for the consistency.
	  Also allow 'ignore to completely ignore log-format (not even does
	  formatting).
	* lib/gauche/test.scm: Expose test-count++, test-pass++ and test-fail++
	  (for srfi-64 integration).

2017-06-14  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-64.scm: Added.

2017-06-11  Shiro Kawai  <shiro@acm.org>

	* src/main.c: If the interpreter basename is "scheme-r7rs", we assume
	  the script is in R7RS and invoked under SRFI-22 convention, and calls
	  r7rs.user#main.

2017-06-09  Shiro Kawai  <shiro@acm.org>

	* lib/text/console.scm: Enhance *vt100-compatible-terminals* to
	  cover screen-256color.

	* lib/gauche/test.scm (test-module-common): Show the line number
	  and the actual code for dangling gref etc.   Patch from nkoguro:
	  https://github.com/shirok/Gauche/pull/288

2017-06-01  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/common-macro.scm (syntax-error, syntax-errorf):
	  Wrap the error with extra <compile-error-mixin>, when we know
	  what macro call resulted the error, helping diagnose macro
	  error.

2017-05-31  Shiro Kawai  <shiro@acm.org>

	* Bumped libatomic_ops to 7.6.0, thanks to @qykth-git
	  https://github.com/shirok/Gauche/pull/286

	* lib/gauche/precomp.scm, src/compile-1.scm (define-macro):
	  We no longer use make-macro-transformer to create legacy macros;
	  we directly call %make-macro-transformer instead, which is *the*
	  formal way to create macros.
	* src/libalpha.scm, src/libmac.scm: Put %make-macro-transformer
	  in libalpha.scm, since it is now referenced from the precompiled
	  code of define-macro.  Move make-macro-transformer to src/libmac.scm;
	  it is no longer used, but old extension code precompiled by 0.9.5
	  or before may refer to it, so we keep it until 1.0.
	* src/macro.c (Scm_MakeMacroTransformerOld): This is truly obsoleted.
	  Nobody should be calling this directly.  We keep the entry for
	  ABI compatibility but calling it would result Scm_Panic.

2017-05-30  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h, src/macro.c (ScmMacro): Enhanced ScmMacro to keep
	  some useful info for macro debugging.

2017-05-28  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-143.scm, src/srfis.scm: Support srfi-143, as the srfi
	  has been finalized.

	* src/libnum.scm (twos-complement-factor): INCOMPATIBLE BUG FIX:
	  It used to return 0 when the argument is 0.  Mathematcially, the
	  result is arbitrary.  But for other arguments, this procedure
	  is equivalent as first-set-bit and log2-binary-factors in SRFI-60,
	  and it's unreasonable to diverge in just one argument; the SRFI-60
	  versions returns -1 for 0.
	  Unfortunately, the case when argument is 0 has been documented,
	  so this is compatibility-breaking change.

	* lib/gauche/test/script.scm (test-script): Handle the case
	  when the script file has its own module (patch from KOGURO Naoki,
	  https://github.com/shirok/Gauche/pull/285).
	  Splitted into autoloaded file to avoid the core functions of
	  gauche.test from depending other modules (we test those modules
	  using gauche.test so we can't depend on them).

2017-05-25  Shiro Kawai  <shiro@acm.org>

	* src/macro.c (compile_rule1, realize_template_rec): Support srfi-149
	  multiple following ellipses in templates.

2017-05-23  Shiro Kawai  <shiro@acm.org>

	* src/macro.c (compile_rule1): Fix a bug that failed to catch
	  bad ellipses usage in a pattern.

	* libsrc/gauche/record.scm (describe-slots): Provide specialized
	  describe method for records.  Records may have duplicate slot
	  names, so the default method, which retrieves slot values by
	  their name, doesn't work.

2017-05-22  Shiro Kawai  <shiro@acm.org>

	* src/libobj.scm (describe, describe-common, describe-slots):
	  Moved core methods to here, so that libraries can specialize
	  'describe' without using gauche.interactive.
	  (instance-slot-ref): Check unbound slot (it returned #<unbound>
	  object; yikes!).  Add fallback optional argument so that the caller
	  can detect and handle the situation.  Note: This API is still
	  unofficial.
	  (instance-slot-set!): Renamed from instance-slot-set for the
	  consistency.  This is unofficial API so we don't mark it incompatible
	  change.

2017-05-20  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/record.scm: INCOMPATIBILE CHANGE: Make positional
	  pattern match work reasonably on inherited records (the same order
	  as the default constructor).  We'd say the old behavior was a bug;
	  it makes little sense to have positional match different from the
	  constructor.  The document, however, implied that the old behavior
	  was a supposed one (it defined the position in terms of class-slots).
	  So we mark it as compatibility-breakage.

2017-05-16  Shiro Kawai  <shiro@acm.org>

	* libsrc/util/match.scm: Make match:$-ref generic function, so that
	  a metaclass can tweak how positional match is handled.

2017-05-14  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-143.scm: Added (provisional; the srfi is still draft).

	* lib/text/console.scm (make-default-console): Check if stdin is tty;
	  if not, just return #f.  In typical cases, this procedure won't
	  be called (via gauche.interactive#read-eval-print-loop) when gosh
	  is in non-interactive mode.  But there can be a settings that the
	  user invokes it directly.

2017-05-11  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/dictionary.scm (dict-find, dict-any): Added, defined
	  on top of dict-seek.  NB: We found the dict-seek protocol is not
	  enough to implement dict-every, in terms of srfi-1 every semantics,
	  which returns the result of last invocation of PRED (instead of
	  acting a pure predicate).  So we keep these and dict-seek unofficial
	  for now.

2017-05-10  Shiro Kawai  <shiro@acm.org>

	* src/class.c (Scm_MethodApplicableForClasses): If a specializer
	  is <top>, we don't need to check subtypeness.  Micro-optimization,
	  but the effect is visible.  (A few percent improvement in 'ref'
	  when dispatch accelerator is on.)

2017-05-08  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/dictionary.scm (dict-seek): Added new protocol API.
	* lib/gauche/hashutil.scm (hash-seek),
	  lib/gauche/treeutil.scm (tree-map-seek): Added.

2017-05-07  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/dictionary.scm (dict-immutable?): Added new protocol
	  API.

2017-05-06  Shiro Kawai  <shiro@acm.org>

	* src/list.scm, src/liblist.scm (append, append!): Strictly check
	  args to reject dotted list in non-last argument.
	  NB: We don't check circular list, for it requires more overhead.

2017-05-04  Shiro Kawai  <shiro@acm.org>

	* src/liblist.scm (list*, cons*): Require at least one arg, as
	  specified in srfi-1 and CL.  Zero arg list*/cons* don't make sense.
	  Gauche doc have always been required >=1 arg, so allowing zero arg
	  was just an implementation artifacts.

	* lib/gauche/process.scm (shell-tokenize-string): Fix a bug that
	  failed to recognize quoted string appearing in middle of unquoted
	  string.

2017-05-02  Shiro Kawai  <shiro@acm.org>

	* lib/r7rs.scm (define-library): Fix another bug in cond-expand.
	  Cond-expand in library decl differs from srfi-0 cond-expand
	  where the output of the former is spliced into library decls.
	  It is tricky because we have to deal with the output of cond-expand
	  macro at the macro transformer level.  For now, we call macroexpand
	  inside the transformer---very CL-ish.

	* src/compile-1.scm (pass1/body-rec): Use global-identifier=?
	  to check internal define and internal define-syntax.  See the
	  added test in test/macro.scm for the case this fixes.

	* lib/r7rs.scm (scheme.r5rs): Avoid redefining 'define',
	  for it interferes with internal definition recognition.  Instead
	  we fiddle with r7rs.aux to expose r7rs#define as r7rs:define,
	  and use export renaming in scheme.r5rs to export it as 'define'.

2017-05-01  Shiro Kawai  <shiro@acm.org>

	* lib/r7rs.scm (define-library): Fix a mysterious bug that internal
	  definitions inserted by a macro defined in an r7rs library
	  wasn't recognized as internal definitions.  Initially we suspected
	  a bug that broke hygiene of 'define'.  It turned out that the
	  bug was in the sloppy definition of 'define-library': The expansion
	  redefined 'begin'.  And because hygienic expansion is working as
	  expected, the compiler didn't recognize 'begin' as the original
	  meaning, and skipped splicing internal defines.
	  Fix https://github.com/shirok/Gauche/issues/221

	* src/class.c (Scm_ShortClassName): Unofficial API change: Previously
	  called Scm__InternalClassName.  It's just a C function that strips
	  '<' and '>' from the class name, but its handy and used from
	  some ext/* stuff, so let it be public.  Old name will go in 1.0.

2017-04-29  Shiro Kawai  <shiro@acm.org>

	* src/class.c, src/dispatch.c: EXPERIMENTAL: Add method dispatch
	  accelerator. By default nothing changes; it must be turned on
	  explicitly for each GF.  We'll do some experiment before making it
	  automatic.  Consider this feature highly experimental and
	  do not use it in production before we declar it's stable.
	  See src/dispatch.c for the detail mechanism.
	  A preliminary benchmark shows `ref' being 4x faster on sparse
	  vectors.
	  ABI INCOMPATIBILITY: If you have precompiled files with
	  `define-cgeneric', you need to recompile it; a new field
	  is added to ScmGeneric so the static initializer needs to be
	  recompiled.

2017-04-26  Shiro Kawai  <shiro@acm.org>

	* src/libcmp.scm, lib/gauche/computil.scm (=?, <?, <=?, >?, >=?):
	  Reimplemented in C, for they can be used in performance critical
	  paths (esp. implementation of data structures).
	  About 2x-3x speed up.  Still 2.5x-3.3x slower than the
	  primitive =, < etc., but it's hard to beat them since they are
	  expanded into VM insns.  If we see =?, <? etc are used frequent
	  enough we might need to go futher into that path, though.

2017-04-23  Shiro Kawai  <shiro@acm.org>

	* src/vmcall.c: Skip Scm_SortMethods when we have only one applicable
	  methods.  Obvious, yeah?  This makes 'ref' call 20% faster.

	* src/libproc.scm (method-leaf?): Added.
	* src/class.c: Changed <method> slot name: method-leaf -> leaf?
	* src/libobj.scm: Dropped %method-code, for we already have
	  method-code in libproc.scm.

2017-04-22  Shiro Kawai  <shiro@acm.org>

	* src/class.c (method_initialize): Set LEAF flag if the method doesn't
	  use next-method arg in its body.
	* src/vmcall.c: Skip creating next-method instance when the method
	  is leaf.  About 40% speed up on empty method call.

2017-04-20  Shiro Kawai  <shiro@acm.org>

	* src/compile-5.scm (pass5/lambda): Save list of unused arguments
	  in 'unused-args pair attributes of (car signature-info).
	  Useful for optimization.

2017-04-18  shiro  <shiro@acm.org>

	* src/gauche/vm.h: Add SCM_COMPILE_NOINLINE_SETTERS flag
	* src/main.c: Add -fno-inline-setters option
	* src/compile-1.scm: Prohibit setter inlining when
	  SCM_COMPILE_NOINLINE_SETTERS flag is set.

2017-04-17  Shiro Kawai  <shiro@acm.org>

	* src/libobj.scm: Make most predefined methods `locked'.

2017-04-16  Shiro Kawai  <shiro@acm.org>

	* src/compile-1.scm (pass1): Another setter optimization - if
	  X has inlinable binding, (setter X) is locked and has inlinable
	  binding in toplevel, we replace (setter X) with the $gref to
	  the setter.

	  gosh> (disasm (^[p v] (set! (car p) v)))
	  CLOSURE #<closure (#f p v)>
	  === main_code (name=#f, code=0x28e3540, size=5, const=1 stack=5):
	  signatureInfo: ((#f p v))
	       0 LREF1-PUSH               ; p
	       1 LREF0-PUSH               ; v
	       2 GREF-TAIL-CALL(2) #<identifier scheme#set-car!.2936540>; ((setter car) p v)
	       4 RET

2017-04-15  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/stub.scm (<cproc>): Keep subr's binding info
	  (its name and defined module name) in the pair attributes of
	  subr's info.  This will allow precompiler to emit a reference
	  to #<subr> by using $GREF.

	* src/compile-1.scm (set!): Enable inlining setter.  In the syntax
	  (set! (op arg ...) expr), we check 1. if OP has inlinable binding,
	  2. if OP has locked setter, and 3. if the setter is inlinable.
	  When those conditions met, we can inline the setter.  Example:

	  gosh> (disasm (^[] (set! (vector-ref v 2) 'a)))
	  CLOSURE #<closure (#f)>
	  === main_code (name=#f, code=0x1557540, size=6, const=2 stack=1):
	  signatureInfo: ((#f))
	  0 GREF-PUSH #<identifier user#v.15b3600>; v
	  2 CONST a
	  4 VEC-SETI(2)              ; ((setter vector-ref) v 2 (quote a))
	  5 RET

2017-04-14  Shiro Kawai  <shiro@acm.org>

	* src/libalpha.scm (getter-with-setter): Lock the setter; now an error
	  is thrown when you attempt to alter setter of a proc if it's locked,
	  as specified in srfi-17.
	* src/libproc.scm (procedure-locked-setter): Added.

2017-04-09  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/precomp.scm: Add --single-interface option to
	  precomp to generate one *.sci file from multiple source files.

2017-04-04  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive/info.scm (info-search): Added to search
	  info entries by regexp.
	* lib/gauche/interactive/toplevel.scm (info): Allow regexp as the
	  argument to invoke info-search.

2017-04-03  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive/info.scm (get-info): Avoid showing multiple
	  entries when they are merely the variations of API, listed using
	  @defunx (e.g. see the entry of 'format').

	* libsrc/gauche/sequence.scm (group-contiguous-sequence): Added.

2017-04-02  Shiro Kawai  <shiro@acm.org>

	* doc/*.texi: Add module name in front of the description when it's
	  relevant.  Since the info command of REPL now only shows the
	  entry (as opposed to the entire page), it is hard to know which
	  module to import without having the module name in each entry.

2017-04-01  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive/info.scm (get-info-paths): Insert doc/ of
	  source tree first for info search directory when gosh is invoked
	  with -ftest.

2017-03-31  Shiro Kawai  <shiro@acm.org>

	* src/main.c: Define feature identifier gauche.in-place if -ftest
	  option is given (we avoid gauche.test, for it looks too similar to
	  the module gauche.test; also, 'in-place' is more specific on
	  what it represents.  We should probably rather rename the command-line
	  option as -fin-place.)

	* lib/gauche/common-macros.scm (assume): Added srfi-145 assume.

2017-03-30  Shiro Kawai  <shiro@acm.org>

	* src/libchar.scm (char-set-immutable?): Added Scheme API for
	  SCM_CHAR_SET_IMMUTABLE_P.

2017-03-24  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/condutil.scm: Use quasirename in the macro transformer,
	  to ensure keywords are handled hygienically.

	* src/libobj.scm: Make expansion of define-class, define-generic and
	  define-method hygiene.  It's a temporary measure---after releasing
	  0.9.6, we'll rewrite it with er-macro-transformer (hopefully).

2017-03-17  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive/toplevel.scm: Added reload and load toplevel
	  commands.

2017-03-16  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive/toplevel.scm: Expand hygienically by closing
	  rename procedure for the handlers.  Now toplevel commands works
	  regardless of which module you're in.

2017-03-13  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-141.scm: Add srfi-141.

2017-03-12  Shiro Kawai  <shiro@acm.org>

	* src/signal.c: Provide Scm_SigFillSetMostly() to fill
	  sigset_t with "reasonably-handlable" signals.  By default, libgauche
	  handles no signals; an application (including gosh) will set up
	  sigmask.  However, an application needed to exclude system-reserved
	  signals, which was tedious.  Now it can simply use this API.
	* src/main.c (sig_setup): Revised using Scm_SigFillSetMostly().

2017-03-07  Shiro Kawai  <shiro@acm.org>

	* ext/threads/threads.scm (atomic, atomic-update!): Allow more than
	  one timeout values, so that the caller can match return arity
	  in case of timeout.

2017-02-26  Shiro Kawai  <shiro@acm.org>

	* src/signal.c: Added SIGTHR default handler (OpenBSD, FreeBSD).

2017-02-25  Shiro Kawai  <shiro@acm.org>

	* lib/text/console.scm: Split most of APIs into text.console.generic,
	  so that they won't be loaded unnecessarily if the runtime detects
	  no controllable consoles.

2017-02-18  Shiro Kawai  <shiro@acm.org>

	* src/gauche/number.h (Scm_ClampMode): Made it common utility; now
	  used in both libvec.scm and ext/uvector/.

2017-02-14  Shiro Kawai  <shiro@acm.org>

	* src/vector.c (Scm_UVectorSet):
	  src/libvec.c (s8vector-ref, s8vector-set!, etc):
	  src/compile.scm:
	  ext/uvector/*:  Moved uniform vector referencer and modifiers
	  to the core, so that the compiler can generate VM insn for
	  the referencer.  We used to use compiler macros to convert
	  referencer to %uvector-ref then the compiler inlined it to
	  VM insn, but that scheme limits the opportunity of optimization;
	  the compiler macro cannot be applied to the pass3/late-inline pass.
	  It's better to keep stuff that expands VM insns within the core.

2017-02-10  Shiro Kawai  <shiro@acm.org>

	* doc/makedoc.scm: Check makeinfo version for html/htmls targets;
	  they require newer version of makeinfo.  It's perplexing for
	  the users when they get error from older makeinfo.

2017-02-07  Shiro Kawai  <shiro@acm.org>

	* src/libeval.scm (call-macro-expander, %source-info): Save source
	  information of the macro input in 'original pair-attr instead of
	  'macro-input; the compiler-transformation and other introspection
	  utilities use 'original so let's be consistent.
	  For example, with this change, 'describe' can show source location
	  of the closure created by macro expanded code:

	  gosh> (define (foo x)
		  (^y (+ x y)))
	  foo
	  gosh> ,d (foo 3)
	  #<closure ((foo foo) y)> is an instance of class <procedure>
	  Defined at "(standard input)":2
	  ...

2017-02-06  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm: Replaced procedural inliner calling convention
	  (prev: Sexpr, Cenv -> IForm, now: Src, IForm -> IForm).  This allows
	  pass3/late-inline to call procedural inliner as well, opening
	  more opportunities for optimization.  Example:

	  (define-inline (foo ref) (^x (ref x 0)))
	  (disasm (foo vector-ref))
	  CLOSURE #<closure (foo x)>
	  === main_code (name=foo, code=0x2300fa0, size=3, const=0 stack=0):
	  signatureInfo: ((foo x))
	       0 LREF0                    ; x
	       1 VEC-REFI(0)              ; (ref x 0)
	       2 RET

	  The vector-ref call wasn't inlined before.

2017-02-04  Shiro Kawai  <shiro@acm.org>

	* src/proc.c (Scm_CopyProcedure), src/libproc.scm (%procedure-copy):
	  Added in order to avoid bookkeeping operation would modify
	  existing procedure instances.  This should only be used by
	  internal procedures that needs to mutate procedure instance,
	  such as %with-inline-transformer.

	* ext/uvector/uvector.scm: Explicitly list exported symbols.
	  Now that we have some internal symbols (macros, %s8vector-ref, etc),
	  it's not appropriate to use (export-all).
	  NB: This makes gauche.colleciton/sequnece symbols not transitively
	  exported from gauche.uvector.  If a module using only gauche.uvector
	  and refer to gauche.collection/sequence generic functions, it must
	  use gauche.collection/sequence explicitly.

	* ext/uvector/uvector.scm: Rewrite TAGvector-ref inlining with
	  define-inline/syntax.

	* lib/gauche/cgen/precomp.scm: Allow define-inline/syntax to be
	  precompiled.  (Currently only supports er-macro-transformer).
	* src/libeval.scm (macro-name): Added accessor.

2017-02-03  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (define-inline/syntax): This may be the answer of
	  compiler macro in Gauche.  We'll experiment more.

2017-02-01  Shiro Kawai  <shiro@acm.org>

	* src/symbol.c (Scm_ExtractKeywords): Added.

2017-01-23  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/sequence.scm (delete-neighbor-dups)
	  (delete-neighbor-dups!, delete-neighbor-dups-squeeze!): Added.

2017-01-22  Shiro Kawai  <shiro@acm.org>

	* ext/charconv/convaux.scm (ces-convert-to, ces-convert): Support
	  using u8vector for mutibyte sequences.

2017-01-21  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/dictionary.scm: Moved here to precompile.

	* lib/gauche/interactive.scm: Experimentally put pretty-printer.
	  Need better way to switch, though.

2017-01-20  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/writer.h (Scm_WriteControls): Add printWidth field.

2017-01-17  Shiro Kawai  <shiro@acm.org>

	* lib/slib.scm, configure.ac, src/libmisc.scm: Instead of generating
	  slib.scm at configure time, we embed SLIB_DIR as a constant
	  (in gauche.internal module; see src/libmisc.scm) and let slib.scm
	  refer to it.  One less irregularity in build process.

	* lib/srfi-96.scm: Added (just extends slib).
	* lib/srfi-129.scm: Added.
	* lib/srfi-74.scm: Added.

2017-01-16  Shiro Kawai  <shiro@acm.org>

	* ext/binary (get-uint, get-sint, put-uint!, put-sint!): Added.
	  We had read-uint/write-uint etc but these were missing.

	* ext/uvector (TAGvector=?, TAGvector-compare): Added for support
	  of srfi-66.

	* src/char.c (Scm_MakeImmutableCharSet): Added.  This is to be called
	  from generated code.
	  (SCM_CHAR_SET_LARGE_P, SCM_CHAR_SET_IMMUTABLE_P): Change name for
	  the consistency.

2017-01-14  Shiro Kawai  <shiro@acm.org>

	* libsrc/file/util.scm (string->file etc.): Added the opposites of
	  file->string etc.  Clojure's spit and slurp are roughly equivalent
	  to string->file and file->string.

2017-01-12  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/http.scm: Add option to use stunnel for https connection
	  in addition to rfc.tls.  It is useful when the remote site
	  uses crypto that axTLS doesn't support yet.  (Ideally we should
	  automatically fall back, but for now the caller should specify
	  which infrastructure to use.)

	* libsrc/file/util.scm (find-file-in-paths): Add extensions keyword
	  argument, suggested by Hamayama.

2017-01-10  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/process.scm (do-pipeline, run-pipeline): Introduced
	  run-pipeline, which returns a process object of the tail of
	  the pipeline.  We keep other processes in the pipeline in
	  'upstreams slot of the returned process, so that process-wait
	  can wait for all processes.  This is more convenient than handling
	  list of processes by the caller, as in the case of
	  run-process-pipeline, which we deprecate now.

2017-01-09  Shiro Kawai  <shiro@acm.org>

	* src/read.c (read_charset): Make literal charsets immutable.
	  Codes that have modified literal charsets would break.  Although
	  it has never been documented (since we didn't have immutable
	  charset), it must've been implicitly assumed that literals can't
	  be changed.  Think this as a bug fix (which catches errors that
	  have been passed.)
	* src/regexp.c (rc_charset): Make charsets in regexp immutable.

2017-01-08  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/time.h: Added missing exports for time-result-real etc.

2017-01-06  Shiro Kawai  <shiro@acm.org>

	* src/char.c, src/libchar.scm (char-set-freeze, char-set-freeze!):
	  First step of supporting "frozen", or immutable, char-set, which
	  binary searches flat vector instead of treemap.  Needs more tests...

2017-01-05  Shiro Kawai  <shiro@acm.org>

	* ext/tls: Updated to axTLS 2.1.2
	  https://github.com/shirok/Gauche/pull/271

2017-01-02  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/uvector.scm (uvector-binary-search): Add optional
	  rounding argument for floor/ceiling search.

2016-12-26  Shiro Kawai  <shiro@acm.org>

	* src/load.c (Scm_DynLoad), src/libeval.scm (%get-initfn-name):
	  Fix deriving of initfn name---the '.' char should be searched
	  from right.  Also overhauled various parts to use ScmString
	  whenever possible, for the simplicity.

2016-12-24  Shiro Kawai  <shiro@acm.org>

	* src/gauche/port.h: Add SCM_PORT_OUTPUT_TRANSIENT flag.
	  Transient output port is to put data temporarily to file during
	  lifetime of the process, so we don't bother to flush it upon
	  process exit.

2016-12-23  Shiro Kawai  <shiro@acm.org>

	* ext/tls: Updated to axTLS 2.1.1
	  https://github.com/shirok/Gauche/pull/265

	* src/prof.c, src/gauche/prof.h, src/gauche/vm.h: Add sampling profiler
	  support on Windows, by Saito Atsushi and Hamayama.
	  NB: This only works on the thread the profiler is attached.  The
	  behavior of samiling profiler on MT app is still ambiguous and we
	  might change it (e.g. '-ptime' option may want to profile all the
	  threads, etc.) So don't rely on the current behavior.

2016-12-18  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (er-macro-transformer): Fix er-macro issue that
	  doesn't keep defining environment
	  (https://github.com/shirok/Gauche/issues/250).
	  This fix also addresses the issue of precompiling er-macro in
	  better ways than 0.9.5---the precompilable toplevel er-macro
	  now expands into a reference of %make-er-transformer/toplevel,
	  with all the arguments that are serializable.  We don't need to
	  call %make-toplevel-cenv.

	* ext/tls: Updated to axTLS 2.1.0
	  https://github.com/shirok/Gauche/pull/261

2016-12-17  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/precomp.scm: Improved literal module handling.

2016-12-16  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (primitive-macro-transformer): Drop primitive macro
	  transformer.  In order to use passed envirnoment we need to access
	  compiler internals anyway, so it won't be a good abstraction to
	  expose to the users; and er-transformer should be good for the
	  bottom layer for general use.

	* configure.ac: 0.9.6_pre1. We're changing output of macro expansion,
	  so it's better not to confuse with 0.9.5 release version.

2016-12-12  Shiro Kawai  <shiro@acm.org>

	* lib/slib.scm.in: Updated for slib3b5.  Also emit comprehensive
	  error message in case we can't find slib installation.

2016-12-10  Shiro Kawai  <shiro@acm.org>

	* src/module.c (search_binding): Fixed a bug in case ancestor module
	  has export renaming.
	  https://github.com/shirok/Gauche/issues/255

2016-12-09  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/common-macros.scm (unwind-protect): Do not run cleanup
	  thunk if raised exception is continuable.

2016-12-07  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/http.scm: Make sure secure connection cleanup is run
	  in any stage of communication fails.

	* ext/tls/axTLS/crypto/crypto_misc.c: The RNG state is kept in
	  static variable and was not thread-safe.  Wrap arount shared state
	  with Gauche's mutex layer.
	* ext/tls/axtls.diff: Updated against axTLS 2.0.1

2016-12-05  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interpolate.scm: Changed expansion of string
	  interpolation.  We gave up hygiene in the expanded form---it
	  causes a form merely 'read' to contain identifiers and will cause
	  unexpected problems when it is written out.  It won't be reasonable
	  to ask gauche namespace being visibile when string interpolation
	  syntax is used.
	  In order not to tie the expanded form too tightly, though, we
	  introduce intermediate macro 'string-interpolate*'.  The #"..."
	  syntax expands into the macro call.  The actual expansion form
	  can be changed later.
	* src/preload.scm: Preload gauche.interpolate---we need the new
	  string-interpolate* macro while compiling core Scheme files
	  using 0.9.5 compiler.

2016-12-03  Shiro Kawai  <shiro@acm.org>

	* src/libvec.scm: Add binary search of flat numeric vector
	* ext/gauche/uvector.scm (uvector-binary-search): Expose the above
	  functionarity to Scheme.

2016-12-02  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/common-macros.scm (unwind-protect): Check if the control
	  tries to enter the body again after the cleanup is done, and if so,
	  raises an error.

	* lib/gauche/test.scm (test-error): Add a feature to check the message
	  of the thrown error.

2016-11-29  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/hashutil.scm (hash-table-find): Added.
	* lib/srfi-113.scm: Rewrite early break pattern with hash-table-find
	  to avoid using call/cc.  This improves, for example, performance
	  of set-disjoint? 1.5x-2.0x.
	  Also fix the reference implementation bug of set|bag-map
	  https://github.com/scheme-requests-for-implementation/srfi-113/pull/9

2016-11-21  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-127.scm: Added srfi-127 support.

2016-11-20  Shiro Kawai  <shiro@acm.org>

	* various files: Purge Scm[U]Int32.  We are now in C99 and we can
	  unconditionally use stdint.h.

2016-11-19  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/precomp.scm (without-precompiling): Instead of
	  emitting to *.sci, we can embed the forms as literals in the *.c
	  file, to be evaluated at load time.

2016-11-18  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/parameter.scm (parameterize): Fix a bug on handling
	  value expressions restarted by call/cc.

	* lib/gauche/cgen/precomp.scm (write-ext-module): Duct-tape fix of
	  avoiding emitting identifiers into *.sci files---the change of
	  making string interpolation hygiene can cause such situation.
	  See the comment for the planned proper fix.

2016-11-17  Shiro Kawai  <shiro@acm.org>

	* lib/text/template.scm: Experimentally added.  This library exposes
	  string interpolation facility for runtime-provided strings as opposed
	  to literals.  Kind of a hack but might be useful.

	* src/compile.scm (iform->sexpr): Handle $IT node within $IF.  Right
	  after pass1, $IT must only appear directly in either then or else
	  branch of $IF node.

	* lib/gauche/interpolate.scm: Make the expansion of string-interpolate
	  hygienic.

2016-11-15  Shiro Kawai  <shiro@acm.org>

	* ext/gauche/unicode.scm, src/gen-unicode.scm (char-east-asian-width):
	  Add utility to get Unicode EastAsianWidth property of a character/
	  codepoint.

2016-11-14  Shiro Kawai  <shiro@acm.org>

	* lib/text/unicode/ucd.scm, src/unicode-data.scm: Handle EastAsianWidth

2016-11-01  Shiro Kawai  <shiro@acm.org>

	* ext/peg ($fmap, $<<): Removed those APIs; they're the same as $lift.

2016-10-27  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/common-macros.scm, src/libomega.scm (er-macro-transformer):
	  Moved definition from autoloaded macro to built-in.

2016-10-20  Shiro Kawai  <shiro@acm.org>

	* src/gauche/char_utf_8.h (Scm__LookupCharCategory): Fix off-by-one
	  error (by OOHASHI Daichi)
	  https://github.com/shirok/Gauche/pull/245

2016-10-17  Shiro Kawai  <shiro@acm.org>

	* src/main.c (execute_script), src/libeval.scm (run-main):
	  We should use Scm_Apply, instead of Scm_ApplyRec, to call 'main'
	  procedure, since Scm_ApplyRec should only be called when VM is
	  running.  It caused failure like this:
	  https://github.com/shirok/Gauche/issues/244
	  However, directly calling 'main' with Scm_Apply loses stack
	  trace, so we introduced a wrapper procedure gauche.internal#run-main
	  to capture and report error.
	* src/core.c (Scm_SimpleMain): Changed as well.

2016-10-16  Shiro Kawai  <shiro@acm.org>

	* doc/man.cgi: Added the cgi script to redirect manual page reference
	  used in practical-scheme.net.  Sort of an example.

2016-10-14  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/process.scm: Add do-process and do-process-pipeline.
	  The names are provisional, so keep them experimental for now.

	* doc/Makefile.in: Switched to use makeinfo/texi2any to generate
	  html files (https://github.com/shirok/Gauche/pull/241).

2016-10-08  Shiro Kawai  <shiro@acm.org>

	* doc/HOWTO-precompile.txt: A memo for the precompilation feature;
	  not an official support, but a good start point for those who
	  want to try it.

	* Release 0.9.5

2016-10-02  Shiro Kawai  <shiro@acm.org>

	* src/system.c (Scm_ClockGetTimeMonotonic,Scm_ClockGetResMonotonic):
	  Add workaround of XCode8 issue that it pretends clock_gettime
	  and clock_getres available but it's not true until OSX 10.12.
	  The workaround code directly calls mach APIs.

	* src/system.c (Scm_WinGetPipeName),
	  src/libsys.scm (sys-win-pipe-name): Windows-specific API to obtain
	  pipe name.
	* src/libsys.scm (%sys-mintty?): Determine if gosh's input is
	  connected to mintty on msys.

	* src/main.c (enter_repl, has_terminal): On Windows, Use %sys-mintty?
	  so that we get REPL on MSYS shell.

2016-10-01  Shiro Kawai  <shiro@acm.org>

	* src/Makefile.in, lib/Makefile.in: Ensure removing *.sci and *.dll
	  with 'make clean'---they're supposed to be cleaned by xlink script
	  but when it fails remaining *.sci and *.dll may interfere the
	  build process.

2016-09-28  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive/toplevel.scm: Add ,sh toplevel command.
	  Change define-toplevel-command so that each command can choose
	  how the arguments are parsed.

2016-09-25  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/array.scm: Add u8array, s8array, ..., f64array
	  constructors, for the consistency.

2016-09-24  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/generator.scm (ginterval): Added experimentally.
	  The name is still provisional---it may be called gflip-flop.
	  I used 'interval' now because it takes data between the one
	  that satisfies the start predicate and the one that satisfies
	  the end predicate.  But it may be confusing that the interval
	  is about sequence, not about the value range.

2016-09-21  Shiro Kawai  <shiro@acm.org>

	* lib/check-script: Added.

2016-09-19  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/package.scm (find-gauche-package-description): Fix
	  an issue on Windows.
	  http://chaton.practical-scheme.net/gauche/a/2016/09/17#entry-57dc9a84-c61da

2016-09-11  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/base.scm (gauche.base): Extend gauche.keyword as well,
	  so that R7RS code that does (import (gauche base)) can call
	  Gauche procedures with keyword arguments just like Gauche code.

2016-09-06  Shiro Kawai  <shiro@acm.org>

	* libsrc/srfi-133.scm (vector-cumulate): Switched argument order,
	  according to the errata.

2016-08-31  Shiro Kawai  <shiro@acm.org>

	* src/libeval.scm (find-load-file),
	  src/compile.scm (pass1/open-include-file): Treat include paths
	  beginning with "./" and "../" as relative pathname to the
	  includer file.  The original behavior is consistent with 'load',
	  but it doesn't make much sense for 'include', which is compile-time
	  operation, unlike 'load' being run-time operation.
	  This is INCOMPATIBLE CHANGE as the previous behavior was documented,
	  but I hope it won't affect existing code.

2016-08-28  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/macroutil.scm (quasirename): Handle unquote-splicing.

2016-08-24  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-113.scm: Fix collection framework implementation.  Bags
	  must honor item count.

2016-08-23  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-113.scm: Fix single-argument case in set-union etc.

2016-08-19  Shiro Kawai  <shiro@acm.org>

	* ext/tls: Updated to axTLS-2.0.0

2016-08-18  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass1/extended-lambda): Compare extended
	  lambda-list keywords hygienically.  If GAUCHE_KEYWORD_IS_SYMBOL,
	  keywords inserted by macros are wrapped by identifiers and
	  we should compare it just like symbols inserted by macros.

	* src/hash.c (Scm_Hash, Scm_PortableHash): Take care of the effect
	  of keyword-symbol integration.  If a keyword is a symbol, its name
	  includes prefix ':', while if they're disjoint, keyword's name
	  doesn't include ':'.  For portable hash, we include ':' in the
	  calculation.  For legacy hash, we don't.

2016-08-15  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/uvector.scm (port->uvector): Added.

2016-08-14  Shiro Kawai  <shiro@acm.org>

	* gc/libatomic_ops/configure.ac (AM_INIT_AUTOMAKE):
	  Add no-dependencies option to avoid complication in distclean.
	  Here's the story: Automake adds 'include' command in
	  gc/libatomic_ops/src/Makefile to incorporate dependencies in
	  .deps/*.Plo which are generated during running configure.
	  On 'make distclean', the .deps directories are removed, but
	  both gc/ and libatomic_ops/ tries to do so; if we run distclean
	  in gc/ then in libatomic_ops/, the latter fails since Makefile
	  cannot include .deps/*.Plo.  If we run distclean in libatomic_ops/
	  first then gc/, the latter fails since somewhere in
	  automake-generated rules needs to refer to libatomic_ops/src/.deps.
	  If we only run distclean in gc/, it succeeds, but leaves Makefiles
	  in libatomic_ops/ unerased.
	  (Note: If you have system libatomic_ops, gc uses that and you
	  won't see this problem.)
	  It's too much trouble to fight with automake; turning off the
	  dependency tracking avoids the trouble altogether.

2016-08-11  Shiro Kawai  <shiro@acm.org>

	* gc/: Updated to bdwgc 7.6.0 by qykth-git.
	  https://github.com/shirok/Gauche/pull/224

2016-08-05  Shiro Kawai  <shiro@acm.org>

	* test/process.scm: In pipeline tests, emulate cat and grep commands
	  so that the tests work on MinGW.

	* src/system.c (win_prepare_handles): Ensure close handles that should,
	  and not to close ones that shouldn't.

	* src/port.c (file_closer): Check the return value of close(), and
	  raise <system-error> if failed.  It may be annoying if you want
	  to call close-port "just to be safe" on potentially broken port,
	  but checking the error here would catch a bug that would cause
	  difficult-to-diagnose bug later.

2016-08-04  Shiro Kawai  <shiro@acm.org>

	* src/class.c, src/proc.c: EXPERIMENTAL: Use 'locked' flag of
	  <method> for "method-locked".  Locked method prohibits redefining
	  the methods with the same signature.  Intended to use methods
	  important for correct behavior of the language runtime.
	* src/compile.scm, src/libobj.scm (define-method): Allow method
	  qualifiers; currently only ':locked' is recognized.

2016-08-02  shiro  <shiro@acm.org>

	* src/libcmp.scm, src/libomega.scm, lib/gauche/computil.scm:
	  Changed default-comparator extension mechanism.  Instead of
	  dispatching _before_ falling back to system default, we just
	  use system default stuff (equal?, compare, default-hash) and
	  dispatch to custom comparators via fallback methods
	  (object-equal?, object-compare and object-hash).  This way
	  we won't sacrifice performance of default-comparator for builtin
	  types.  Caveat: (1) This mechanism relies on we catch the base
	  case of object-equal? etc.; it breaks if anybody redefines
	  (object-equal? <top> <top>), for example.  (2) You can't use
	  _both_ Gauche's way (defining (object-compare <mytype> <mytype>)
	  and srfi-128 way (registering a comparator for <mytype>); you have
	  to choose one.

2016-08-01  Shiro Kawai  <shiro@acm.org>

	* ext/tls/axTLS: Update to axTLS-1.5.4.

2016-07-30  Shiro Kawai  <shiro@acm.org>

	* tools/gc-configure.gnu-gauche.in: Add --disable-gcj-support;
	  GC tests fail without it on msys2+mingw-w64.

	* src/class.c (Scm_GenericObjectEqualP, Scm_GenericObjectCompare):
	  Use fallback routine of those gfs to handle the default case,
	  instead of defining (<top> <top>) method.  It's cleaner, and we
	  need to define (<top> <top>) method to handle
	  comparator-register-default! later.

2016-07-29  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm: Allow internal define-inline; it's the same as
	  internal define.  Since the compiler can figure out inlinable
	  internal defininitions the programmer doesn't need to use
	  internal define-inline, but it can appear as the result of
	  macro expansion.  In fact, this fixes the bug that caused
	  internal define-record-type being a compile error.

2016-07-23  shiro  <shiro@acm.org>

	* lib/util/unification.scm: Added.

2016-07-22  shiro  <shiro@acm.org>

	* lib/gauche/computil.scm (comparator-register-default!): Implement
	  srfi-128 mechanism of extending default comparator.

2016-07-20  shiro  <shiro@acm.org>

	* src/libcmp.scm, lib/srfi-114.scm (make-car-comparator)
	  (make-cdr-comparator): Moved these to srfi-114.

2016-07-19  shiro  <shiro@acm.org>

	* src/libcmp.scm, lib/srfi-114.scm (comparator-equal?): Move
	  this to srfi-114, for =? covers its usage.

2016-07-17  shiro  <shiro@acm.org>

	* src/libcmp.scm, lib/srfi-114.scm (comparator-comparison-procedure?)
	  (comparator-hash-function?, comparator-type-test-procedure):
	  Move some srfi-114-specific procedures from builtin to srfi-114.
	  Code that relies on them being builtin must be changed to use
	  srfi-128 procedures.  Various internal code has been fixed to
	  use srfi-128 ones.

2016-07-10  Shiro Kawai  <shiro@acm.org>

	* src/gauche/priv/dws_adapter.h: We need to stick 32bit siphash
	  for the portable hash regardless of the platforms, though we
	  do want 64bit siphash for the default hash on 64bit platform.
	  To workaround name conflicts, we applied some ducttaping so
	  we can have consistent internal interface.  See the comment
	  in the file for the details.

2016-07-05  Shiro Kawai  <shiro@acm.org>

	* src/hash.c, src/libdict.scm, src/libomega.scm:
	  We make Scm_Hash() and 'hash' deprecated, and will
	  keep it only for the backward compatibility.  Add 'portable-hash'
	  for replacement, which takes explicit salt.  Also provide
	  'default-hash', ala srfi-128, which honors hash-salt and is
	  used for equal hashtable.
	  The object-hash method now takes two arguments, an object to
	  hash and the hash function to be recursively called when necessary.
	  To avoid breaking the existing code of object-hash that takes
	  one argument and recursively calls 'hash' procedure, we tweaked
	  'hash' so that it dispatches to the appropriate hash function
	  if it's called recursively.

2016-07-04  Shiro Kawai  <shiro@acm.org>

	* src/hash.c (Scm_HashString), src/dwsiphash.[ch], src/dws32hash.[ch]:
	  Replaced default string hash function with siphash, and using
	  per-processs random salt to prevent hash collision attack.

2016-07-03  Shiro Kawai  <shiro@acm.org>

	* src/hash.c (legacy_flonum_hash): Legacy hash fn for flonums had
	  stepped on the undefined behavior.  To keep portability and
	  compatibility, we try to emulate existing behavior.  Note that
	  there are already discrepancies between platforms; we can't achieve
	  perfect backward compatibility.  But after this fix we'll at least
	  eliminate platform dependency.

2016-07-02  Shiro Kawai  <shiro@acm.org>

	* lib/data/ideque.scm (make-ideque): Changed API to be consistent
	  with other container datatypes.

2016-07-01  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-134.scm: Finalized, so we document data.ideque and
	  make srfi-134 alias of it.

2016-06-27  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/process.scm (run-process-pipeline): Add an intermediate
	  convenience API to run pipelined commands.

2016-06-26  Shiro Kawai  <shiro@acm.org>

	* gc/m4/*, gc/libatomic_ops/m4/*: Check-in libtool-related m4 files,
	  which can be automatically generated by autoreconf, but we avoid
	  relying on it in case the platform doesn't have matching autoconf
	  macro libraries (specifically, OSX doesn't have libtool-related m4
	  macros with the default installation).

2016-06-25  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (select-module, export, export-all, import)
	  (extend, require): Evaluates to zero values instead of #<undef>.
	  Better for REPL (less cluttering, no messing history).
	  This is technically an incompatible change, but we assume nobody
	  has ever used the return value of those forms.

2016-06-24  Shiro Kawai  <shiro@acm.org>

	* src/hash.c (Scm_Hash): Make sure portable hash value is masked
	  by HASHMASK.  Shouldn't affect existing code as far as they're
	  using lower <=32 bits, but the whole point of portable hash value
	  is that it's portable, so it's better to ensure that.
	  (legacy_number_hash): Fixed a bug that caused to produce different
	  bignum hash value between 32bit long and 64bit long platforms.
	  (This changes the portable hash value of bignums on 64bit platforms;
	  crossing fingers that won't break things)

2016-06-21  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/vm/debugger.scm: Add thread vmid to '#?=' output
	  so that output from different threads can be distinguished
	  easily.  The id is omitted for primordial thread.

	* gc/*: Bumped up to gc-7.4.4.
	  See https://github.com/shirok/Gauche/pull/210

2016-06-17  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/mop/bound-slot.scm: Experimentally added.

2016-06-16  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/uvector.scm (s8vector->string, u8vector->string):
	  Add 'terminator' optional argument, which recognizes terminating
	  character as the end of string.  Convenient to extract
	  NUL-terminated string from fixed size buffer, for example.

2016-06-14  Shiro Kawai  <shiro@acm.org>

	* src/hash.c (Scm_EqvHash): Improve hash value of flonums.
	  (Scm_Hash): Decouple from Scm_EqvHash to use original code for
	  number hash, in order to maintain backward compatibility.
	* src/libdict.scm (portable-hash): Added - better name to indicate
	  portable hash value.

2016-06-13  Shiro Kawai  <shiro@acm.org>

	* src/liblazy.scm (lrange): Fix handling zero and negative steps.

	* src/hash.c (Scm_HashSaltRef, Scm_HashSaltSet),
	  src/libdict.scm (hash-salt): Built-in support of hash salt (not yet
	  used, but this is the starting point.)

2016-05-27  Shiro Kawai  <shiro@acm.org>

	* src/libio.scm, lib/gauche/interactive.scm:
	  Drop read-consuming-trailing-whitespaces,
	  for it turned out it can't be used meaningfully.  For toplevel
	  commands we have to call read-line after the first word,
	  so the first word reader must not consume trailing newline
	  immediately.  We create consume-trailing-whitespaces instead.

	* src/read.c: Fix erroneous read behavior such as
	  (read-from-string "#:") => #:|| and
	  (read-from-string "#: foo") => #:| foo|.  We now reject if '#!'
	  and '#:' aren't immediately followed by a valid symbol.

2016-05-26  Shiro Kawai  <shiro@acm.org>

	* src/libio.scm (read-consuming-trailing-whitespaces): Useful
	  extension of 'read' for REPL.
	* lib/gauche/interactive.scm,
	  lib/gauche/interactive/editable-reader.scm: Dropped
	  %skip-trailing-ws and use r-c-t-w above, for the previous code
	  won't work when we're not reading from the current input port.

2016-05-25  Shiro Kawai  <shiro@acm.org>

	* src/number.c (read_number): EXPERIMENTAL: Recognize 'pi' suffix
	  in polar complex notation, e.g. 2@1pi => -2.0.

2016-05-24  Shiro Kawai  <shiro@acm.org>

	* src/gauche/system.h (ScmStat): Switch definition of struct stat
	  on GAUCHE_WINDOWS.
	* src/gauche/win-compat.h (stat): Use _wstat64() for stat(), to
	  handle filenames with multibyte characters.

2016-05-21  Shiro Kawai  <shiro@acm.org>

	* src/main.c (enter_repl): Better error reporting for an error
	  thrown during loading gauche.interactive.  It helps
	  troubleshooting bugs in gauche.interactive and/or .gaucherc.

2016-05-20  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/hashutil.scm, lib/gauche/computil.scm,
	  src/autoloads.scm:
	  Added srfi-128 APIs

2016-05-16  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/hashutil.scm, src/autoloads.scm:
	  Added srfi-128 type-specific hash functions.

2016-05-11  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive.scm,
	  lib/gauche/interactive/editable-reader.scm: EXPERIMENTAL: Enable
	  line-editing input when the environment variable GAUCHE_READ_EDIT
	  is set and the terminal is known to be capable of editing.
	  If you see a prompt "gosh$ ", read-edit is enabled.
	  Note: The editing capability depends on text.line-edit, and we
	  still have a few unresolved issues---the display breaks when
	  multiline input goes beyond the screen height, and multibyte
	  characters aren't handled correctly, to name a few.  This mode
	  is to ease debugging of the feature and not for general use yet.

2016-05-08  Shiro Kawai  <shiro@acm.org>

	* src/portapi.c (Scm_PortSeek): Take ungotten char / scratch buffer
	  into account of port offset.  Based on the patch from Koguro.

2016-05-05  Shiro Kawia  <shiro@acm.org>

	* src/gauche/priv/codeP.h: Make C API of code buliding stuff
	  private, and also changed the signature of
	  Scm_MakeCompiledCodeBuilder (crossing fingers).  These C API
	  should only be called from code.c and libcode.scm; other internal
	  parts should depend on Scheme API.
	* src/compile.scm (pass5/lambda),
	  src/libcode.scm (compiled-code-attach-source-info!):
	  Fill signature-info by the signature with extended pair, having
	  source code location info.  With this, the source code location
	  info is carried over to (~ <closure>'info) by Scm_MakeClosure.

2016-05-03  Shiro Kawai  <shiro@acm.org>

	* src/gauche/code.h, src/libcode.scm: Rename 'info' and 'arg-info'
	  slots of <compiled-code> to 'debug-info' and 'signature-info',
	  respectively, to clarify the roles of those slots. (mere 'info'
	  doesn't mean much!)  Technically this is C source-level
	  incompatible change (code that refers to those slots must be
	  changed) but we hope third party code won't touch such internal
	  info (crossing fingers).
	  The Scheme slot names are also renamed, but we leave old names as
	  aliases, in order to allow precompiler work with 0.9.4.  We'll
	  drop the old names sometime after releaseing 0.9.5.

2016-05-02  Shiro Kawai  <shiro@acm.org>

	* src/gauche/code.h, src/code.c: Change the info kept in
	  ScmCompiledCode->argInfo; see the comment of code.h for the details.
	  (1) We include the procedure name in the <signature> part.  We've
	  calculated it every time in Scm_MakeClosure before, which is a
	  waste.
	  (2) Allow to hold more information than arguments in argInfo; a
	  plan is to keep unused args so that it could be used for further
	  optimization, but that part hasn't been written.

2016-04-26  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/parameter.scm (parameterize): Further cleanup.
	  Avoid nested dynamic-wind.  Removed auxiliary macros.

2016-04-23  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-113.scm (sob-hash): Fix - hash function must not rely
	  on the visiting order of hash-table-for-each.

	* libsrc/gauche/parameter.scm (%parameterize-1): Fix a bug that
	  appears when the converter isn't idempotent.

2016-04-22  Shiro Kawai  <shiro@acm.org>

	* src/vm.c, src/gauche/vm.h: Add vmid slot to Scm_VM for numeric id
	  of each VM.  It is intended to ease debugging multithreaded
	  programs (e.g. attach numeric id for messages).  It's not to
	  be used as a handle for a thread.

2016-04-20  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/configure.scm (cf-init): Check dependent module version
	  requirements, if given in package.scm.

2016-04-19  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/version.scm (valid-version-spec?, version-satisfy?):
	  Added.

2016-04-18  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/uri.scm (uri-decompose-authority): Handle IPv6 address
	  as host part, e.g. "[::1]:8080".

	* lib/gauche/package.scm: Enhanced <gauche-package-description> to
	  keep metainformaton provided by the package author.  The package
	  auther can put package.scm in the top dir, which provides metainfo;
	  cf-init can now read package.scm (package name and version can be
	  taken from it) and cf-make-gpd emits gpd file that combines
	  package.scm and build-time info.
	* lib/gauche/configure.scm (cf-init, cf-make-pkg): Adapted the flow
	  using package.scm.
	* ext/template.package.scm: Template package.scm
	* examples/spigot: Adopt package.scm
	* src/gauche-package.in: 'gauche-package generate' copies package.scm
	  template.

2016-04-17  Shiro Kawai  <shiro@acm.org>

	* ext/text/unicode.scm -> ext/gauche/unicode.scm: Changed text.unicode
	  to gauche.unicode, for r7rs string case folding depends on it.
	  R7rs-compatible srfis that deal with string case folding also
	  require r7rs string-ci behavior.

2016-04-11  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/precomp.scm, lib/gauche/cgen/stub.scm: Save
	  source info of precompiled SUBRs and closures.  They can be
	  useful during development.

	* src/libcode.c (compiled-code-definition): Added.  This will be
	  the basis of source-code (gauche/procedure.scm) and
	  <cgen-scheme-code> literal (gauche/cgen/precomp.scm).  Since
	  0.9.5 must be compiled by 0.9.4, we'll defer changing `source-code'
	  etc until after 0.9.5 release.
	* lib/gauche/cgen/literal.scm: Add support of serializing
	  extended pair.  NB: We don't automatically serialize extended-pair,
	  for pair attributes may contain unnecessary info.  Instead,
	  a special proxy object is provided that would be serialized as
	  an extended pair.

2016-04-10  Shiro Kawai  <shiro@acm.org>

	* src/list.c (Scm_MakeExtendedPair): Added.

2016-04-09  Shiro Kawai  <shiro@acm.org>

	* examples/spigot, examples/mqueue-cpp: Switched to use
	  gauche.configure instead of autoconf.

	* lib/gauche/configure.scm: Add framework to run compiler tests.
	  New apis: cf-arg-var, cf-check-tool, cf-prog-cxx, cf-lang,
	  cf-lang-program, cf-lang-io-program, cf-lang-call,
	  cf-try-compile, cf-try-compile-and-link.

	* lib/gauche/process.scm (shell-tokenize-string): Added.

2016-04-08  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/process.scm (shell-escape-string): Add optional flavor
	  argument to allow cross-platform processing.

	* src/libsys.scm (%sys-escape-windows-command-line): Fixed to follow
	  msvc runtime behavior more closely.

2016-04-06  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/mop/singleton.scm: Made it thread-safe.

2016-04-04  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive/toplevel.scm: Allow abbreviation of
	  toplevel commands.  Based on a patch from Hamayama.

2016-04-02  Shiro Kawai  <shiro@acm.org>

	* lib/util/levenshtein.scm: Added.

2016-03-28  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interpolate.scm (%string-interpolate): Slight
	  optimization to avoid unnecessary string-append.

	* lib/gauche/cgen/cise.scm (result): Allow more than three values.
	  Patch from pclouds.

2016-03-26  Shiro Kawai  <shiro@acm.org>

	* ext/srfi/srfi-133.scm -> libsrc/srfi-133.scm: moved
	* ext/srfi/srfi-43.scm: Rewrote on top of srfi-133.

2016-03-25  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive/info.scm: Include module and class names
	  for the lookup entry.  Make the initial table set-up thread safe.

2016-03-24  Shiro Kawai <shiro@acm.org>

	* ext/data/queue.scm (mtqueue-num-waiting-readers): Added.

2016-03-23  Shiro Kawai  <shiro@acm.org>

	* src/load.c (Scm_Require): 'require' now loads a file into
	  a sealed module #<module gauche.require-base>.  This guarantees
	  the forms like define-module or define-library to be visible
	  from the loaded file, and also catches when the loaded file
	  inadvertently inserts toplevel bindings without specifying
	  a module.
	  Note: This change may triggers an error in existing code.  Such
	  code has just "happened to work"; they should be fixed.

	* src/compile.scm (pass4): Use local environment instead of inserting
	  new global identifiers for lifted lambdas.   Inserting new global ids
	  has an issue of where module the global binding should be inserted.

2016-03-22  Shiro Kawai  <shiro@acm.org>

	* ext/srfi/srfi-133.scm: Added srfi-133 support.  The common part
	  of srfi-133 and r7rs is now fully covered by built-in.

2016-03-20  Shiro Kawai  <shiro@acm.org>

	* src/comple.scm (when, unless): Require at least one expr in the
	  body.  Allowing empty when/unless is only marginally useful (maybe
	  some macros can be written more concisely) but it might be better
	  to be strict to catch errors.

2016-03-18  Shiro Kawai  <shiro@acm.org>

	* src/module.c, src/libmod.scm (%seal-module!): Add the 'sealed' flag
	  in ScmModule.  Sealed modules won't allow to create or modify
	  its bindings, nor to newly import modules.

2016-03-17  Shiro Kawai  <shiro@acm.org>

	* src/libcmp.scm, src/compare.c: Integrating srfi-128.
	  INCOMPATIBLE-CHANGE: Built-in make-comparator is now compatible to
	  srfi-128.  Srfi-114 compatible constructor is renamed to
	  make-comparator/compare.
	  It is no longer safe to directly refer to comparator->compareFn
	  and comparator->hashFn in C code; they may be filled lazily.
	  You should call Scm_ComparatorComparisonProcedure() and
	  Scm_ComparatorHashFunction() respectively.
	* various files: Changes according to above; mostly just replacing
	  make-comparator to make-comparator/compare.  Later we may refine
	  the code so that we can use make-comparator whenever it's more
	  efficient.

2016-03-16  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/process.scm: Reject if the same symbol is used more
	  than once as the pipe name in redirects.
	  https://github.com/shirok/Gauche/issues/182

2016-03-12  Shiro Kawai  <shiro@acm.org>

	* lib/text/console.scm (%read-char/timeout): Support mintty/MSYS.
	  (getch): clear the input buffer before finishing.
	  (query-cursor-position): Queue any ESC sequence to input buffer
	  when it is not a cursor position report.
	  (ensure-bottom-room): Rename from last-scroll to indicate
	  what it does, and export this.
	* lib/text/console/windows.scm (%getch-sub): Handle surrogate pairs.
	  (get-raw-chars): Added.
	  (clear-screen, clear-to-eos): Clear to the end of buffer instead
	  of just on-screen area.  Because of IME, it's difficult to properly
	  determine on-screen area size.
	  (ensure-bottom-room): Rename from last-scroll, and add workaround
	  of full-width case.

2016-03-11  Shiro Kawai  <shiro@acm.org>

	* ext/tls/*: Add basic server-side certificate support.  Patch
	  from pclouds.  See https://github.com/shirok/Gauche/pull/180

2016-03-10  Shiro Kawai  <shiro@acm.org>

	* ext/termios/termios.scm: Support mintty on MSYS - the communication
	  between mingw process and mintty isn't direct (it goes through
	  MSYS runtime) so we need to rely on external stty command.
	  See the comment in msys-get-stty.  Originally done by
	  Hamayama ( https://github.com/shirok/Gauche/pull/173 ), and
	  we incorporated with some style adjustements.
	* lib/text/console.scm: has-windows-console? is moved to
	  gauche.termios.

2016-03-07  Shiro Kawai  <shiro@acm.org>

	* src/portapi.c (getc_scratch): Fix: peek-byte could break the
	  following read-char when input contains invalid byte sequence.

2016-03-06  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/stub.scm: Generate stub record in 'decl' part
	  instead of after the function body, so that the cproc body
	  can refer to the decl body.

2016-03-05  Shiro Kawai  <shiro@acm.org>

	* ext/bcrypt: Update bcrypt implementation to crypt_blowfish 1.3,
	  and changed the default from 2a to 2b.
	  See https://github.com/shirok/Gauche/pull/175 and
	  https://github.com/shirok/Gauche/pull/176.

2016-02-27  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/stub.scm (.funcall/rec, .funcall/cps): Allow to
	  specify the module from which the procedure is looked for.

2016-02-26  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/stub.scm: Add .funcall/rec and .funcall/cps to
	  call Scheme function from cproc body easily.

2016-02-24  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/stub.scm: Add .cproc cise macro, which retrieves
	  ScmObj of c-defined procedure in the same cgen unit.

2016-02-13  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-131.scm: Added.

2016-02-12  Shiro Kawai  <shiro@acm.org>

	* examples/get-raw-chars.scm: Added.  Useful to check what kind of
	  key sequence is sent by the terminal.
	* lib/text/console.scm (get-raw-chars): Added.

2016-02-07  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/unit.scm (cgen-emit-h): Always generate .h file
	  even h-file slot of the unit is #f.

2016-02-06  Shiro Kawai  <shiro@acm.org>

	* libsrc/file/util.scm (copy-file) : Added support of :if-exists :append.

2016-02-04  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/test.scm (test-script): Added test-script to test script
	  files quasi-statically.

2016-01-31  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/macroutil.scm (quasirename): Renamed from with-renaming
	  to (1) indicate it is a macro and (2) can be used like quasiquote.

2016-01-28  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/http.scm (start-socket-connection): properly handle
	  ipv6-style server address spec, e.g. "[::1]:8888".

2016-01-23  Shiro Kawai  <shiro@acm.org>

	* src/gauche/class.h, src/class.c: Add Scm_Allocate() API.

2016-01-22  Shiro Kawai  <shiro@acm.org>

	* src/gauche/class.h, src/class.c: API clean up on allocation
	  protocol.   Dropped Scm_ObjectAllocate, for it is trivial and
	  it's rather confusing to have.  Renamed SCM_ALLOCATE and
	  Scm_AllocateInstance for SCM_NEW_INSTANCE and Scm_NewInstance,
	  to indicate they're lowest level of API (akin to SCM_NEW family)
	  that handles very raw allocation (with minimal initialization).
	  We also call SCM_SET_CLASS in Scm_NewInstance, for they should
	  always go together anyway.  The old API is kept during 0.9.x
	  series but will be removed on 1.0.  See the comment in
	  class.h for the details.

2016-01-21  Shiro Kawai  <shiro@acm.org>

	* lib/compat/chibi-test.scm: Handle 'include' form inside
	  chibi-test specially, so that we can say
	  (chibi-test (include "test-file-written-for-chibi.scm")).

2016-01-11  Shiro Kawai  <shiro@acm.org>

	* src/unicode-data.scm: Updated to Unicode 8.0.0

2016-01-10  Shiro Kawai  <shiro@acm.org>

	* lib/text/unicode/ucd.scm, src/gen-unicode.scm: Changed the build
	  flow so that, instead of pre-generating char_attr.c etc., we
	  keep unicode-data.scm in the source tree, which is generated
	  from Unicode character database files; char_attr.c is generated
	  during build (from source tree).
	* src/unicode-data.scm: Added.  Pre-converted data from Unicode
	  character database.
	* src/char_attr.c, ext/text/unicode_attr.h: Removed from the source
	  tree; they are regenerated during clean build.

2016-01-09  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/precomp.scm (declare): Moved handling code from
	  compile-toplevel-form to *special-handlers*, so that macro-generated
	  declare form can be recognized.
	* src/compile-0.scm (define-simple-struct): Keep generated macros
	  in the compiled binary.  Other compiler-related tools may want to
	  use them.

2015-12-25  Shiro Kawai  <shiro@acm.org>

	* src/port.c (Scm_{Get|Set}PortReaderLexicalMode): Save port-local
	  reader lexical mode in port attr.  Directives such as #!r7rs
	  should only affect port-local mode, not the global parameter.
	* src/read.c: Changed references to Scm_ReaderLexicalMode() to
	  Scm_GetPortReaderLexicalMode().

2015-12-24  Shiro Kawai  <shiro@acm.org>

	* src/system.c, src/libsys.scm (sys-mkdtemp): Added mkdtemp support.
	  Patch from enami.

2015-12-22  Shiro Kawai  <shiro@acm.org>

	* configure.ac: AC_PREREQ(2.69) -> AC_PREREQ(2.68), since mingw32
	  still uses 2.68.  There seems not much disruptive changes
	  between them (notable exception is CONFIG_SHELL, but we don't
	  require it in general); so this appears to be a reasonable
	  workarond.  Once mingw32 adopts autoconf 2.69 we can switch back.

2015-12-19  Shiro Kawai  <shiro@acm.org>

	* ext/text/unicode.scm: Update grapheme-break / word-break
	  states to support additional break properties added in
	  Unicode 6.1.0 and after.

2015-12-18  Shiro Kawai <shiro@acm.org>

	* src/gen-unicode.scm, lib/text/unicode/ucd.scm: Move
	  general UCD-related code to a separate module.

2015-12-13  Shiro Kawai  <shiro@acm.org>

	* ext/vport/vport.scm: Added input generator ports.

2015-12-12  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/parameter.scm (parameterize): Fix a bug that failed
	  to restore parameter values when aother parameter in the same
	  parameterize throws an error from the filter proc.
	  See the added test in ext/gauche/test-parameter.scm.
	  NB: This fix is very inefficient when there are lots of
	  parameters bound by a parameterize.  The better way is to split
	  parameter object's operation of appling filter proc and setting
	  new value.  That would require changing the protocol of
	  non-<parameter> parameter-like thingies (a procedure that takes
	  zero or one arguments), though.

2015-12-09  Shiro Kawai  <shiro@acm.org>

	* libsrc/srfi-13.scm (xsubstring): Fixed a bug when from is negative.

2015-12-08  Shiro Kawai  <shiro@acm.org>

	* src/port.c (Scm__SetupPortsForWindows): Set up trapper ports
	  for all standard ports; so that gosh-noconsole script can
	  do input from allocted console as well.

2015-12-03  Shiro Kawai  <shiro@acm.org>

	* lib/data/immutable-deque.scm: Added.

2015-11-28  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/cise.scm: Catch invalid syntax even under
	  keyword-symbol integration.

2015-11-26  Shiro Kawai  <shiro@acm.org>

	* lib/dict/immutable-map.scm: Renamed from ftree-map.scm.

2015-11-21  Shiro Kawai  <shiro@acm.org>

	* src/number.c (read_real): Fix the case of reading zero with big
	  exponent, e.g. 0e325.  Also make sure to return negative zero
	  for something as -1e-10000.

2015-11-20  Shiro Kawai  <shiro@acm.org>

	* src/load.c: Replaced dso_list for dso_table.

2015-11-18  Shiro Kawai  <shiro@acm.org>

	* lib/lang/asm/x86_64.scm: Renamed from x86.scm

2015-11-16  Shiro Kawai  <shiro@acm.org>

	* src/liblist.scm (length<=?): Fix bug when x is empty list.
	  Also added all variations of comparison family: length=?,
	  length<?, length>? and length>=?.

2015-11-15  Shiro Kawai  <shiro@acm.org>

	* lib/lang/asm/x86.scm: Salvaged from experiment_jit branch.  Nothing
	  serious yet, but may be useful to play around machine instructions.

2015-11-13  Shiro Kawai  <shiro@acm.org>

	* src/libsym.scm (identifier->symbol): Call Scm_UnwrapIdentifier to
	  make sure it returns the symbol.  Note that identifier-name can
	  still return an identifier, for it just unwraps outermost identifier.
	  (symbol-append): Fix for the case args have a nested identifier.

2015-11-09  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/generator.scm: Added the rest of srfi-121. Now
	  it's a superset of srfi-121.  (NB: Since srfi-121 hasn't been
	  finalized, we may change this according to how the srfi goes.)

2015-11-06  Shiro Kawai  <shiro@acm.org>

	* src/libmisc.scm (debug-label): Added.  Useful to print out
	  anonymous objects.

2015-11-03  Shiro Kawai  <shiro@acm.org>

	* src/libnum.scm (%log): Explicitly handle the cases when input
	  is infinity.

2015-10-28  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/generator.scm (gtake, gtake*): INCOMPATIBLE CHANGE:
	  Changed optional argument spec of gtake - now it's in sync with
	  oncoming srfi-121.  For the existing code, we provide gtake*.
	  The name is better to indicate the consistency with take*.
	  (gremove, gdelete, gdelete-neighbor-dups): Added for srfi-121.

2015-10-26  Shiro Kawai  <shiro@acm.org>

	* src/module.c (Scm_MakeBinding): Only auto-export interned symbols
	  when module has exportAll flag set.  The compiler may insert
	  toplevel bindings as the result of lambda lifting, but they should
	  not be exported.  They have uninterned symbols as name, so they'll
	  never match, anyway (unless you programatically extract the
	  uninterned symbols).

2015-10-25  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/generator.scm (uvector->generator): Added.

	* ext/uvector/uvector.scm (uvector-ref, uvector-set!): Added generic
	  accessor and mutator for the convenience.

	* src/libvec.scm (%uvector-ref): We unboxed k twice, breaking the
	  whole procedure.  It never surfaced, because the way we used
	  %uvector-ref has always been expanded into UVEC-REF instruction
	  by the compiler so the procedure has never been called.

	* lib/data/ftree-map.scm: Added.

2015-10-24  Shiro Kawai  <shiro@acm.org>

	* lib/www/css.scm (parse-css, parse-css-file): INCOMPATIBLE CHANGE:
	  Changed the name from css-parse-file for the consistency.
	  Also, use `:or'instead of `or' in SxCSS, for the bare symbol
	  could be ambiguous when we have an element named `or'.

2015-10-23  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/vm/profiler.scm (with-profiler): Added.

2015-10-21  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (er-renamer): Allow ER's rename procedure
	  to take lists and vectors; all variables inside it will be
	  renamed.

2015-10-17  Shiro Kawai  <shiro@acm.org>

	* src/macro.c (match_identifier): Further fix to make sure using
	  free-identifier=? to compare literals.  See the added test in
	  test/macro.scm.  This fix is grossly inefficient and should be
	  optimized soon.
	* src/compile.scm (env-lookup-int): Further fix on macro-defining
	  macros. See the added test in test/macro.scm.

2015-10-16  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (env-lookup-int), src/compaux.c (Scm_CopyIdentifier):
	  One step toward fixing macro-defining-macros.  Now identifier can
	  be wrapped with multiple layers, e.g. identifier->name may be
	  another identifier.
	  NB: We may still have places where identifier->name is assumed to
	  be symbol; we need to fix as we find them.

2015-10-15  Shiro Kawai  <shiro@acm.org>

	* src/load.c (Scm__InitLoad): Give *.sld higher precedence to
	  *.sci and *.scm, for it seems the consensus among r7rs.
	  NB: This could pose a problem that if we already have Gauche-optimized
	  library then the user installs r7rs library, the former may be
	  ignored.  In that case, however, we might ask r7rs one to include
	  cond-expand to load Gauche-specific one.

2015-10-14  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (Scm__VMInsnOffsets): Make the offset of insn handlers
	  available without conditional compilation, for easier micro
	  profiling.

2015-10-10  Shiro Kawai  <shiro@acm.org>

	* lib/text/line-edit.scm: Added.
	* examples/line-editor.scm: Sample & test for text.line-edit

2015-10-02  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (user_eval_inner): Use Scm_Exit instead of exit() to ensure
	  flushing output buffers.  This code path is executed only when
	  the C program calls Scm_EvalRec/ApplyRec directly without
	  outer Scm_Eval/Apply.
	  (Scm_VMDefaultExceptionHandler): vm->cstack shouldn't be NULL
	  when this is called, so we use SCM_ASSERT instead of check and exit.

2015-10-01  Shiro Kawai <shiro@acm.org>

	* src/error.c (Scm_ShowStackTrace): Moved to Scheme.
	* src/libeval.scm (%vm-show-stack-trace): Reimplement stack trace
	  printing in Scheme (the actual work is done in %show-stack-trace).
	  Addition: If the expression is the result of macro expansion, show
	  the original source form as well, with its source location.

	* src/libeval.scm (%source-info): Common internal API to extract
	  source info.
	* lib/gauche/vm/debugger.scm (debug-source-info): Rewrote to use
	  %source-info.
	* src/libomega.scm (report-mixin-condition): Ditto.

2015-09-30  Shiro Kawai  <shiro@acm.org>

	* src/libeval.scm (call-macro-expander): EXPERIMENTAL: Add original
	  source before macro expansion to the pair attribute of the expanded
	  form.  Could be used for better error reporting.

2015-09-26  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (builtin-inliner): Fixed a bug that builtin
	  inliners inserted global identifiers unhygienically.  It caused
	  a problem when (1) a macro expands into a procedure call X with
	  builtin inliner (2) the arguments are such that no optimization
	  can be done, and (3) macro use scope has different global binding
	  of the X.  See the added test in test/module.scm for the concrete
	  case.
	  The case we inserted global identifiers was when we couldn't do
	  do any optimization, so we can just return #<undef> to make
	  pass1/expand-inliner give up the optimization.

2015-09-23  Shiro Kawai  <shiro@acm.org>

	* lib/data/ring-buffer.scm: Added.

2015-09-22  Shiro Kawai  <shiro@acm.org>

	* lib/text/console.scm (getch): Support special keys by parsing
	  vt100 input escape sequences.

	* ext/data/queue.scm (queue-internal-list): This name is better.

	* ext/termios/termios.scm (with-terminal-mode): Turn off port buffering
	  if raw or rare mode is specified.

2015-09-21  Shiro Kawai  <shiro@acm.org>

	* ext/data/queue.scm (queue->internal-list): Add this one,
	  corresponding to srfi-117's list-queue-list.

	* lib/data/trie.scm (trie-exists?): Fix a bug that it returned #t
	  even if the given key doesn't exist, but merely a prefix of
	  other keys.
	  (trie-partial-key?): Added to check if the given seq is a prefix
	  of existing keys.
	  (make-trie): New optional argument, tab-empty?.

2015-09-14  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-112.scm: Added.

2015-09-10  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (iform->sexpr): Use identifier's name instead of
	  just stringify the identifier to reconstruct lvar name, for
	  better-looking output.  Patch from wasao:
	  https://github.com/shirok/Gauche/pull/90

2015-09-09  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-117.scm: Added support of srfi-117.

	* lib/compat/chibi-test.scm: Added to adopt srfi test suite easily.

2015-09-06  Shiro Kawai  <shiro@acm.org>

	* lib/text/info.scm: Modified to parse '(line DDD)' part of the menu
	  entries, so that we can jump to the entry inside a page.
	  (info-extract-definition): New API to extract definition inside
	  a node.
	* lib/gauche/interactive/info.scm (info): Changed to show only the
	  entry looked for.
	  (info-page): This one shows entire info node, as the old info command
	  did.

2015-09-04  Shiro Kawai  <shiro@acm.org>

	* doc/HOWTO-mingw.txt: Renamed from mingw-memo.txt

2015-08-31  Shiro Kawai  <shiro@acm.org>

	* ext/tls: Upgraded to axTLS-1.5.3.

2015-08-23  Shiro Kawai  <shiro@acm.org>

	* lib/text/csv.scm (make-csv-writer): Add special-char-set argument
	  to allow to include wider range of characters to cause the field
	  quoted.

2015-08-22  Shiro Kawai  <shiro@acm.org>

	* src/libio.scm (write, write-shared, display): Allow flexible order
	  of port and write-controls arguments.
	* src/libfmt.scm (format): Allow write-controls to be passed as the
	  argument.  (format [port/control1] [port/control2] fmtstr arg...).

2015-08-21  Shiro Kawai  <shiro@acm.org>

	* src/write.c (Scm_WriteWithControls): Added.  In retrospect, this
	  should be named as Scm_Write(), for it's more generic.
	* src/libio.scm (write, write-shared, display): Accept another optional
	  argument for <write-controls>.

2015-08-18  Shiro Kawai  <shiro@acm.org>

	* src/libio.scm (ScmWriteControls): Made it ScmObj.  We'll
	  eventually drop global (dynamic) write control variables, so
	  the tests are commented out.

2015-08-15  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h, src/gauche/writer.h: Renamed WriteParameter to
	  WriteControls, to avoid confusion with srfi-39 parameters.

2015-08-07  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (macroexpand-all, iform->sexpr): Experimentally added.
	  See the comment for the current limitations.

2015-08-05  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h: Add a new flag SCM_CLASS_AGGREGATE to ScmClass,
	  indicating it represents aggregate type.  A new macro
	  SCM_DEFINE_BUILITIN_CLASS_FLAGS for declaring a class with extra
	  flags.
	* src/vector.c: Make vectors and uniform vectros SCM_CLASS_AGGREGATE.
	* src/write.c (write_rec): Recognize SCM_CLASS_AGGERGATE flag for
	  print-level check.
	* src/gauche/vm.h, src/vm.c (Scm_VMWriteParameter): Accessor.

2015-08-03  Shiro Kawai  <shiro@acm.org>

	* src/libio.scm (print-length, print-level, print-base, print-radix):
	  Added.

2015-08-01  Shiro Kawai  <shiro@acm.org>

	* src/gauche/writer.h: Introduced ScmWriteParameter to keep various
	  write customization parameters - *print-level* etc. in CL.
	* src/gauche/vm.h, src/vm.c: Keep the current ScmWriteParameter
	  in VM.
	* src/write.c: Refer to vm->writeParameters.

2015-07-30  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-118.scm, src/srfis.scm: Added srfi-118.

2015-07-29  Shiro Kawai  <shiro@acm.org>

	* src/read.c (read_num_prefixed): Recognize CL-ish #<radix>r syntax.

2015-07-26  Shiro Kawai <shiro@acm.org>

	* src/portapi.c (seek_istr, Scm_PortSeek): Clear scrcnt when seek
	  happens.  Patch from tomonacchi.

2015-07-23  Shiro Kawai <shiro@acm.org>

	* src/libnum.scm, src/number.c, src/bignum.c: Various fixes from
	  Takeshi Abe: Fix 'exact' for integer around SCM_SMALL_INT_MAX and
	  LONG_MAX; RnRS conformance on (negative? +nan.0), (expt 0 z),
	  (magnitude exact-number).

2015-07-19  Shiro Kawai  <shiro@acm.org>

	* lib/data/random.scm (samples$): Added.

2015-07-18  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/stub.scm: Avoid generated code from being warned
	  for unused variables or unused labels.

2015-07-17  Shiro Kawai  <shiro@acm.org>

	* src/port.c (Scm_OpenFilePort): Fix an issue that port-tell doesn't
	  return the size of the file write after opening it in append mode.

2015-07-14  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive.scm (%reader): In REPL, read ahead trailing
	  whitespace characters including the first newline after an sexpr;
	  It's been a source of confusion that typing (read-char) or (read-line)
	  on REPL read the trailing newline.

2015-07-13  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/cise.scm (funcall): Add to allow the case
	  when calling a function computed at runtime.

2015-07-10  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/lazy.scm: Add lappend-map
	* libsrc/gauche/generator.scm: Add gflatten

2015-07-05  Shiro Kawai  <shiro@acm.org>

	* lib/text/csv.scm: Add make-csv-header-parser, make-csv-record-parser,
	  csv-rows->tuples.  NB: We removed <csv> definition, for it was
	  never used.

2015-07-02  Shiro Kawai  <shiro@acm.org>

	* ext/tls: Inhibit building & running ssltest when --disable-threads,
	  since the test program requires thread support.  Ideally, even
	  we say --disable-threads, the test program should be able to
	  use threads as long as the system has it; but that requires more
	  trick in build process, so this is a temporary remedy.

2015-06-30  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive/toplevel.scm: Start adding Scheme48-style
	  REPL toplevel commands.  Will play with this for a while to see
	  how it works.

2015-06-27  Shiro Kawai  <shiro@acm.org>

	* src/write.c, src/libio.scm, src/gauche/port.h:
	  Step 2 of improving writer.  Rename port->recursiveContext
	  to port->writeState.

2015-06-26  Shiro Kawai  <shiro@acm.org>

	* src/write.c, src/libio.scm, src/gauche/priv/writerP.h:
	  Step 1 of improving writer.  Made recursive context into an
	  instance of <write-state>.

2015-06-25  Shiro Kawai  <shiro@acm.org>

	* lib/text/console.scm: Add call-with-console to abstract console
	  mode handling
	* doc/modutil.texi: Document text.console.

2015-06-20  Shiro Kawai  <shiro@acm.org>

	* src/regexp.c: Add RE_ANYR, RE_MATCH1R and RE_MATCHR to support
	  the patterns like #/.+/ efficiently.  We should be able to
	  avoid backtrakcking for all rep-while case, but if the repeated
	  element has structure, we'll need another instruction ("if the
	  next immediate element fails, reset input and continue") that
	  requires some modification in VM (we have to save the input pos
	  without consuming stack), so we'll put it off for future.

2015-06-19  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/computil.scm (make-tuple-comparator): Added.

2015-06-09  Shiro Kawai  <shiro@acm.org>

	* src/libnum.scm (fixnum-width): Fix - been misunderstood r6rs spec.

2015-05-29  Shiro Kawai  <shiro@acm.org>

	* lib/data/cache.scm: Added.

2015-05-21  Shiro Kawai  <shiro@acm.org>

	* src/libsys.scm (sys-setgroups): Added.

2015-05-20  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm: Save closure arginfo to ScmCompiledCode.
	  Taking procedure-info of the closure now returns not only
	  the procedure name, but procedure name + formals.

2015-05-17  Shiro Kawai  <shiro@acm.org>

	* src/system.c (nanosleep), src/gauche/system.h (struct timespec):
	  Workaround for the mingw timespec incompatibility.

2015-05-14  Shiro Kawai  <shiro@acm.org>

	* src/load.c (Scm_LoadFromCString): Added.

2015-05-12  Shiro Kawai  <shiro@acm.org>

	* gc/darwin_stop_world.c: Backported iOS 8 support from bdwgc
	  upstream.
	* configure.ac, gc/configure.ac: The above change requires to link
	  CoreFoundation on darwin.  (The upstream bdwgc doesn't have
	  this modification, so there may be another way; if we figure it
	  out, we might revert this change.)

2015-05-10  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/unit.scm (gauche.cgen.unit): Renamed and moved
	  c-safe-string-literal to here as cgen-safe-string, for the
	  consistency.

2015-05-08  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/literal.scm (<cgen-scheme-integer>): Fix
	  cross-compiling issue - we may generate code for 32bit architecure
	  using 64bit gosh.

2015-05-01  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h (SCM_NORETURN): Allow using
	  __attribute__((__noreturn__)) in gcc.

	* lib/gauche/cgen/cise.scm (define-cfn): Allow :inline qualifier.

2015-04-25  Shiro Kawai <shiro@acm.org>

	* lib/gauche/interactive/ed.scm (ed): Add 'ed' in REPL.

2015-04-24  Shiro Kawai  <shiro@acm.org>

	* src/libeval.scm (%exit): Allow arbitrary Scheme objects for
	  the argument, to conform r7rs.

2015-04-21  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/vm/profiler.scm (profiler-show-load-stats): Fix a bug
	  that didn't exclude time for subloads.  Patch from Duy Nguyen.

2015-04-20  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive.scm (describe): Show the source location
	  for a procedure, if available.

2015-04-13  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/mime.scm -> libsrc/rfc/mime.scm,
	  ext/rfc: Precompile rfc.mime.

2015-04-12  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/json.scm: Updated to follow rfc7159 (allow any value
	  on the toplevel of json).

2015-04-10  Shiro Kawai  <shiro@acm.org>

	* src/genconfig.in: Allow multiple arguments to gauche-config
	  for the convenience.

2015-04-09  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/record.scm -> libsrc/gauche/record.scm,
	  ext/gauche/Makefile.in: Precompile gauche.record

	* src/libsym.scm (identifier-append): Added (experimental)

2015-04-08  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-78.scm: Added.

2015-04-04  Shiro Kawai  <shiro@acm.org>

	* src/libsym.scm (symbol-append): Added.

2015-03-31  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/sequence.scm (common-prefix, common-prefix-to): Added.

2015-03-30  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (er-comparer): Check if args are variable; without
	  this check, compiler barfs with assertion failure if the user passes
	  non-variable arg to 'compare' proc of er-transformer.

2015-03-28  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass5/emit-local-env-jump),
	  src/vminsn.scm (LOCAL-ENV-SHIFT, BOX),
	  src/vm.c (local_env_shift): Improvement of the last commit - instead
	  of changing BOX behavior to add another 'mode', we split
	  LOCAL-ENV-JUMP insn to LOCAL-ENV-SHIFT + JUMP, and insert boxing
	  operatins inbetween when necessary.  If there's no mutable variable
	  in the frame, we use LOCAL-ENV-JUMP as before.

2015-03-27  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass5/prepare-args, pass5/box-mutable-lvars):
	  Fix incorrect insertion of BOX instruction.  The mutable variable
	  in local environment must be BOXed after all the values in the
	  env are evaluated, otherwise the result would be incorrect if
	  a continuation is captured in one of the init expression of
	  the variable and restarted.  See the added test in test/dynwind.scm
	  to reproduce the issue.  Thansk to @gengar68 for finding the bug.
	* src/vminsn.scm (BOX): We enhanced BOX insn with negative parameter;
	  we need to support both cases of the env frame is already created
	  and is yet to be created.

2015-03-21  Shiro Kawai  <shiro@acm.org>

	* src/gauche-package.in, ext/template.DIST: Retire DIST script;
	  we no longer need autoconf (DIST gen), and DIST tgz is handled
	  by 'gauche-package make-tarball'.

2015-03-20  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/package/util.scm (find-package-name-and-version): Added.
	* lib/gauche/package/build.scm, src/gauche-package.in:
	  Added "make-tarball" command; this will replace "DIST tgz".

2015-03-19  Shiro Kawai  <shiro@acm.org>

	* lib/util/dominator.scm: Added.  (NB: If we have enough graph-related
	  libraries, we may want to have util.graph.* subcategory).

2015-03-14  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/http.scm (http-status-code->description): Added.

2015-03-09  Shiro Kawai  <shiro@acm.org>

	* ext/tls/tls.scm (make-tls): Expose flags and num-sessions argument
	  of ssl_ctx_new to Scheme.  Useful for debugging by giving
	  SSL_DISPLAY_BYTES and/or SSL_DISPLAY_STATES, for example.

	* lib/rfc/uri.scm (uri-ref): added.

2015-03-07  Shiro Kawai  <shiro@acm.org>

	* gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/mips.h:
	  mips64el support.  Patch from James Cogwill.

	* src/gauche/priv/portP.h: Fix race condition in PORT_UNLOCK
	  by adding a memory barrier.  Patch from James Cogwill.

2015-03-06  Shiro Kawai  <shiro@acm.org>

	* ext/sparse/sparse.scm: Add sparse matrix.

2015-03-04  Shiro Kawai  <shiro@acm.org>

	* ext/sparse/spvec.c: Add default value to sparse vectors.

2015-02-24  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/cise.scm: Renamed cgen-context to cgen-ambient,
	  for the term 'context' is also used in the local C context
	  (toplevel, stmt, expr) and confusing.

2015-02-22  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/stub.scm: During expanding stub procedures
	  (define-cproc etc) we set up a custom cise context to override
	  "return" macro; so that we can say (return something) safely
	  in the stub procedures, instead of (result something), which
	  is somewhat awkward.  The difference from C return is that
	  it can handle multiple return values.
	  Note that this 'return' macro really behaves like return---it
	  skips the rest of the procedure, unlike the 'result' macro that
	  merely assigns SCM_RESUT values.  The code that relies the
	  'result' macro to continue execution (which is a bad habit)
	  can't just replace 'result' to 'return'.

2015-02-11  Shiro Kawai  <shiro@acm.org>

	* ext/net/netaux.scm (make-server-sockets): Handle the case when
	  port is 0.  Also avoid using cond-expand, for this file can be
	  precompiled on different platform than the target.

2015-02-10  Shiro Kawai  <shiro@acm.org>

	* ext/net/netaux.scm (make-server-socket): Allow passing multiple
	  ports and let the function choose an available one.

2015-02-03  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/common-macros.scm (and-let1): Allow multiple exprs
	  in body.  Added doc (so it's official).

2015-02-01  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/common-macros.scm (and-let1): Added experimentally.
	  I feel that I wrote single-binding and-let* enough times.

2015-01-31  Shiro Kawai  <shiro@acm.org>

	* ext/vport/vport.scm (open-input-char-list, open-input-byte-list):
	  Added list ports.
	* src/liblazy.scm (port->char-lseq, port->byte-lseq, port->string-lseq)
	  (port->sexp-lseq): Added for the convenience.

2015-01-30  Shiro Kawai  <shiro@acm.org>

	* src/prof.c (Scm_ProfilerStart): Use Scm_TmpDir to get temporary
	  directory, instead of hardcoding "/tmp".

2015-01-29  Shiro Kawai  <shiro@acm.org>

	* src/portapi.c (Scm_UngottenChars, Scm_UngottenBytes): API
	  to retrieve bufferd chars/bytes.  Note that the current getc-ungetc
	  API may be changed in future, so don't rely on these too much.
	  (The semantics of "ungetting" isn't well defined, especially when
	  binary i/o and character i/o are mixed.)
	* src/libio.scm (%port-ungotten-chars, %port-ungotten-bytes):
	  Exposing above in gauche.internal module.

2015-01-24  Shiro Kawai  <shiro@acm.org>

	* lib/text/gap-buffer (text.gap-buffer): Added experimentally.

2015-01-17  Shiro Kawai  <shiro@acm.org>

	* src/number.c (Scm_GetIntegerUMod): Added - a convenience routine to
	  extract lower u_long bits from an exact integer.

2015-01-15  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-69.scm, src/srfis.scm, test/srfi.scm, doc/modsrfi.texi:
	  Added srfi-69 support.

2015-01-14  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/record.scm: Fix a bug when there's one argument
	  given to the custom constructor.

	* src/libvec.scm (%uvector-ref), src/vector.c (Scm_VMUVectorRef):
	  Fixed a bug that leaked #<unbound>.  Patch from wasao.

2015-01-09  Shiro Kawai  <shiro@acm.org>

	* src/compare.c (comparator_compare): Make equal? to compare
	  comparator's elements.

2015-01-08  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-113.scm: Added srfi-113.

2015-01-07  Shiro Kawai  <shiro@acm.org>

	* src/error.c (Scm_ReportError), src/libexc.scm (report-error):
	  Added optional sink argument to specify where the message go.
	  We want to change C API Scm_ReportError accordingly; to keep
	  0.9 ABI compatibility, there's some transient code in place.

2015-01-06  Shiro Kawai  <shiro@acm.org>

	* src/compare.c (Scm_Compare): Handle comparison of different
	  type of objects even if their types are not the one mentioned
	  in srfi-114.

2015-01-02  Shiro Kawai  <shiro@acm.org>

	* doc/corelib.texi (report-error): Documented.

2014-12-31  Shiro Kawai  <shiro@acm.org>

	* ext/threads/threads.c (make-thread): Set custom-error-reporter
	  of newly created thread to suppress the default error message;
	  the unhandled error (which causes error message by default)
	  should be handled by the caller of thread-join!.  If one wants
	  to report an error within the thread, use guard and report-error.

	* src/libeval.scm (%vm-custom-error-reporter-set!): Renamed from
	  vm-set-custom-error-reporter, and moved to gauche.internal module.
	  This is something you don't need to touch daily, so no reason to
	  expose it by default.

	* src/vm.c (Scm_VMDefaultExceptionHandler),
	  src/error.c (Scm_ReportError): Instead of calling
	  vm->customErrorHandler in Scm_ReportError, we lifted the check
	  to Scm_VMDefaultExceptionHandler; if vm->customErrorHandler is
	  set, it is called directly, and Scm_ReportError always print
	  the default message and stack trace.  This seems the sane way
	  to do it - we don't remember why we chose to dispatch inside
	  Scm_ReportError initially.

	* ext/threads/threads.c (Scm_MakeThread): Do not alter
	  customErrorReporter in the new thread.  Instead, we just drop
	  call of Scm_ReportError in thread_entry.  If the programmer
	  needs the thread to report error, she can call report-error
	  within guard clauses.

2014-12-30  Shiro Kawai  <shiro@acm.org>

	* src/gauche/vm.h: INCOMPATIBLE CHANGE: Renamed
	  ScmVM.defaultEscapeHandler for customErrorReporter.  The name was
	  misleading as if it would handle escaping situation caused by
	  exceptions; in fact, we have totally separate mechanism to handle
	  exceptions, and the said slot is merely called by Scm_ReportError,
	  which is the default action when the exception isn't handled at
	  all.
	  ABI compatibility is kept, but any extension code that refers to
	  this slot would break.  Since this is undocumented niche feature,
	  we hope this won't affect much.
	* src/libeval.scm: vm-set-default-exception-handler becomes
	  vm-set-custom-error-reporter, as well.

2014-12-27  Shiro Kawai  <shiro@acm.org>

	* lib/Makefile.in: Don't forget to install srfi-18.scm
	* ext/threads/threads.scm: Re-export current-thread

2014-12-23  Shiro Kawai  <shiro@acm.org>

	* src/module.c: Introduced gauche.keyword module to allow R7RS
	  modules to use keyword default bindings.  See the comment.

2014-12-21  Shiro Kawai  <shiro@acm.org>

	* src/load.c: Support '.sld' suffix by default.

2014-12-18  Shiro Kawai  <shiro@acm.org>

	* configure.ac, ext/*/*.ac, src/Makefile/in, src/genconfig.in:
	  Add --static-libs option to gauche-config, which lists all
	  libraries needed for statically linked binary.

2014-12-17  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/macroutil.scm (with-renaming): Experimentally added
	  a utility to construct the result form within er macro transformer.
	  NB: The old undocumented macros defined in macroutil.scm are removed,
	  for they aren't used much after all.

2014-12-14  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/unit.scm (cgen-safe-name{-friendly}): Allow ':'
	  to be in C name, so that we can call C++ namespace-qualified
	  functions.

2014-12-13  Shiro Kawai  <shiro@acm.org>

	* lib/data/heap.scm (binary-heap-swap-{min|max}!): Added.

2014-12-12  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/configure.scm (parse-command-line-arguments):
	  Made ./configure -V|version option output the package name and
	  the package version in the same format as autoconf-generated
	  configure scripts.

2014-12-09  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/sequence.scm (break-list-by-sequence)
	  (break-list-by-sequence!): Added.

2014-12-07  Shiro Kawai  <shiro@acm.org>

	* ext/sparse/sparse.scm: Added missing generic ref and
	  call-with-iterator methods.

	* libsrc/util/match.scm (in): Fixed a bug that emits incorrect
	  matching code.  See addition in ext/util/test.scm for the
	  specific pattern to exhibit this bug.

2014-12-06  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/dictionary.scm (dict-clear!): Added missing export.

2014-12-05  Shiro Kawai <shiro@acm.org>

	* libsrc/gauche/sequence.scm (sequence-contains): Renamed for clarity.
	  (sequence->kmp-stepper): Expose KMP search element.

2014-12-01  Shiro Kawai  <shiro@acm.org>

	* src/gauche/vm.c (ScmIdentifier):
	* src/compaux.scm (Scm_MakeIdentifier, Scm_OutermostIdentifier)
	  (Scm_UnwrapIdentifier, Scm_IdentifierGlobalBinding):
	  Allow nested identifier, that is, identifier to wrap another
	  identifier.  Will be needed to support nested hygienic macros.
	  This changes the signature of Scm_MakeIdentifier, so
	  various files are touched to accomodate it.

2014-11-30  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/sequence.scm (sequence-scan): Added.

2014-11-29  Shiro Kawai  <shiro@acm.org>

	* lib/data/trie.scm (trie-longest-match): Added.

2014-11-26  Shiro Kawai  <shiro@acm.org>

	* src/libcode.scm (compiled-code-push-info!): Added.
	* src/compile.scm (pass5/lambda): Add 'definition debug info
	  to the compiled code created by $LAMBDA node.
	  (pass1/define): Attach original source code info to
	  the transformed lambda form.
	* lib/gauche/procedure.scm (source-code, source-location): Added.

2014-11-25  Shiro Kawai  <shiro@acm.org>

	* src/error.c (Scm_Warn), src/libmisc.scm (warn): Allow suppressing
	  warning by environment variable GAUCHE_SUPPRESS_WARNING.

2014-11-18  Shiro Kawai  <shiro@acm.org>

	* gc/pthread_support.c (start_mark_threads): Experimantally added
	  code to set up signal masks for parallel marker threads.  Eventually
	  this should be more generalized API and submitted to upstream,
	  but for the time being, let's see if this solves the "lost signal"
	  problem (the issue that delivered signal is discarded when it's
	  delivered to one of the marker threads instead of Gauche threads.)

2014-11-12  Shiro Kawai  <shiro@acm.org>

	* src/gauche/port.h (SCM_PORT_CASE_FOLDING): Renamed the macro name
	  from SCM_PORT_CASE_FOLD, which is the same name for the flag name
	  and could be confusing.

2014-11-11  Shiro Kawai  <shiro@acm.org>

	* src/main.c: Enable -fcase-fold in REPL mode, too (we only had it
	  work on scripts).
	* src/port.c (Scm_GetPortCaseFolding, Scm_SetPortCaseFolding): APIs
	  to get/set port's case folding mode.

2014-11-10  Shiro Kawai  <shiro@acm.org>

	* lib/r7rs.scm (r7rs-import): Warn when a programmer say
	  (import (gauche)) in r7rs program.  It's probably the first
	  attempt for her to use Gauche's builtin bindings in r7rs programs,
	  and it's better to guide her to (import (gauche base)).

	* src/srfis.scm: For built-in srfi modules, make public symbols
	  exported so that r7rs programs can see them with (import (srfi N)).
	  From Gauche programs, those symbols are visible by default since
	  the module inherits the gauche module, so we haven't been careful
	  about exports.  However, with r7rs programs we need to set them up
	  correctly.

2014-11-08  Shiro Kawai  <shiro@acm.org>

	* ext/tls: Upgraded to axTLS-1.5.0.

2014-11-07  Shiro Kawai  <shiro@acm.org>

	* src/gauche/char_utf_8.h (Scm__CharIsExtraWhiteSpace): Do not treat
	  U+180e as a whitespace char.  It was changed from Zs to Cf in
	  Unicode 6.3.0.  (NB: We also need update char_attr.[ch] for
	  char-general-category to reflect the change.)

2014-11-05  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/test.scm (test*): Rewrote using er-macro so that
	  importing only 'test*' but not 'test' will still work.

	* src/compile.scm (pass1/define): Rename toplevel identifier inserted
	  by a macro, to keep hygiene.  RnRS does not specify this behavior
	  and implementations make different choices, but it seems that this
	  is the most straightforward way for Gauche to do the right thing.
	  Note that the code relying the (officially undefined) behavior,
	  that macro-injected toplevel binding appear in the macro calling
	  module, will break with this change.

2014-11-04  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/test.scm (test-none-of): Added.

2014-11-02  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (%make-er-transormer),
	  lib/gauche/common-macros.scm (er-macro-transformer): Added to
	  give a shot.
	* src/libmod.scm (global-identifier=?, free-identifier=?): Moved
	  from compile.scm

2014-10-30  Shiro Kawai  <shiro@acm.org>

	* src/number.c (Scm_MinMax): Return NaN if any of the arguments is NaN.

2014-10-28  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/numerical.scm (encode-float): Added.

2014-10-27  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/lazy.scm: Added linterweave.

2014-10-25  Shiro Kawai  <shiro@acm.org>

	* src/port.c: Experimentally allow access port information as
	  slots.

2014-10-23  Shiro Kawai  <shiro@acm.org>

	* src/libdict.scm (combine-hash-value): Expose internal COMBINE
	  to be used from other places.  Not sure yet if this is general
	  enough, so for the time being this is EXPERIMENTAL.

2014-10-22  Shiro Kawai  <shiro@acm.org>

	* lib/data/trie.scm: Renamed util.trie -> data.trie.

2014-10-21  Shiro Kawai  <shiro@acm.org>

	* lib/data/heap.scm: Added find/remove!/delete! operations.

2014-10-20  Shiro Kawai  <shiro@acm.org>

	* lib/data/heap.scm: Using backing storage vector from element 0,
	  by offsetting the index.  It is simpler in terms of API, and
	  in the long run it will win.

2014-10-19  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/sortutil.scm (sorted?): Fixed a bug - the condition of
	  (sorted? (... x y ...)) should be (not (less? y x)) for every
	  consecutive pairs, instead of (less? x y).  For example,
	  (sorted? '(1 1) <) should be #t.
	* lib/gauche/sortutil.scm, lib/gauche/generic-sortutil.scm:
	  Accept comparators as well as less-than procedure.

2014-10-18  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/vecutil.scm (vector-tabluate): Made it restart-safe.
	  (reverse-list->vector): Implement in core instead of srfi-43.
	* test/vector.scm: Added.

2014-10-17  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/computil.scm: Changed make-field-comparator to
	  make-key-comparator, for the consistency.

2014-10-16  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/computil.scm: Added make-reverse-comparator,
	  make-field-comparator, make-car-comparator and make-cdr-comparator.

2014-10-13  Shiro Kawai  <shiro@acm.org>

	* lib/data/heap.scm: EXPERIMENTAL: Added binary min-max heap.

2014-10-11  Shiro Kawai  <shiro@acm.org>

	* ext/sparse/*: Renamed util.sparse -> data.sparse.

2014-10-10  Shiro Kawai  <shiro@acm.org>

	* src/libcmp.scm: Add srfi-114 primitive applicators as SUBR,
	  for the performance.
	* lib/gauche/cgen/cise.scm: Make logand, logior and logxor n-ary.

2014-10-09  Shiro Kawai  <shiro@acm.org>

	* ext/sparse/sparse.scm: Allow make-sparse-table to take comparator.
	  Add sparse-table-comparator and sparse-vector-comparator to
	  conform new dictionary protocol.

2014-10-08  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/dictionary.scm (dict-comparator): A new dictionary
	  protocol API to retrieve a comparator.  It is useful to implement
	  generic meta-operations on dictionaries.

2014-10-07  Shiro Kawai  <shiro@acm.org>

	* src/libdict.scm (%make-tree-map),
	  lib/gauche/treeutil.scm (make-tree-map): Save a comparator
	  instead of closure in core->data field.
	* src/libdict.scm (tree-map-comparator): Added to retrieve
	  the comparator.

2014-10-06  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/treeutil.scm (make-tree-map): Allow to take a
	  comparator.

2014-10-05  Shiro Kawai  <shiro@acm.org>

	* src/hash.c, src/libdict.scm: Support general hash table
	  using comparators.

2014-10-04  Shiro Kawai  <shiro@acm.org>

	* src/libproc.scm (applicable?): Moved from lib/gauche/procedure.scm.
	  Needed in core in order to construct built-in comparators.

	* src/libalpha.scm (case-lambda-info): Encapsulate interpretation
	  of case-lambda dispatch vector in this procedure, so that other
	  parts won't depend on the structure of the dispatch vector.
	* lib/gauche/procedure.scm (disasm): Changed accordingly.

2014-10-03  Shiro Kawai  <shiro@acm.org>

	* src/libsys.scm (sys-sleep, sys-nanosleep): Changed to retry
	  sleep/nanosleep by default if it is interrupted by as signal.
	  They can be interrupted very often, for GC may use signals
	  to synchronize threads.  We assume it's very unlikely that
	  there are programs that relies on the previous behavior,
	  but if you do need those procedures to return by signals,
	  give #t to the optional argument.

2014-10-02  Shiro Kawai  <shiro@acm.org>

	* src/cross-compile-ios.scm: A script to compile Gauche as an iOS
	  framework.  This is kind of old---tested on 2013/07 with iOS6
	  and haven't updated since then.  Just put it in repo for
	  a reference.

2014-10-01  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/computil.scm : Added.  Provides some basic comparators.
	* src/autoload.scm: Autolaod computil.scm

2014-09-29  Shiro Kawai  <shiro@acm.org>

	* src/compare.c (Scm_Compare): Handle complex number ordering.

2014-09-28  Shiro Kawai  <shiro@acm.org>

	* src/compare.c (Scm_Compare): Implement ordering of different types,
	  according to srfi-114.

2014-09-27  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (define-syntax): Fix the case when toplevel
	  macro is inserted by another hygienic macro.  We may need to
	  revisit interpretation of toplevel identifier renaming; see
	  the comment in pass1/define.

2014-09-26  Shiro Kawai  <shiro@acm.org>

	* src/compare.c (Scm_Compare), src/vector.c, src/symbol.c: Enhanced
	  domain of Scm_Compare to support srfi-114.  Now booleans, lists,
	  symbols, vectors and uvectors can be compared each other.
	* src/libcmp.scm (comparator-*): Added some srfi-114 comparator API.

2014-09-25  Shiro Kawai  <shiro@acm.org>

	* src/libvec.scm: Added uvector?

2014-09-24  Shiro Kawai  <shiro@acm.org>

	* ext/util/queue.scm, ext/data/queue.scm: util.queue -> data.queue.

2014-09-23  Shiro Kawai  <shiro@acm.org>

	* ext/math/mt-lib.stub: Merged to mt-random.scm

2014-09-22  Shiro Kawai  <shiro@acm.org>

	* ext/gauche/fcntlib.stub: Merged to fcntl.scm

2014-09-21  Shiro Kawai  <shiro@acm.org>

	* ext/zlib/zliblib.stub: Merged to zlib.scm

2014-09-20  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/precomp.scm (without-precompiling): Added a special
	  directive to put the forms into *.sci file, without precompiling them.
	  If we want to cond-expand at load time, we can't precompile it.

	* ext/termios/termiolib.stub: Merged to termios.scm
	* ext/binary/binarylib.stub: Merged to io.scm

2014-09-19  Shiro Kawai  <shiro@acm.org>

	* examples/snake.scm: Added a sample of text.console.

2014-09-18  Shiro Kawai  <shiro@acm.org>

	* lib/text/console.scm: Added.  Still unofficial & experimental.

2014-09-16  Shiro Kawai  <shiro@acm.org>

	* ext/termios/termios.scm (with-terminal-mode): Experimentally added.

2014-09-15  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive.scm (describe): Improve output of
	  (describe <generic>).

2014-09-13  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h (SCM_FOREIGN_POINTER_REF): Calls Scm_ForeignPointerRef.
	* src/class.c (Scm_ForeignPointerRef, Scm_ForeignPointerInvalidP)
	  (Scm_ForeignPointerInvalidate): Added.  When the object pointed
	  by a foreign pointer became obsoleted (e.g. freed), you can mark
	  the foreign pointer "invalid", so that the subsequent dereference
	  of the pointer raises an error.
	* src/libmisc.scm (foreign-pointer-invalid?, foreign-pointer-invalidate!):
	  Scheme interface for the above.

	* ext/windows/console.stub (sys-set-screen-buffer-size): Fixed a bug.

	* ext/vport/vport.scm (open-output-uvector):
	  Allow option to make the output buffer extendable.
	  (get-output-uvector): Added to enable retrieving the accumulated
	  result, needed when the buffer is extendable.
	* lib/r7rs.scm (open-output-bytevector, get-output-bytevector):
	  Rewritten using above.

2014-09-12  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/stub.scm (define-cptr): Fix a bug that passes
	  unboxer and boxer names in reverse (thanks to KOGURO Naoki).

	* ext/uvector/uvector.scm (uvector-class-element-size)
	  (uvector-copy): Added.

2014-09-11  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/uvector.scm (make-uvector): Added generic uvector
	  constructor.

	* ext/template.configure: FIX: Added missing default_prefix setup.

	* src/error.c (Scm_Raise), src/libexc.scm (raise),
	  src/vm.c (Scm_VMThrowException): The last fix of r7rs#raise
	  wasn't enough, for it invoked the second error with the same
	  exception handler as the first raise.

2014-09-10  Shiro Kawai  <shiro@acm.org>

	* lib/r7rs.scm (raise): Adjust r7rs#raise to be compatible with r7rs,
	  instead of using gauche#raise (srfi-19 compatible).

2014-09-09  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/vecutil.scm (vector-for-each, vector-for-each-with-index):
	  Fix bugs when more than one vectors are given.

	* lib/gauche/common-macros.scm (dotimes): Return #<undef> unless
	  the result clause is provided.  It doesn't really matter, but better
	  to make it explicit that the return value is undefined.

2014-09-07  Shiro Kawai  <shiro@acm.org>

	* src/module.c (Scm_ImportModule): Fix a bug in dupe elimination
	  of imported modules.  We should allow modules that have the same
	  origin, for they may have different qualifications; in such a case,
	  eliminating one will change the semantics.

2014-09-06  Shiro Kawai  <shiro@acm.org>

	* lib/Makefile.in: Don't forget to install gauche/base.scm.

	* ext/util/queue.scm (dequeue-int): Clear the slots of dequeued
	  pair, to ensure weak-GC safety.
	* lib/text/html-lite.scm: Support HTML5 elements and doctype
	  (patch from Takashi Fujita).

2014-09-04  Shiro Kawai  <shiro@acm.org>

	* src/number.c (Scm_StringToNumber): Allow '_' to be inserted between
	  digits when a number is explicitly prefixed.  This is for the
	  readability, e.g. #b1101_1000_0001_1101 etc.  We don't allow
	  unprefixed numbers, though, for the possible incompatibility
	  (e.g. 3_2 may be interpreted as a symbol.)

2014-09-03  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive.scm (describe): When object is char or integer,
	  print alternative representation / useful info if relevant.

2014-08-28  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/precomp.scm (handle-define-syntax): Allow
	  Scheme-defined low-level macro transformer to be compiled
	  into *.c file, instead of emitting it to *.sci file.

	* src/libmod.scm (%insert-syntax-binding): Added.  Currently our
	  runtime don't distinguish toplevel value binding and syntax binding,
	  so %insert-binding can do both, but in future we may treat syntactic
	  binidng specially.
	* src/compile.scm: Changed accordingly.

2014-08-24  Shiro Kawai  <shiro@acm.org>

	* src/gauche/macro.h -> src/gauche/priv/macroP.h: Moved macro
	  implementation details to private header.  ScmSyntax and
	  ScmMacro should be treated as opaque objects.  Various files
	  adjusted.
	* src/macro.c (Scm_MakeMacro): Changed ScmMacro structure and
	  the signature of Scm_MakeMacro.  Now ScmMacro is simply a wrapper
	  of macro transformer (Sexpr, Env -> Sexpr), with an optional
	  name.   Technically this is an incompatible change, but we
	  expect nobody was directly using this interface.
	  We also change the way the macro expander is called; we pass
	  CENV, instead of a list frames, to the expander procedure.
	  This was never specified explicitly, and actually we had it wrong---
	  tye synrule expander expected frames, and the primitive expander
	  expected cenv.  It happened to work because we hadn't used env
	  argument of primitive-expander yet.
	* src/libeval.scm (macro-transformer): Added.
	  (call-macro-expander): Pass CENV to the third arg.

2014-08-23  Shiro Kawai  <shiro@acm.org>

	* src/macro.c (Scm_VMMacroExpand): Obsoleted.  Implement it in
	  compile.c (%internal-macro-expand).
	* src/libeval.scm (macroexpand, macroexpand-1): Changed accordingly.

2014-08-21  Shiro Kawai  <shiro@acm.org>

	* src/error.c (Scm_PrintDefaultErrorHeading),
	  src/libexc.scm (print-default-error-heading): Implement this in
	  Scheme for the better maintainability.
	* src/libomega.scm (report-mixin-condition): Generalized handling
	  mixin conditions.
	  Note: The above two changes may be a dangerous move, which
	  can make it difficult to diagnose when we mess up then runtime
	  in a way that error reporting can't be carried out.  Especially,
	  now we rely on working method dispatch to display mixin condition
	  messages.  If this becomes an issue, we may replace the mixin
	  condition mechanism to more primitive ones, like manual dispatch.
	* src/libexc.scm (<compile-error-mixin>),
	  src/compile.scm (compile): Handle compile error using mixin
	  condition.

2014-08-20  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/exception.h, src/error.c (<load-condition-mixin>):
	  Added a mixin condition type to attach load context to
	  errors occurred during loading.
	  (Scm_PrintDefaultErrorHeading): Add load context information
	  when available.
	  (Scm_ExtractSimpleCondition): Added.
	* src/libeval.scm (load-from-port): Intercept a thrown condition to
	  attach <load-condition-mixin>.

	* lib/gauche/test.scm (<test-error>, test-check): Checks the
	  result condition considering compound conditions.  In order to
	  use condition-has-type?, now <test-error> instance holds
	  the actual condition object.
	* lib/gauche/condutil.scm, src/libomega.scm: Moved
	  definition of (slot-missing <condition-meta> <compound-condition>
	  <top>) from the former to the latter; Slots of compound conditions
	  may be referred without condutil being autoloaded.

2014-08-19  Shiro Kawai  <shiro@acm.org>

	* lib/binary/pack.scm (make-packer): Made cached? argument :optional
	  for the consistency with the doc.

2014-08-18  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (primitive-macro-transformer): Added experimentally;
	  the plan is to build all other macro system on top of this.  See
	  if it's feasible.
	  (cenv-lookup-variable, cenv-lookup-syntax, env-lookup): Split
	  cenv-lookup into these APIs; mainly to avoid construction of
	  temporary cenv when we already have module and frames separately.
	* src/libmod.scm (id->bound-gloc): Moved from compile.scm.
	* src/macro.c (Scm_MakeMacroTransformer): Changed signature of
	  the transformer - now it takes form and macro-use environment.

2014-08-16  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (ensure-identifier): Properly capture the environment
	  into the created identifier.
	  (%bind-inline-er-transformer): Fix incorrect initialization of
	  cenv.
	  (%attach-inline-er-transformer): Make compare closure work.
	  (free-identifier=?): Added.

2014-08-14  Shiro Kawai  <shiro@acm.org>

	* src/system.c (Scm_AvailableProcessors),
	  src/syslib.scm (sys-available-processors): Added to query # of
	  available processors.

2014-08-13  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/vm/debugger.scm (debug-funcall), src/read.c (#?,):
	  Experimentally added a new debug form, #?,(proc arg ...).  Unlike
	  debug-print (#?=), this displays the value of arg ....

2014-08-11  Shiro Kawai  <shiro@acm.org>

	* src/load.c, src/libeval.scm (load-from-port): Rewrote load-from-port
	  in Scheme.  Scm_VMLoadFromPort is no longer used.  An internal
	  procedure Scm__RecordLoadStart is also obsoleted.
	  Also dropped LOAD_MAIN_SCRIPT flag.  This flag is introduced on
	  2011-01-02, but has never been used, and never been officially
	  announced.

2014-08-10  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h etc.: Removed pre-0.9 compatibility macro definitions.
	  It's been almost 5 years since 0.9 release and it's about time.
	  The compatibility routines (*Compat()) are kept in *.c file so
	  that the old compiled binaries keep working until 1.0 release.
	  However, newly compiled binaries should adopt 0.9 API.

	* libsrc/util/match.c: Fixed a bug that doesn't handle match
	  expressions generated by hygienic macros.  The `quote' in
	  patterns may become an identifier in the macro output.

2014-08-09  Shiro Kawai  <shiro@acm.org>

	* src/symbol.c: Enabled support of symbol-keyword unification,
	  though it's off by default for the backward compatibility.
	  Setting environment variable GAUCHE_KEYWORD_IS_SYMBOL turns on
	  the feature.  At some point in future we flip the default,
	  so the feature will be on by default, and setting enviornment
	  variable GAUCHE_KEYWORD_DISJOINT turns off.

2014-08-07  Shiro Kawai  <shiro@acm.org>

	* src/write.c (Scm_Write): Avoid using srfi-38 notation if
	  (display <string>) is called within write-shared.  It doesn't
	  contribute readability at all (since you can't know what the
	  label refers), and sometimes interferes with user-defined
	  object writer.

2014-08-04  Shiro Kawai  <shiro@acm.org>

	* ext/termios/termiolib.stub (sys-termios-copy): Added.

2014-08-02  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/*, src/vector.c: Restructured the sources.
	  Now we name the resulting DSO as gauche--uvector.so, consistent
	  to other extension modules.  IMPORTANT: This means we no longer
	  allow other extension modules to link with -lgauche-uvector.
	  We used to need it for extension modules to access uvector features,
	  but now the basic uvector support is in the core and we no longer
	  need it.  Besides, building one SO for both dlopen and -l linking
	  doesn't work on OSX.  Some legacy extension modules may still
	  referring -lgauche-uvector; they should be updated.
	  Since gauche--uvector.so is now purely accessed through Scheme,
	  it doesn't make sense to provide full line of C API; so some of
	  them are folded into define-cproc.
	  The uvector reader is moved to src/vector.c as well, so that
	  reading uvector literals won't cause autoloading gauche.uvector.

2014-07-31  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/uvlib.stub.tmpl (string->[us]32vector!): Added.

	* src/load.c, src/gauche/load.h: Turn dlobj record to ScmObj.  This
	  is for better introspection, and for preparation of exposing dlopen
	  to Scheme.

2014-07-29  Shiro Kawai  <shiro@acm.org>

	* src/srfis.scm: Consolidate info of supporting srfis in one file,
	  to generate files that need to reflect the info.
	* ext/srfi/generate-srfi.scm: Superseded by src/srfis.scm

2014-07-28  Shiro Kawai  <shiro@acm.org>

	* src/libmisc.scm (box etc.): srfi-111 support.  This is merely to
	  expose internal box object to the Scheme world.  We still use
	  srfi-111 namespace, though.
	* src/box.c (box_compare): compare contents.

2014-07-27  Shiro Kawai  <shiro@acm.org>

	* src/libomega.scm, src/load.c: Mark all built-in modules as provided,
	  so that (use <built-in-module>) won't complain.  This used to be
	  done in load.c, but we kept the module list separately which had
	  gone out-of-sync.

2014-07-24  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/configure.scm (parse-command-line-arguments): Fix
	  handling --enable-*, --disable-*, --with-* and --without-* options.

2014-07-23  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/base.scm: Split gauche.base form r7rs.scm, for it may
	  be used from Gauche code by (use gauche.base); see the document
	  for the use case.

2014-07-22  Shiro Kawai  <shiro@acm.org>

	* src/module.c (search_binding): Fixed a bug - when a module exports
	  an inherited binding with renaming, it wasn't searched properly.
	  Another bug fix - if phantom binding is exported with renaming,
	  and then renamed on import, this bug sufraces.

2014-07-20  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/configure (cf-make-gpd): A cf api to generate gpd file.
	  (cf-echo): Fix a bug that drops last two arg if the output is not
	  redirected (thanks to KOGURO Naoki).  Also made it appear in
	  config.log.
	* ext/template.configure: Added call to cf-make-gpd.

	* ext/template.Makefile.in (maintainer-clean),
	  src/gauche-package.in (generate): Do not delete
	  configure in maintainer-clean if we create skeletons to use
	  gauche.configure.

2014-07-19  Shiro Kawai  <shiro@acm.org>

	* release 0.9.4

	* lib/gauche/configure.scm (check-for-program): Fixed a bug that refer
	  to the variable 'paths' that's being defined, i.e.
	  (define paths (... paths ...)).

2014-07-18  Shiro Kawai  <shiro@acm.org>

	* src/libio.scm, lib/r7rs.scm (read-string): Support R7RS-compatible
	  read-string in the core.
	* ext/text/parse.scm (read-string): Redefined on top of built-in
	  read-string.

2014-07-16  Shiro Kawai  <shiro@acm.org>

	* src/macro.c (compile_rules): Allow syntax-rules to have no rules,
	  as the spec permits.

	* lib/scheme/*.scm: Placed dummy modules to use R7RS stdlibs
	  from Gauche

2014-07-14  Shiro Kawai  <shiro@acm.org>

	* lib/r7rs.scm, src/libvec.scm: Moved vector->string and string->vector
	  from r7rs to core, for less confusion.

2014-06-25  Shiro Kawai  <shiro@acm.org>

	* src/read.c (read_internal): In strict-r7 reader mode, read :foo
	  as a symbol.  This would be unnecessary once we make keywords
	  a subtype of symbols, but for now, it would help using third-party
	  r7rs libraries.

2014-06-22  Shiro Kawai  <shiro@acm.org>

	* ext/windows/console.stub (sys-fill-console-output-attribute)
	  (sys-fill-console-ouptut-character, sys-flush-console-input-buffer):
	  Added.
	  (<win:input-record>): Made key.virtural-key-code return
	  VirtualKeyCode, and let key.virtual-scan-code return
	  VirtualScanCode.
	  (sys-read-console-input): Fix.
	  Patch from https://github.com/Hamayama.

2014-06-21  Shiro Kawai  <shiro@acm.org>

	* src/read.c: Split reader-lexical-mode from <read-context> and made
	  it an individual parameter.  The mode can be changed during Scm_Read()
	  if we encoundter #!r7rs etc., so it doesn't work to carry the info
	  inside read-context.
	* src/load.c, src/libio.scm: Changed accordingly.

2014-06-20  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-42.scm: Incorporated bug fixes in srfi-42 reference
	  implementation.

2014-06-18  Shiro Kawai  <shiro@acm.org>

	* gc/*: Updated to gc-7.4.2 (libatomic_ops stays 7.4.2)

2014-06-05  Shiro Kawai  <shiro@acm.org>

	* src/number.c (Scm_GetDouble): exact->inexact conversion didn't
	  work in denormalized range.
	  (Scm_EncodeFlonum): Added as an inverse of Scm_DecodeFlonum;
	  not made public in the header yet.

2014-05-25  Shiro Kawai  <shiro@acm.org>

	* configure.ac: Add -static-libgcc flag when building DLLs on MinGW,
	  in ordre to avoid dependency on libgcc_s_dw2-1.dll.

2014-05-21  Shiro Kawai  <shiro@acm.org>

	* gc/*: Updated to gc-7.4.0 and libatomic_ops-7.4.2

2014-05-16  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h, src/string.c (SCM_STRDUP, SCM_STRDUP_PARTIAL): Added
	  these, for I felt I wrote SCM_MALLOC+memcpy too many times.
	* src/dl_win.c, src/port.c, src/system.c: Changed accordingly.

2014-05-15  Shiro Kawai  <shiro@acm.org>

	* src/system.c (Scm_GetEnv): Provide a wrapper so that we can mutex
	  getenv/putenv properly.

2014-05-09  Shiro Kawai  <shiro@acm.org>

	* src/win-compat.c (mbs2wcs, wcs2mbs): Allow libgauche version of
	  those functions to choose allocator; we need to malloc (instead
	  of GC_alloc) if we pass the resulting string to OS.

2014-05-07  Shiro Kawai  <shiro@acm.org>

	* src/main.c (main): Changed handling of command-line args on Windows
	  so that it can get wide characters properly.   Based on a patch
	  from SAITO Atsushi.

2014-05-05  Shiro Kawai  <shiro@acm.org>

	* ext/text/unicode.scm (%foldcase): Fixed string-foldcase behavior.
	  See the discussion in R7RS mailing list:
	  http://lists.scheme-reports.org/pipermail/scheme-reports/2014-May/004055.html
	* test/r7rs-tests.scm: The test for string-foldcase was incorrect.
	  Fixed along above.

2014-05-01  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/uvlib.stub.tmpl (u8vector->string, s8vector->string):
	  Avoid copying the content when the source vector is immutable and
	  certain conditions are met.  See the comment in bytevector->string
	  for the details.

2014-04-29  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/uvlib.stub.tmpl (string->u8vector, string->s8vector):
	  Added optional immutable? flag; if #t, the result vector becomes
	  immutable, and we avoid copying the string body.

2014-04-28  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/common-macros.scm (unwind-protect): Fixed the bug that
	  cleanup clause wasn't called when applications exit within the body.

2014-04-27  Shiro Kawai  <shiro@acm.org>

	* src/libio.scm (close-port, call-with-port): Support these r7rs procs
	  natively.  They're useful.  (Actually, we didn't have call-with-port
	  even in r7rs module; it was an oversight.)

2014-04-17  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/json.scm (%unicode, print-string): Properly support
	  unicode surrogate pairs.

2014-04-12  Shiro Kawai  <shiro@acm.org>

	* src/write.c (Scm_Write): Fixed a race condition that, while
	  one thread was in circular-safe writing mode, another thread's
	  call to Scm_Write mistook that it was within recursive Scm_Write
	  call.

2014-04-09  Shiro Kawai  <shiro@acm.org>

	* configure.ac: Add -DUNICODE when compiling MinGW with utf-8 encoding.
	  src/genconfig.in, src/gauche/win-compat.h, src/port.c, src/system.c,
	  src/win-compat.c: Fixes to enable mbs2wcs/wcs2mbs stuff and *W
	  windows API to deal with unicode pathnames.  Based on a patch
	  by SAITO Atsushi.

2014-04-05  Shiro Kawai  <shiro@acm.org>

	* src/compare.c, src/gauche/compare.h, src/libcmp.scm: Start
	  adding comparator (srfi-114) experimentally.

2014-04-04  Shiro Kawai  <shiro@acm.org>

	* src/libbool.scm (eq-compare): Added.

2014-03-20  Shiro Kawai  <shiro@acm.org>

	* lib/www/css.scm: Added.  Still experimental.

2014-03-06  Shiro Kawai  <shiro@acm.org>

	* ext/tls/tls.c, ext/tls/tls.scm (tls-destroy): Added explicit
	  destruction of TLS context.  An axtls context grabs an fd for
	  /dev/urandom, and sometimes GC isn't triggered often enough
	  before unfinalized contexts use up all fds.
	* lib/rfc/http.scm (shutdown-secure-agent): Destroy TLS context.

2014-03-01  Shiro Kawai  <shiro@acm.org>

	* src/system.c (Scm_ClockGetTimeMonotonic, Scm_ClockGetResMonotonic),
	src/libsys.scm (sys-clock-gettime-monotonic, sys-clock-getres-monotonic):
	  Added monotonic time clock to be used for TAI time.  If the system
	  doesn't provide clock_gettime()/clock_getres(), these API return
	  special values, so that the caller can make up whatever fallback
	  values suitable for their needs; the gist is that it's often easier
	  to implement fallback in Scheme.

2014-02-27  Shiro Kawai  <shiro@acm.org>

	* src/libfmt.scm (with-format-params): Fixed a bug in 'v' formatter
	  parameter handling; we shouldn't set! to the variable for the
	  parameter, since a formatter can be called multiple times and
	  every time we should fetch from the arglist.

2014-02-22  Shiro Kawai  <shiro@acm.org>

	* lib/r7rs.scm (gauche.base): Added gauche.base module to allow
	  R7RS programs to access Gauche's builtin bindings by
	  (import (gauche base)).  See the comment for the reason we don't
	  simply export bindings from the gauche module.

2014-02-20  Shiro Kawai  <shiro@acm.org>

	* src/libeval.scm (%repl-print): Changed to use write (r7rs write,
	  which doesn't show shared structure but does show cycles) in the
	  default REPL.  Showing shared structure by default has been a source
	  of confision for newcomers; now we can avoid that, yet we can
	  retain circular-safety.

2014-02-13  Shiro Kawai  <shiro@acm.org>

	* ext/peg/peg.scm: Consolidated $<< and $fmap and renamed to $lift.
	  Allow $->rope, $->string, $->symbol to take multiple parsers.
	* lib/rfc/json.scm: Changed accordingly.

2014-02-11  Shiro Kawai  <shiro@acm.org>

	* src/gauche-package.in: Switched using Gauche-based configure
	  script by default in 'gauche-package generate',
	  unless --autoconf option is given.

	* lib/gauche/configure.scm: Added cf-arg-with, cf-arg-enable, and
	  cf-help-string.  Put more stuff in usage.

	* src/libmisc.scm (warn), src/error.c (Scm_FWarn): Rewrote 'warn'
	  in Scheme, avoiding calling obsoleted Scm_Format.  Also obsoleted
	  Scm_FWarn.

2014-02-10  Shiro Kawai  <shiro@acm.org>

	* src/libmod.scm (import): Added user#import that dispatches either
	  gauche#import or r7rs#import, to support r7rs script natively.

2014-02-07  Shiro Kawai  <shiro@acm.org>

	* src/number.c (Scm_NumCmp): Fixed Scm_NumCmp when comparing a flonum
	  and an exact bignum or ratnum.  In that case we need to convert
	  the flonum to exact (as opposed to converting exact one to inexact),
	  for the latter would break transitivity of '='.

2014-02-06  Shiro Kawai  <shiro@acm.org>

	* src/core.c (init_cond_features): Added r7rs feature identifier.

	* src/write.c, src/libio.scm: Changed the default behavior of
	  'Scm_Write' and 'write' alinged to r7rs, that is, it detects
	  circular structures and use datum labels.  'Display' also does
	  2-pass circular detection.   The original 'write' behavior
	  is realized by 'write-simple'.  SRFI-38 behavior is still
	  realized by write/ss and write*, which are merely alises of
	  r7rs 'write-shared'.

	  The 'mode' of Scm_Write and ScmWriteContext is slightly modified
	  to adopt this change; now, SCM_WRITE_WRITE works as the updated
	  'write' (circular-safe), and SCM_WRITE_SHARED works as 'write-shared'.
	  To get 'write-simple' behavior you have to specify SCM_WRITE_SIMPLE.

	  To distinguish circular-only and shared mode, we have to
	  add that info to the port flags as well, for the write context
	  info isn't passed to the user-defined write-object.  SCM_PORT_WRITESS
	  flag is used for the purpose (the meaning of flag has been
	  changed).

2014-02-05  Shiro Kawai  <shiro@acm.org>

	* src/read.c (char_word_constituent): Refined checking symbol
	  constituent characters beyond ASCII range, following R6RS.
	  For example, \u3000 followed by 'a' used to be a part of
	  symbol, but now it correctly delimits a symbol 'a'.

2014-02-04  Shiro Kawai  <shiro@acm.org>

	* src/write.c, src/libfmt.scm (format): Rewrote format in Scheme.
	  NB: We might reconsider the semantics of format/ss; the output
	  of format is usually unreadable by 'read', so using srfi-38
	  notation isn't really a point.  The point of format/ss is to
	  guarantee that it returns even if the arg has circular structure.

2014-02-02  Shiro Kawai  <shiro@acm.org>

	* src/port.c, src/libio.scm (with-port-locking): Moved the definition
	  from C to Scheme.

	* src/write.c, src/port.c, src/portapi.c, src/read.c: Another step
	  to improve the writer.  Now we don't create a dummy 'walker' port,
	  for merely marking the port->flags suffice.  Also placed a cleanup
	  procedure to remove transient stuff from the port.

2014-02-01  Shiro Kawai  <shiro@acm.org>

	* src/boolean.c (Scm_EqualP), src/libbool.scm (%interleave-equal?):
	  Made equal? to handle cyclic structures, as specified in R[67]RS.
	  For the time being, we don't consider cycles involving user-defined
	  objects and object-equal? method.

	* src/vminsn.scm (LREF-UNBOX): Added.

2014-01-31  Shiro Kawai  <shiro@acm.org>

	* src/code.c, src/vminsn.scm, src/geninsn, lib/gauche/vm/insn-core.scm:
	  The instruction combiner now allows preceding specialized LREFs
	  such as LREF0 or LREF21 to be combined into generic LREF-STNG(n,m)
	  (instead of having LREF0-STNG, LREF21-STNG, etc. separately).
	  Such combined insn is indicated by :fold-lref flag.

2014-01-30  Shiro Kawai  <shiro@acm.org>

	* src/vm.c, src/vminsn.scm (UNBOX), src/compile.scm: Finishing explicit
	  boxing/unboxing.  NB: Although this fix makes the compile emit
	  necessary BOX/UNBOX instructions for set!-table lvars, we do not
	  drop implicit unboxing feature yet, since 0.9.4 compiler and runtime
	  are compiled by 0.9.3.3 compiler that doesn't emit UNBOX insns.
	  See the comment about auto-unboxing in vm.c; we'll remove
	  auto-unboxing stuff once we release 0.9.4.
	* test-0.9.4.sh: A temporary shell script to test BOX/UNBOX stuff.
	  Ordinary test run doesn't test this, since 0.9.4 build still use
	  implicit unboxing.  This shell script build 0.9.4, then build it
	  again _using_0.9.4_compiler_, so that we can test BOX/UNBOX thingy.
	  We'll remove this script once we release 0.9.4.

2014-01-28  Shiro Kawai  <shiro@acm.org>

	* src/vminsn.scm (BOX): Changed to be used to box procedure parameters.
	  (ENV-SET): New instruction to initialize env slot (used with
	  LOCAL-ENV-CLOSURES).	 We used to use LSET, but we'll box all
	  set!-able lvars and LSET will do set-box! instead of directly setting
	  env slot.
	* src/compile.scm: Changed to emit ENV-SET and new BOX insn.

	* src/geninsn, lib/gauche/vm/insn-core.scm: Allow insn definitions
	  to have alternative num-params, so that we can build Gauche
	  using the previous version of Gauche even if we change the
	  num-params of insns.

2014-01-27  Shiro Kawai  <shiro@acm.org>

	* lib/www/cgi.scm (read-complete-block): Fixed a bug in the case
	  when content-length is zero.

2014-01-19  Shiro Kawai  <shiro@acm.org>

	* src/gauche/vm.h (ScmContFrame): Added a slot to save current PC.
	  This isn't needed for execution, but useful to get a sensible
	  stack trace.
	  In a sense, this info records "who created this continuation?".
	  A concern is the impact on the performance, for we have one extra word
	  to push for each continuation.  Let's see how it goes.

2014-01-12  Shiro Kawai  <shiro@acm.org>

	* src/write.c: Rewriting to clean up the control flow regarding recursive
	  situation.  The recursive context should be solely held in the port,
	  not in the write context.  The slot name of the port is renamed
	  from 'data' to 'recursiveContext' to indicate the role.
	  Obsoleted Scm_WriteCircular, for it can be handled by either
	  Scm_Write or Scm_WriteLimited.

2014-01-07  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm: Bind auxiliary syntactic keywords to a dummy
	  expander; it'd be easier to work with modules if we have toplevel
	  bindins instead of leaving them undefined.

2013-12-30  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/test.scm (closure-grefs): Include PUSH-GREF-CALL
	  and PUSH-GREF-TAIL-CALL insns to check arity mismatch.

2013-12-24  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (import): Show a descriptive error message when
	  Gauche's import is called as if R7RS import.

2013-12-22  Shiro Kawai  <shiro@acm.org>

	* src/genconfig.in: Add site-specific directories to --incdirs and
	  --archdirs options.  Some extention libraries (e.g. Gauche-gl)
	  installs header files and DSOs there, and libraries depending
	  on them need to see them at compile time.

2013-12-20  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/dictionary.scm (make-bimap, bimap-put!): Allow bimap
	  to have the default on-conflict setting.

2013-12-19  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-106.scm (*ai-v4mapped*): Workaround for the platforms
	  where AI_V4MAPPED may not be defined even if ipv6 is provided.

2013-12-13  Shiro Kawai  <shiro@acm.org>

	* src/libnum.scm (sqrt): Improved performance.  We did extra sqrt
	  calculation when the arg was exact but not a square of exact number.

2013-11-27  Shiro Kawai  <shiro@acm.org>

	* lib/www/cgi.scm (cgi-get-query): Fixed a bug that caused the
	  procedure not to retrieve the entire POST request body, if
	  the input port wasn't fully buffered.

2013-11-26  Shiro Kawai  <shiro@acm.org>

	* libsrc/srfi-13.scm (string-filter, string-delete): We noticed that
	  we got the argument order of these wrong for long time.  The order
	  is corrected, but to support code written for the old order, we
	  permit the caller to use the old API as well.

2013-11-24  Shiro Kawai  <shiro@acm.org>

	* libsrc/text/tr.scm (build-char-array): Fixed a bug that prevented
	  having '\' in spec.

2013-11-22  Shiro Kawai  <shiro@acm.org>

	* src/read.c, src/libstr.scm, lib/gauche/interpolate.scm:
	  Enabled the new string interpolation syntax #"... ~expr ...".
	  Still needs appropriate check according to the reader mode.

2013-11-19  Shiro Kawai  <shiro@acm.org>

	* src/libdict.scm (make-hash-table): Experimentally added
	  optional 'init-size' argument.  We might change the API later,
	  so this is unofficial.

2013-11-13  Shiro Kawai  <shiro@acm.org>

	* ext/text/unicode.scm (%foldcase): Fixed handling of final sigma---
	  we need the same treatment as string-downcase.

2013-11-12  Shiro Kawai  <shiro@acm.org>

	* test/r7rs.scm, test/r7rs-test.scm: Added r7rs test taken from Chibi.
	  Run r7rs.scm, which is a Gauche wrapper to execute r7rs-test.scm.
	  Not yet added to TESTS, for we have a few missing features.

2013-11-10  Shiro Kawai  <shiro@acm.org>

	* src/regexp.c (rex_rec): Fixed submatch capture failure. Patch
	  from leque.

2013-11-08  Shiro Kawai <shiro@acm.org>

	* src/port.c, src/portapi.c (Scm_PortAttrGet etc.): Port attributes.
	  This is to generalize accessing various information on ports,
	  and eventually allow ports to abstract broader external
	  resources (e.g. accessing httpd via ports).

2013-11-07  Shiro Kawai  <shiro@acm.org>

	* src/char.c (Scm_DigitToInt, Scm_IntToDigit): More generalized
	  treatment of non-ASCII digit characters.  THIS CHANGE BREAKS ABI
	  COMPATIBILITY.  We think it's better to make it clean, hoping
	  no external modules rely on this API.
	* src/libchar.scm (digit->integer, integer->digit): Extended
	  accordingly.  In Scheme level it's backward compatibile.

2013-11-02  Shiro Kawai  <shiro@acm.org>

	* src/gauche/priv/portP.h: Splitted internal stuff from port.h.

2013-10-31  Shiro Kawai  <shiro@acm.org>

	* lib/data/random.scm (sequences-of): Added.

2013-10-28  Shiro Kawai  <shiro@acm.org>

	* src/write.c, src/class.c, src/gauche/priv/writerP.h:
	  Made ScmWriteContext a Scheme object.  Another step towards
	  rewriting 'write' subsystem.

2013-10-26  Shiro Kawai  <shiro@acm.org>

	* src/write.c (write_walk), src/libio.scm (%write-walk-rec): A
	  step towards rewriting 'write' subsystem - rewrote the walk pass
	  in Scheme.

2013-10-25  Shiro Kawai  <shiro@acm.org>

	* src/gauche/system.h, src/signal.c: Changed handling of SIGPIPE.
	  If Gauche is asked to take care of SIGPIPE, we do nothing for
	  it by default.  The program can handle the situation by
	  capturing EPIPE <system-error> anyway.
	* src/gauche/port.h, src/libio.scm, src/port.c, src/portapi.c:
	  Added an internal flag that can terminate the process if
	  writing raised EPIPE.  By default, only stdout and stderr have the
	  flag set.  This makes casual tools that write to stdout to be piped
	  together behave the similar way as other Unix commands, while
	  other use of pipes (e.g. sockets) won't cause annoying termination
	  via SIGPIPE.
	  NB: We still need an API to change this flag.
	  NB: Code that has been accessed ScmBufferedPort.mode needs to be
	  changed to use the new API Scm_GetPortBufferingMode etc.
	  (Scm_KeywordToBufferingMode, Scm_GetPortBufferingModeAsKeyword):
	  More descriptive API name than Scm_BufferingMode and
	  Scm_GetBufferingMode.  The latter will be removed after 1.0 release.

2013-10-20  Shiro Kawai  <shiro@acm.org>

	* src/regexp.c (rc1_parse, rc3_rec): Fixed a bug handling
	  (?(condition)yes-pattern).  It should take into account of
	  empty no-pattern, e.g. (?(condition)yes-pattern|), which makes
	  the pattern always match if condition doesn't hold.
	  Patch from leque.
	* lib/gauche/regexp.scm (regexp-unparse): Ditto.

2013-10-13  Shiro Kawai  <shiro@acm.org>

	* lib/text/diff.scm (diff): Bug fix: 'Equal' keyword argument was
	  ignored.  Patch from Rui Ueyama.

2013-10-12  Shiro Kawai  <shiro@acm.org>

	* src/number.c (Scm_PrintNumber, Scm_PrintDouble): Changed to return
	  # of characters written.
	* src/write.c (write_char): Use numeric notation for unprintable
	  characters.  NB: Currently, we print with internal encoding,
	  which is incompatible to R7RS if Gauche is compiled with euc-jp
	  or sjis.  We eventually need some writer-mode switch.

2013-10-10  Shiro Kawai  <shiro@acm.org>

	* src/read.c, src/gauche/reader.h, src/gauche/priv/readerP.h:
	  Moved ScmReadContext implementation delcs into a private header.
	  Added public API to modify reader lexical compatibility mode.
	  Use parameter to keep the default read context.
	  Integrate WARN_LEGACY flag to read context instead of vm runtime flag.
	* src/libio.scm: Added parameter-like procedure read-lexical-mode
	  and supported #!gauche-legacy and #!r7rs switch.

2013-10-09  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/priv/*.h: Moved some private header files into separate
	  directory. builtin-syms.h is now private---the index changes between
	  versions, so external binaries shouldn't rely on that.
	  We'll go through other header files and split private parts into
	  priv/*P.h.

2013-10-06  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/sortutil.scm, lib/gauche/generic-sortutil.scm:
	  Adapted to SRFI-95, and also handles generic <sequence>.

2013-10-04  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/configure.scm: Added support for directory stuff
	  (srcdir etc.), and added tests.

2013-09-28  Shiro Kawai  <shiro@acm.org>

	* src/read.c: Issue warning when we see legacy \xNN hex-digit escape,
	  if SCM_READER_WARN_LEGACY runtime flag is set.  We'll also use
	  this flag for some other planned syntax changes (e.g. string
	  interpolation syntax).
	* src/main.c: Added -fwarn-legacy-syntax option that turns on the
	  SCM_READER_WARN_LEGACY flag.  For the time being we treat it
	  unofficial, let's see how useful it is.

2013-09-25  Shiro Kawai  <shiro@acm.org>

	* src/module.c (search_binding): Fixed a bug in transitive export; the
	  bug prevented the 'only' modifier work on transitively exported
	  symbols.

	* src/compile.scm (pass1/body-rec): Support internal syntax definitions.

2013-09-24  Shiro Kawai  <shiro@acm.org>

	* src/gauche/exception.h, src/error.c: Changed the role of 'message'
	  slot in ScmMessageCondition, to enable R7RS error-object-message
	  and error-object-irritants with keeping ABI compatibility.
	  Scheme-level interface is compatibile, but C code accessing
	  message field directly would get something a bit different from
	  what it got in previous versions.  Those code should use
	  Scm_ConditionMessage() API instead of direct field access.

2013-09-23  Shiro Kawai  <shiro@acm.org>

	* src/libsys.scm (sys-errno->symbol, sys-symbol->errno): Mapping
	  between integer error numbers and their symbolic names.

2013-09-22  Shiro Kawai  <shiro@acm.org>

	* src/read.c (Scm_ReadXdigitsFromString, Scm_ReadXdigitsFromPort):
	  Rewritten to handle \x, \u and \U hex-digit escapes consistently,
	  with the support of bothnew R7RS-style syntax and legacy syntax.
	  They used to be in char.c, but moved to read.c.  The API has been
	  changed (INCOMPATIBLE CHANGE).

2013-09-18  Shiro Kawai  <shiro@acm.org>

	* src/read.c (read_string), src/string.c (string_putc): Switched to
	  R7RS compatible hex-escape syntax (\xNNN;).  Reading the legacy
	  syntax (without ';' terminator) is supported by default, as far as
	  the input can't be interpreted as R7RS syntax.
	  For output, currently we only support R7RS style.  Might add
	  compatibility mode if needed.

	* src/string.c (Scm_DStringPeek): Added.  Useful to avoid allocation
	  when we use dstr just as a temporary variable-sized buffer.

2013-09-17  Shiro Kawai  <shiro@acm.org>

	* src/gen-unicode.scm: Added code generator for unicode numeric value
	  attribute.
	* src/char_attr.c: Regenerated.
	* src/char.c (Scm_DigitToInt): Handles all Nd characters.

2013-09-16  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/dictionary.scm (dict->alist): Provide fallback methods
	  using dict-fold.
	  (<stacked-map>): Added stacked map experimentally.

2013-09-12  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/numerical.scm (real->rational): Fixed a bug in refine/c
	  that doesn't find simplest rational when two continued fraction has
	  (x0 ... xn xn+1 ...) and (y0 ... yn), where xi = yi (0 <= i <= n-1)
	  and |xn - yn| > 1.  Original code just picked the shorter series,
	  but picking min(xn + 1, yn) makes the result simpler.

2013-09-11  Shiro Kawai  <shiro@acm.org>

	* src/libstr.scm (string=? etc): Support more than two arguments.
	* ext/text/unicode.scm (string-ci=? etc): Provide R7RS compatible
	  full-string case folded comparison.
	* lib/r7rs.scm (string-ci=? etc): Use text.unicode version instead of
	  built-in version.

2013-09-10  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/defvalues.scm (define-values): Support <formals> in
	  the variable list position, as specified in r7rs.  Also make it
	  possible to use define-values mixed in internal defines.

	* src/macro.c (match_synrule): Supports trailing items after ellipsis,
	  according to r7rs (e.g. (a b ... c) etc.)

2013-09-08  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/http.scm (http-request): Fixed broken behavior of redirect
	  handling.  The body of 3xx request shouldn't be retrieved with
	  caller-supplied receiver.

2013-09-02  Shiro Kawai  <shiro@acm.org>

	* src/macro.c (Scm_CompileSyntaxRules),
	  src/compile.scm (pass1/syntax-rules): Support alternative ellipsis
	  as in R7RS.

2013-09-01  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (define-builtin-inliner-/, pass2/const-numop1)
	  (pass2/const-numop2): Avoid constant-folding for exact div-by-zero
	  case.  We should leave it to be handled at runtime.

2013-08-26  Shiro Kawai  <shiro@acm.org>

	* lib/www/cgi.scm (cgi-parse-parameters): Fixed a bug when multiple
	  values with the same parameter name are passed via
	  multipart/form-data.

	* lib/rfc/uri.scm (uri-compose-data, uri-decompose-data): Added
	  'data:' uri scheme support.

2013-08-22  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/uri.scm (uri-encode): Use uppercase for percent-encoding
	  of special chars, as recommended in RFC3986.

2013-08-20  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-106.scm, doc/modsrfi.texi: Changed according to final
	  spec, and documented.

2013-08-19  Shiro Kawai  <shiro@acm.org>

	* lib/data/random.scm: Fixed some bugs.
	* doc/modutil.texi: Document data.random.  Now it's official.

2013-08-16  Shiro Kawai  <shiro@acm.org>

	* src/vm.c, src/vminsn.c: Some runtime optimizations to improve
	  tight-loop routines (sequence of vm instruction loops that doesn't
	  call extra functions much).  We reduced the check of attentionRequest,
	  and detect value-yielding insn followed by PUSH.  See the comment
	  near NEXT_PUSHCHECK in vm.c for the details.

2013-08-14  Shiro Kawai  <shiro@acm.org>

	* src/libnum.scm (expt): Try to return an exact result when the power
	  is exact rational and result can be exact.
	  E.g. (expt 8/125 2/3) => 4/25.

2013-08-13  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/configure.scm: Added.  Not completed yet.

2013-08-11  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/uvutil.scm (u8vector-append etc): Added.

2013-08-10  Shiro Kawai  <shiro@acm.org>

	* src/module.c (Scm_FindBinding): Support transitive export, i.e.
	  allow exporting symbols that are imported or inherited, without
	  explicitly defining it in the module.
	* libsrc/srfi-1.scm, libsrc/srfi-13.scm, lib/srfi-14.scm, lib/srfi-60.scm
	  Changed accordingly.

2013-08-08  Shiro Kawai  <shiro@acm.org>

	* lib/file/filter.scm (file-filter): Fixed a bug that the outputfile
	  is not created when :temporary-file #t :leave-unchanged #t.

	* libsrc/text/tr.scm (complement-char-array): Fixed a bug that
	  made complement yield incorrect set when from-str isn't in
	  increasing order of character codes.

2013-08-05  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/libutil.scm (library-has-module?): Quick fix to recognize
	  R7RS define-library form as well.  The 'library' clause of cond-expand
	  relies on this procedure (via library-exists?) so it's critical to
	  handle R7RS here.

2013-08-03  Shiro Kawai  <shiro@acm.org>

	* src/module.c, src/libmod.scm: Updated the list of builtin modules.
	* ext/srfi/generate-srfi.scm: Autogenerate srfi/N.scm for supported
	  srfi-N to make (import (srfi N)) work in r7rs mode.

2013-08-02  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-106.scm: Added.  Since srfi-106 is still a draft, the API
	  may be changed according to its final version.

2013-08-01  Shiro Kawai  <shiro@acm.org>

	* src/core.c: Defined some feature identifiers specified in R7RS
	  Appendix B. (Not exhaustive yet).

2013-07-30  Shiro Kawai  <shiro@acm.org>

	* src/main.c, lib/r7rs.scm: In R7RS toplevel mode, set the default
	  environment to #<module r7rs.user> instead of #<module user>.
	  Keeping #<module user> able to operate in Gauche mode is convenient
	  to evaluate .gaucherc in #<module user> regardless of whether Gauche
	  is invoked in -r7 or not.
	  We also define a variable *r7rs-mode* in #<module user> if invoked
	  with -r7, so that gauche.interactive can do extra set up if necessary.
	* lib/gauche/interactive.scm: Modified accordingly.

2013-07-28  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (throw_continuation): Fixed a bug that failed to save
	  living continuations on stack when a ghost continuation is invoked,
	  which caused the conitnuation frames to be clobbered.
	  See the comment for the details.

2013-07-26  Shiro Kawai  <shiro@acm.org>

	* src/number.c (Scm_SinPi, Scm_CosPi, Scm_TanPi): EXPERIMENTAL:
	  Added sinpi(x) = sin(x*pi) etc. to allow avoiding errors in
	  certain cases.  From Scheme they're %sinpi etc.  Not yet documented.
	  See if they're worth having.
	* src/number.c (scm_expt): Use Scm_SinPi etc. so that
	  (expt <negative-integer> n+1/2) can return pure imaginary number.

2013-07-18  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/base64.scm (base64-decode, base64-encode): Support url-safe
	  keyword argument to encode/decode url-safe version of characters.
	  Patch from Rui Ueyama.

2013-07-14  Shiro Kawai  <shiro@acm.org>

	* src/read.c: Support R7RS-style inline hex escape in symbol literals.
	* src/char.c: Changed Scm_ReadXdigitsFromPort to recognize delimiter
	  of inline-hex escape.  NB: Technically this changes ABI, but
	  the function isn't intended for public use and I doubt it's
	  used by extension packages.

2013-07-06  Shiro Kawai  <shiro@acm.org>

	* src/gauche-init.scm: Retire gauche-init.scm.  We can already
	  precompile Scheme initialization routine, so we no longer need to
	  keep it.  And it is inconvenient for embedding use.
	  Various files are modified to remove reference to gauche-init.scm.

	* src/genconfig.in, src/paths.c, src/Makefile.in: No longer generate
	  gauche/arch.h; having architecture-dependent header file is just
	  an annoyance.  Besides we don't really need to make the info in the
	  header file since those info can be retrieved through API at
	  runtime.  This change removes preprocessor symbols GAUCHE_ARCH,
	  GAUCHE_LIB_DIR, GAUCHE_ARCH_DIR, GAUCHE_SITE_LIB_DIR and
	  GAUCHE_SITE_ARCH_DIR.

2013-07-05  Shiro Kawai  <shiro@acm.org>

	* ext/tls: Updated to axTLS 1.4.9

2013-07-04  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm: Support letrec*.

2013-07-03  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/common-macros.scm (dotimes, dolist): Support omission
	  of 'variable'.

2013-07-02  Shiro Kawai  <shiro@acm.org>

	* src/libnum.scm (%log): Handle input even if it can't fit in
	  IEEE double e.g. (log (expt 2 2048)) => 616.5094311198334

2013-06-30  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/stub.scm (define-cptr): Experimentally added
	  stub form to declare a foreign pointer class using ScmForeignPointer.

2013-06-28  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/vecutil.scm: Added.  Supports R7RS vector-map and
	  vector-for-each.  Also includes vector-tabulate.
	* src/autoloads.scm: Autoload gauche.vecutil.
	* lib/r7rs.scm: Changed accordingly.

	* ext/srfi/srfi-43.scm: Define vector-map etc. as an alias of
	  vector-map-with-index etc.

2013-06-26  Shiro Kawai  <shiro@acm.org>

	* ext/text/unicode.scm (utf8->string, string->utf8): Added these
	  r7rs procedures here.
	* lib/r7rs.scm: Use above procedures.

2013-06-25  Shiro Kawai  <shiro@acm.org>

	* ext/dbm/dbm.ac: Added --with-dbm=DBM,... configure option, to
	  exclude some dbm libraries that would be compiled by default.

2013-06-22  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass2/intermediate-lref-removal): Fixed a bug
	  that does incorrect transformation under existence of side-effects.

2013-06-19  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-0.scm (cond-expand): Support R7RS 'library' feature test.
	* lib/r7rs.scm, lib/gauche/libutil.scm: Moded library-name->module-name
	  from r7rs to gauche.libutil, for it is needed by srfi-0.

2013-06-15  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass1/open-include-file): Searches also
	  *load-path* for specified file.  We now use find-load-file,
	  so the load-path-hook stuff can also work.

	* src/liblist.scm, libsrc/srfi-1.scm (concatenate, concatenate!,
	  append-reverse, append-reverse!, append-map, append-map!):
	  Further migration of srfi-1 procedures into core.
	* lib/gauche/parseopt.scm: Removed dependency on srfi-1.

2013-06-14  Shiro Kawai  <shiro@acm.org>

	* src/liblist.scm, libsrc/srfi-1.scm (count, reduce, reduce-right,
	  partition): Move from srfi-1.scm to liblist.scm, so that
	  gauche.procedure won't depend on srfi-1.
	* lib/gauche/procedure.scm: Removed dependency on srfi-1.

2013-06-12  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm, src/libobj.scm, src/autoloads.scm,
	  lib/gauche/procedure.scm, lib/gauche/experimental/app.scm,
	  lib/gauche/cgen/precomp.scm: Flushed suspended changes and temporary
	  kludges to build 0.9.3 gauche by pre-0.9.2 gauche.

2013-06-10  Shiro Kawai  <shiro@acm.org>

	* src/code.scm, src/libcode.scm (compiled-code-copy!): Added.
	* lib/gauche/cgen/precomp.scm, lib/gauche/cgen/optimizer.scm:
	  Experimentally added extra optimization at precompile time
	  (it's off by default now).

2013-06-09  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/vm/insn-core.scm (vm-insn-size): Added.

	* ext/util/queue.scm (%mtqueue-overflow?): Bug fix from @tabe via
	  pullreq.  It didn't return boolean value properly.

2013-06-07  Shiro Kawai  <shiro@acm.org>

	* src/libcode.scm, src/compile.scm: Splitted VM code generation API
	  into gauche.vm.code module.

	* lib/gauche/cgen/precomp.scm (compile-toplevel-form): Execute export
	  operation during initialization when the compilation does not
	  produce *.sci file.

2013-06-05  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass5/if-final): Micro-optimization to eliminate
	  one JUMP instruction in certain cases.

	* src/libio.scm (eof-object): Mark it :constant, so that the calls
	  would be inlined.

2013-06-01  Shiro Kawai  <shiro@acm.org>

	* src/regexp.c (rc1_parse): Fixed a bug in backreference to the nested
	  group case (see the added tests for the details).

2013-05-31  Shiro Kawai  <shiro@acm.org>

	* ext/Makefile.in: Reordered SUBDIRS: uvector must be built before
	  threads, since gauche.records used by threads now depends on uvector.

	* Makefile.in, ext/Makefile.in: Exits abnormally if any of submake
	  inside for loop fails.

	* lib/text/csv.scm (make-csv-reader): Rewrote in straightforward way.
	  It turned out the naive "read one char at a time, accumulate into a
	  list, and list->string to make a field" approach is 5x faster than
	  the previous string-scanning code.  Also the port argument for
	  the returned reader is now optional.

2013-05-30  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/precomp.scm (compile-toplevel-form): Avoid emitting
	  the toplevel pattern CLOSURE - DEFINE - RET generated by toplevel
	  definitions.  Instead we call Scm_MakeBind at initialization.
	  This reduces code vector size slightly.

2013-05-25  Shiro Kawai  <shiro@acm.org>

	* various files: Removed unnecessary "use"-dependencies, and put
	  less-frequently used features into autoloads, in order to speed
	  up initial startup, especially for www.cgi.
	  libsrc/gauche/parameter.scm - autoload hook features
	  lib/rfc/mime.scm - splitted parts that needs gauche.vport
	  lib/gauche/portutil.scm, src/libio.scm - move port-tell and
	  port-position-prefix from portutil to libio.

2013-05-24  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/logical.scm (copy-bit-field): Fixed the argument order
	  to comply SRFI-60.  THIS IS AN INCOMPATIBLE CHANGE.  A note is
	  added to the manual entry about it.

2013-05-22  Shiro Kawai  <shiro@acm.org>

	* src/libeval.scm (find-load-file): Experimentally allow to trigger
	  load hooks by "" in the PATHs list.  Convenient to be used when
	  Scheme sources are embedded in the executing binary.

2013-05-21  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/literal.scm (c-safe-string-literal): replace '?'
	  in the string as well.  A cheap workaround to avoid putting trigraph
	  in C string literal inadvertently.

2013-05-20  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/record.scm: Export <pseudo-record>.

2013-05-18  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive.scm: Let #<module gauche> export history
	  variable, so that it can be imported to the r7rs REPL for the
	  convenience.

2013-05-17  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/record.scm: Support pseudo records for <list> and
	  uniform vectors.  Support rtd-predicate for pseudo records.

2013-05-16  Shiro Kawai  <shiro@acm.org>

	* src/load.c (Scm_RegisterPrelinked, Scm_DynLoad): Experimentally
	  added support for statically linking extensions.
	* src/Makefile.in, ext/*/Makefile.in, src/gen-staticinit.scm:
	  Changes to support creating static linking version of libgauche.

2013-05-15  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/procedure.scm (generator-find): Added.
	* lib/gauche/generator.scm (gbuffer-filter): Added.

	* lib/rfc/http.scm (%http-request-adaptor): If the caller gives :sink
	  or :flusher, we mandate both should be given.  Giving just either
	  one should be rare case (and it's not likely to be working in the
	  current version---suppose you pass a file port to sink but not
	  giving flusher; then the current code raises an error, since the
	  adaptor provides the default flusher that calls get-output-string
	  on the sink.)  It is better to mandate both, so that we can catch
	  caller's misspelling of :sink or :flusher.

2013-05-11  Shiro Kawai  <shiro@acm.org>

	* ext/net/net.c: Plugged resource (fd) leak on Windows.  We need to
	  close fds opened by _open_osfhandle, but the trick is that we only
	  can do it at the time when the socket is closed.

	* src/number.c (Scm_FloatSign, print_double, scm_div): Basic support
	  for negative inexact zero.  We actually have the representation of
	  -0.0 internally, but didn't have printer honor it.  Most calculations
	  just works because libc does the job.  However, we need to
	  distinguish positive-zero imaginary part and negative-zero imaginary
	  part, which requires some surgery since we implicitly coerce complex
	  numbers with zero imaginary part to real numbers.
	* src/libnum.scm (%log): Likewise.  (log 0.0) ==> -inf.0 but
	  (log -0.0) ==> -inf.0+3.141592653589793i.

2013-05-10  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive.scm: Imports R7RS-small standard libraries
	  when gosh is invoked in interactive r7rs mode, so that they are
	  available in REPL.

2013-05-06  Shiro Kawai  <shiro@acm.org>

	* src/read.c (read_sharp_word): Support #true and #false.  This
	  also changes how the #-word is delimited: #t and #f used to delimit
	  themselves (except #f8, #f16 and #f32), but now we read a word
	  then match the token.  So, #f.1 used to be read as #f and 0.1,
	  but now it raises an error saying "invalid #-token: #f.1".
	  I don't think this causes a problem in existing code, but there
	  may be a datafile that relies on the old behavor; we'll watch.
	  Note that this isn't fully R7RS compatible yet.  The way R7RS
	  delimits tokens is different (e.g. we read "#false#false" as two
	  boolean falses, but iiuc, R7RS reader should read it as one token
	  and raise an error of invalid token.)
	  This also changes how the tokens with hash signs are read;
	  ".#" used to be read as a symbol, but now it is an error.
	  See the comment in 'Symbols and Numbers' section of the code.
	  Again, I doubt it causes any problem in existing code; and I worry
	  less about datafiles, since when such weird symbols are written,
	  it is |-escaped, so it can read back with the current reader.

2013-05-05  Shiro Kawai  <shiro@acm.org>

	* src/libsym.scm (symbol=?): Added for R7RS.
	* src/libbool.scm (boolean=?): Added for R7RS.

	* src/liblist.scm (list-set!): Make it built-in.

	* libsrc/file/util.scm (delete-file, remove-file): Added for R7RS
	  compatibility.
	* lib/r7rs.scm (delete-file): Changed accordingly.

2013-05-04  Shiro Kawai  <shiro@acm.org>

	* src/gauche/writer.h: Splitted writer related decls.

	* src/main.c (main): Experimentally support -r7 option to start up
	  gosh with R7RS environment as default.  Currently this is mainly
	  for the convenience of developing R7RS compatibility code.

	* lib/gauche/numerical.scm (floor/ etc.): Added R7RS integer division
	  operators.
	  (square): ditto.
	* autoloads.scm: Changed accordingly.

	* lib/r7rs.scm (define-library): Support R7RS define-library.
	* autoloads.scm (define-library): Autoload define-library so that
	  Gauche native code can use R7RS library seamlessly.

2013-05-03  Shiro Kawai  <shiro@acm.org>

	* src/libmod.scm, src/module.c (module-name->path, path->module-name):
	  Moved definition of these two from C to Scheme, and supports
	  module name components to have dot in it.  It won't so much useful
	  from Gauche, but R7RS library name may have (foo.bar baz) and
	  we need to map it to Gauche's module name.

	* lib/r7rs.scm, lib/scheme/base.scm: Start adding R7RS compatibility
	  stuff.

	* src/load.c (Scm_Require): Make sure we set the current module
	  to #<module gauche> when actually loading the file.  This was
	  never explicitly stated, but we always assumed so.  It doesn't
	  make sense to use caller's current module, since the caller
	  doesn't know if the file will actually be loaded or not, so
	  there's no guarantee that the current module is in effect.
	  This change might cause an incompatibility in the code that
	  took advantage of the old require behavior, but I doubt such
	  code exists.
	  (Scm_ResolveAutoload): The exception of above 'require' spec
	  is autoloading; we do need to load the file into a specific
	  module.

2013-05-01  Shiro Kawai  <shiro@acm.org>

	* src/libsys.scm: Feature identifiers gauche.sys.setenv,
	  gauche.sys.unsetenv, gauche.sys.clearenv, gauche.sys.sigwait,
	  and gauche.sysgetloadavg weren't defined properly.

2013-04-28  Shiro Kawai  <shiro@acm.org>

	* src/liblist.scm (take-right*): When the list is long and k is
	  small, try not to keep entire list on memory - would help when
	  taking the last k elements of a lazy sequence.  Not an ideal
	  solution, but would work for the time being.

2013-04-27  Shiro Kawai  <shiro@acm.org>

	* src/liblist.scm (length<=?): Added.

2013-04-25  Shiro Kawai  <shiro@acm.org>

	* src/module.c (Scm_ExportSymbols): Fixed a bug that searched
	  external table with internal name (patch from enami).
	  Also added a check to see if 'export' overrides the previous exports.

2013-04-24  Shiro Kawai  <shiro@acm.org>

	* ext/sparse/sparse.scm: Added generalized setter to
	  sparse-table-ref and sparse-vector-ref.

2013-04-23  Shiro Kawai  <shiro@acm.org>

	* src/gauche/module.h (ScmModule), src/gauche/gloc.h (ScmGloc),
	  src/module.c, src/gloc.c: Changed the way exported bindings
	  are handled.  Instead of having a flag in GLOC, we now have
	  to hashtables in ScmModule, one for internal (all) bindings and
	  another for exported bindings.  This allows us to implement
	  export-time renaming easily.
	  This changes the struct layout of ScmModule and ScmGloc, and
	  IT MIGHT BREAK ABI COMPATIBILITY, although both of those structs
	  are always allocated at runtime and accessed via API from
	  outside of libgauche, I expect it won't affect much.
	  The 'exported' list in ScmModule is dropped; if you want a
	  list of exported symbols, call Scm_ModuleExports() to calculate
	  the list.
	  NB: Scm_ExportSymbols no longer returns a list of exported symbols.
	* src/module.c (Scm_ExportSymbols): Allow export-time renaming,
	  as specified in R[67]RS.

2013-04-21  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm: Added include-ci support, and allows multiple
	  files with include/include-ci, as R7RS.
	* doc/coresyn.texi: Added docs for include and include-ci.

2013-04-19  Shiro Kawai  <shiro@acm.org>

	* src/libobj.scm (object-apply): Made char-set applicable.

2013-04-18  Shiro Kawai  <shiro@acm.org>

	* lib/dbm.scm (call-with-iterator, coerce-to): Added missing
	  collection framework support to dbm.

2013-04-17  Shiro Kawai  <shiro@acm.org>

	* src/libeval.scm (command-line): Added R7RS-ish command-line access
	  procedure.  This is better than old *program-name*/*argv* variables.
	* src/core.c (Scm_InitCommandLine): A convenience C API to initialize
	  command-line, *program-name* and *argv* from C code.
	* src/main.c: Changed to use Scm_InitCommandLine.
	* lib/gauche/logger.scm: Changed accordingly.

2013-04-16  Shiro Kawai  <shiro@acm.org>

	* src/regexp.c (regexp-compile): Fixed a bug that failed to handle
	  named subgroups and unordered group counts in the input AST.
	  The named subgroups are handled in parser, so the rxs created by
	  regexp-compile from AST didn't have the info.  Now rc_setup_context
	  is fixed to deal with named subgroups.  There was another bug
	  in rc_setup_context that made group ordering not to work.

2013-04-15  Shiro Kawai  <shiro@acm.org>

	* lib/control/thread-pool.scm (terminate-all!): Fixed a timing hazard
	  that could cause terminate-all! to throw a 'queue full' exception.
	* test/control.scm: Adjusted pool termination test for robustness.

	* lib/gauche/dictionary.scm: Revised.  Provided fallback methods
	  for optional interface.  A new macro define-dict-interface is
	  provided to define dictionary API concisely.
	* lib/dbm.scm, ext/sparse/sparse.scm: Use define-dict-interface
	  to define dict interfaces.
	* lib/util/trie.scm: Added dictionary interface to <trie>.

2013-04-12  Shiro Kawai  <shiro@acm.org>

	* src/*, lib/gauche/cgen/type.scm (ScmSmallInt): Bulk fix to avoid
	  integer overflow in indexes that accepts <fixnum>.  We used to
	  map <fixnum> to int, but that could cause overflow on 64bit
	  architecture.  We changed the mapping to ScmSmallInt, and changed
	  vector and string APIs to use it instead of int for indexes.
	  (NB: We still have 2G limit on string size & length for ABI
	  compatibility.  Check codes are inserted to detect out-of-range
	  case.  See src/string.c for the details.)
	  POSSIBLY INCOMPATIBLE CHANGE: We also enhanched
	  Scm_GetInteger()-family API to cover 8-,16-,32-bit integers, and
	  made it throws an error when the input is out-of-range.  The old
	  Scm_GetInteger[U][64]() API clamped the out-of-range arg.  We think
	  clamping is unsafe and shouldn't be the default behavior.  This
	  can break code that relies on the clamping behavior.

2013-04-09  Shiro Kawai  <shiro@acm.org>

	* ext/dbm/gdbm.scm (gdbm-strerror): Avoid using 'errno' as a variable,
	  for it may be a macro.
	* src/write.c (Scm_Vprintf): Handle 'l' modifier properly when we use
	  va_arg.
	* lib/gauche/cgen/type.scm: <fixnum> needs to be mapped to C long,
	  not int.  It's surprising that we've been missed this for long time.
	* src/number.c (Scm_Ash): Changed the second arg to long from int,
	  for this can be called via exact_expt and the second arg can be
	  outside of the range of int.  To prevent a silly bug gobbles huge
	  amount of memory, set a limit in the positive shift amount.

2013-03-30  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (throw_cont_body): Fixed bug that failed to set vm->numVals
	  when the continuation gets 0 args.

2013-03-19  Shiro Kawai  <shiro@acm.org>

	* ext/binary/io.scm (write-ber-integer): Fixed a bug that ignores the
	  port argument.  Patch from Nozomi Isozaki.
	* src/libnum.scm (%exact-integer-sqrt): Fixed the range to be used
	  FP sqrt.  If input is >= 2^52, the result of FP sqrt can be rounded.

2013-03-14  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/test/generative.scm: Initial check in.  API is still
	  fluid.

2013-03-12  Shiro Kawai  <shiro@acm.org>

	* data/random.scm: Added initial version.

2013-03-11  Shiro Kawai  <shiro@acm.org>

	* configure.ac, lib/gauche/config.h.in: Added check for lgamma and
	  tgamma.
	* src/libnum.scm, lib/gauche/numerical.scm, src/autoloads.scm
	  (gamma, lgamma): Added.  We use system's tgamma and lgamma
	  if available, and alternative approximation if not.
	* test/number.scm: Tests for alternative gamma function implementation;
	  this is commented out by default, for it requires system's
	  tgamma and lgamma.
	* src/libsys.scm: Moved math.h functions (fmod, frexp, ldexp, log10)
	  to libnum.scm.

2013-02-19  Shiro Kawai  <shiro@acm.org>

	* lib/math/prime.scm (mc-find-divisor-1): Fixed a bug that made
	  the algorithm loop unnecessarily long.
	  (mc-factorize): Removed :num-tries arg, since now mc-find-divisor-1
	  can take much longer for inputs that's hard to factorize, so limiting
	  execution time by :num-tries doesn't have much use except preventing
	  infinite loop in case the input has a large prime factor.
	  Practical applications would need some timeout mechanism anyway so
	  it wouldn't be a show-stopper.  We'll address the infinite loop issue
	  by implementing deterministic primality test in future.

2013-02-16  Shiro Kawai  <shiro@acm.org>

	* src/autoloads.scm (sinh, cosh, tanh, asinh, acosh, atanh): No longer
	  needed since they have been moved to libnum.scm.

2013-02-14  Shiro Kawai  <shiro@acm.org>

	* src/number.c, src/gauche/number.h (Scm_PrintNumber): New API for more
	  general handling of number to external representation conversion.
	  (Scm_NumberToString): Rewritten to use Scm_PrintNumber internally.
	  The last argument is changed from 'int use_upper' to
	  'ScmNumberFormat*'.  It is an incompatible change, but we hope almost
	  all calls of this function had specified 0 or FALSE in the last arg
	  and expect it to work (if not, recompilation would take care of it.)
	  (Scm_StringToNumber): The last arg is changed for 'int strict' to
	  'u_long flags'.  Again, this is an incompatible change, but we no
	  longer use this arg at this moment (the semantics of 'strict' wasn't
	  well defined, and deemed unnecessary---for real strict check we need
	  different semantics.)  Thus existing code should work.
	  Note that existing cgen-generated code may contain a call with
	  the third arg to be TRUE.
	* src/libnum.scm, src/read.c, src/regexp.c, src/write.c,
	  lib/gauche/cgen/literal.scm: Changed accordingly.

2013-02-06  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/lazy.scm (lconcatenate): Added.

2013-02-05  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/regexp.scm (rxmatch-substrings, rxmatch-positions): Added.
	* src/librx.scm (rxmatch-named-groups): Added for completeness.
	* src/autoloads.scm, test/regexp.scm: Changed accordingly.

2013-01-28  Shiro Kawai  <shiro@acm.org>

	* src/string.c (Scm_GetStringConst),
	  lib/gauche/cgen/type.scm (<const-cstring>): Instead of having
	  a special 'safe' version that checks NUL character, we made the
	  default GetStringConst safe.  It doesn't make much sense anyway
	  to have two versions, for there's no way to use beyond NUL byte
	  of a C string returned by Scm_GetStringConst---you need a string
	  length separately, and Scm_GetStringContent is for that purpose.

2013-01-24  Shiro Kawai  <shiro@acm.org>

	* src/string.c (Scm_StringSplitByCharWithLimit),
	  lib/gauche/stringutil.scm (string-split): Supported optional limit
	  argument, based on Bizenn's patch.

2013-01-23  Shiro Kawai  <shiro@acm.org>

	* src/string.c (string_scan, string_scan_reverse): Use optimized
	  scan for utf-8 multibyte-multibyte case and when the searched
	  string is a single byte.  The effect is significant.

2013-01-21  Shiro Kawai  <shiro@acm.org>

	* src/libnum.scm (twos-exponent, twos-exponent-factor): Renamed
	  power-of-two? to twos-exponent, for now we returns more meaningful
	  result than just a booelan.  The previous twos-exponent is renamed
	  to twos-exponent-factor.

2013-01-16  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass1): Made the compiler reject too may literal
	  arguments that wouldn't fit in VM stack, instead of SEGVing at
	  runtime.

2013-01-14  Shiro Kawai  <shiro@acm.org>

	* src/bignum.c (Scm_BignumRemSI): Avoid unnecessary allocation of
	  bignums when calculating modulo/remainder of a bignum by a fixnum.
	  This makes (modulo <bignum> <fixnum>) about 3x faster, though
	  the practical observable effects is much smaller unless the
	  program specifically calls the specific combination.

2013-01-09  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass5/prepare-args): Fixed incorrect stack
	  estimation that caused stack overrun.

	* src/lazy.c (Scm_Force): Fixed leak that prevented tail-recursive
	  lazy loop consumes unbounded memory (regression introduced
	  between 0.9.2 and 0.9.3.)

2013-01-06  Shiro Kawai  <shiro@acm.org>

	* lib/util/digest.scm, lib/rfc/hmac.scm, ext/digest/sha.scm:
	  Let digest algorithm metacless have the default block size
	  to be used in HMAC.  HMAC needs to know it to do appropriate
	  preprocessing of the key.  In old days block size is fixed
	  to 64 bytes, but now sha384/512 insists 128 bytes.

	* src/compile.scm (case): Fixed empty items in a case clause.
	  Patch from leque.

2013-01-05  Shiro Kawai  <shiro@acm.org>

	* lib/math/prime.scm: Added jacobi, totient and bpsw-prime?.
	  (mc-factorize): Improved using bpsw-prime? to bail out with
	  large primes.
	  (naive-factorize): Made memoization thread-safe.

	* src/libnum.scm (twos-exponent, power-of-two?): Added.  These are
	  trivial to write in Scheme, but usually they are wanted in optimized
	  code, and I've seen it enough to include a native, fast version.

2013-01-04  Shiro Kawai  <shiro@acm.org>

	* lib/math/prime.scm: Exposed small-prime?.

2013-01-03  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/cise.scm (.type): Added (.type typename) to embed
	  type names in some context; e.g. the argument of sizeof.
	* ext/uvector/uvlib.stub.tmpl (TAGvector-multi-copy!): Added.
	* lib/math/prime.scm: Fix reset-primes (do not return
	  the value of *primes*; othewise running (reset-primes) on REPL
	  would cause a trouble), small-integer-prime? (need to handle 2
	  and 3 specifically.  Also make it return #f for large numbers).
	  Added factorization procedures, naive-factorize and mc-factorize.

2013-01-02  Shiro Kawai  <shiro@acm.org>

	* src/libnum.scm (exact-integer?): Added.
	* lib/gauche/numerical.scm (expt-mod): Added.

2012-12-23  Shiro Kawai  <shiro@acm.org>

	* src/vminsn.scm (GSET): Missing FLONUM_ENSURE_MEM caused flonum
	  assigned to a global variable to be overwritten.

2012-11-20  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/process.scm (%prepare-remote): Fixed regexp to recognize
	  hostname (thanks to BIZENN).

2012-11-19  Shiro Kawai  <shiro@acm.org>

	* src/signal.c (Scm_SigCheck),
	  ext/threads/threads.c (wait_for_termination): Fixed timing hazard
	  when a thread is killed via pthread_kill().  The hazard was visible
	  on cygwin.

2012-11-18  Shiro Kawai  <shiro@acm.org>

	* src/class.c (Scm_MakeForeignPointer): Make the identity hashtable
	  lookup thread-safe.  Added Scm_MakeForeignPointerWithAttr (see
	  the comment; the attributes should be used mostly in read-only
	  manner.
	  (Scm_ForeignPointerAttrSet): Made it thread-safe. Not tuned for
	  performance, but modifying attrs are not encouraged anyway.
	* src/libmisc.scm (foreign-pointer-attribute-set!): Rename it with
	  bang for the consistency.  Keep old name (no bang) for the backward
	  compatibility.
	* src/test-extra.c, src/libextra.scm, test/capi.scm: Added
	  to test stuff that aren't exposed to Scheme by default.

2012-11-01  Shiro Kawai  <shiro@acm.org>

	* lib/file/filter.scm (file-filter): Added :leave-unchanged option,
	  allow #t to :temporary-file option.
	  (file-filter-fold, file-filter-map, file-filter-for-each): Added.

2012-10-29  Shiro Kawai  <shiro@acm.org>

	* src/read.c (read_reference): Reject indeterminate read reference,
	  e.g. #0=#0#.

	* src/write.c (write_walk, write_ss_rec): Avoid recursion, for it
	  may bust the C stack when dealing with deeply nested structures.

2012-10-25  Shiro Kawai  <shiro@acm.org>

	* ext/peg/peg.scm (peg-run-parser): Let it return the "rest of the
	  input" as the second value for the generality.  This is an
	  incompatible change.
	* lib/rfc/json.scm (parse-json*): Added.

2012-10-24  Shiro Kawai  <shiro@acm.org>

	* ext/peg/peg.scm ($fmap): Experimentally added functor interface.
	  ($do [x parser1] [y parser2] ($return (f x y))) can be writtern
	  as ($fmap f parser1 parser2).  See how it works.
	* lib/rfc/json.scm (json-array-handler, json-object-handler)
	  (json-special-handler):  Make json array|object -> Scheme
	  mapping customizable.
	  (construct-json): Generalized array and object handling: Now
	  any <dictionary> instance is mapped to json object (and its keys
	  can be anything, converted by x->string), and any <sequence>
	  except strings and lists is mapped to json array.
	  Above two enhancements are inspired by Teppei Hamada's
	  Gauche-text-json package (http://teppey.github.com/Gauche-text-json/).

2012-10-22  Shiro Kawai  <shiro@acm.org>

	* libsrc/util/match.scm (gendefine): Fixed match-define expansion
	  (patch from rallentando).

	* src/gauche/float.h (SCM_FP_ENSURE_DOUBLE_PRECISION_BEGIN),
	  (SCM_FP_ENSURE_DOUBLE_PRECISION_END): A compatibility layer
	  to tweak FPU control register.
	* src/number.c (Scm_GetDouble): Make sure ratnum -> flonum
	  routine uses IEEE double, not x87 extended double
	  (so far, on MinGW and Linux.)

2012-10-17  Shiro Kawai  <shiro@acm.org>

	* src/string.c (Scm_GetStringConstSafe),
	  lib/gauche/cgen/type.c (<const-cstring-safe>): Converting Scheme
	  string to C string with extra check of NUL character.  This should
	  be used to obtain strings to be passed to system procedures
	  (e.g. pathnames for file operations) to avoid security risk.
	* src/libio.scm (%open-input-file, %open-output-file),
	  src/libsys.scm (sys-remove, sys-rename, sys-system, sys-setenv,
	  sys-unsetenv, sys-stat, sys-lstat, sys-mkfifo, file-exists?,
	  file-is-regular?, file-is-directory?, sys-utime, sys-access,
	  sys-chdir, sys-chmod, sys-chown, sys-lchown, sys-link, sys-mkdir,
	  sys-rmdir, sys-unlink, sys-truncate, sys-symlink, sys-readlink):
	  Use <const-cstring-safe>.

2012-10-07  Shiro Kawai  <shiro@acm.org>

	* src/number.c: Raises an error for division by exact zero, instead
	  of coercing it to inexact; R5RS allows implicit coercing, but R6RS
	  explicitly requires raising error.  Patch from leque.
	  Also making 1/0 an error, while we still allow #i1/0 => +inf.0.
	  (scm_div): Also fixed (/ <compnum> <zero>) cases.  Patch from leque.

2012-09-30  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/literal.scm: Temporarily replaced refereces of expt
	  for %expt, otherwise compiling HEAD with 0.9.3.3 could trigger
	  autoload of expt, while it is no longer in gauche/numerical.scm
	  in the current source tree.  We can revert it after 0.9.4 release.

	* src/number.c (Scm_Exact), lib/gauche/numerical.scm (real->rational):
	  Let 'exact' return the simplest rational within the precision of
	  the flonum, instead of the dumb rationalization.  E.g.
	  (exact (/ 3.0)) => 1/3 instead of 6004799503160661/18014398509481984.
	  The calculation is implemented in real->rational, and Scm_Exact
	  calls it when needed.
	* src/libnum.scm, lib/gauche/numerical.scm: Moved R5RS procedures
	  from the latter to the former.
	* src/autoloads.scm: Changed accordingly.

2012-09-29  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/literal.scm (define-cgen-literal): Fixed complex
	  literal generation when real-part and/or imag-part contains
	  NaN or infinities.

2012-09-28  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/numerical.scm (rationalize, real->rational): Factored
	  out more general rationalization algorithm as real->rational,
	  and implemented rationalize on top of it.  Also fixed the case
	  when e >= 1 in rationalize.

2012-09-24  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/numerical.scm (rationalize, continued-fraction): Added.

2012-09-07  Shiro Kawai  <shiro@acm.org>

	* src/gauche/treeutil.scm (make-tree-map): Allow a single 'compare'
	  procedure instead of '=' and '<'.

2012-08-28  Shiro Kawai  <shiro@acm.org>

	* src/read.c, src/libio.scm, src/main.c, src/compile.scm,
	  src/gauche/vm.h: *HIGHLY EXPERIMENTAL*: Support srfi-105 draft
	  cexpr to try it out.  This feature may be changed incompatibly
	  at any time, according to how the srfi will turn out.

2012-08-04  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/generator.scm (gmerge): Added.

2012-07-25  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/http.scm (receive-body-chunked): Rewrote to avoid using
	  shift/reset.  The naive use of delimited continuation won't work
	  if the caller also tries to use delimited continuations.

2012-07-21  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (Scm_VMCallPC): Fixed a bug that a valid partial
	  continuation usage caused "attempt to return from ghost
	  continuation" error when the captured partial continuation
	  was empty.

	* src/number.c (Scm_IntegerP): Fixed (integer? +inf.0) => #t etc.

2012-07-20  Shiro Kawai  <shiro@acm.org>

	* src/liblist.scm (iota): Reject if count is non-integer.  And even
	  if count is inexact, we still return exact numbers if start and step
	  are exact.
	* src/liblazy.scm (liota, lrange): Fix inexact/exact number handling
	  and the case when step isn't an integer.
	* lib/gauche/generator.scm (giota, grange): Fix inexact/exact handling.

2012-07-14  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/generator.scm (gslices): Added.
	  (bits->generator, reverse-bits->generator): Fixed the semantics
	  of start and end arguments; the previous spec wasn't useful, for
	  we get used to count the bit numbers from LSB to MSB; it is much
	  more convenient to be able to say (bits->generator num 0 8) to
	  take always the least significant 8 bits.  The direction of bits
	  is also reversed, to align to start/end; bits->generator takes
	  bits from LSB, while reverse-bits->generator takes from MSB.

2012-07-11  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive.scm (read-eval-print-loop): Make extended
	  REPL feature available when gauche.interactive is loaded.
	* src/main.c: Changed to call "visible" read-eval-print-loop.  This
	  makes the extended REPL available by default, but uses the
	  gauche#read-eval-print-loop if gauche.interactive isn't loaded.
	* src/repl.c: Scm_Repl is no longer used.  Marked obsoleted.

2012-07-10  Shiro Kawai  <shiro@acm.org>

	* src/repl.c, src/libeval.scm (read-eval-print-loop): Reimplemented
	  read-eval-print-loop in Scheme instead of C.  C API Scm_Repl calls
	  Scheme version.  Scm_VMRepl is obsoleted (it never was an official
	  API).

2012-07-09  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive.scm (describe): When a symbol is described,
	  show the known bindings on the symbol for the convenience.

2012-07-08  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (get_debug_info), src/main.c (main): Fixed lost stack
	  trace.  Patch from Vitaly Magerya.

	* src/char.c (<char-set>), libsrc/gauche/collection.scm: Let <char-set>
	  class inherit <collection> and implement collection framework.
	* src/libchar.scm, lib/srfi-14/query.scm (char-set-size): Moved
	  char-set-size to builtin.

2012-07-07  Shiro Kawai  <shiro@acm.org>

	* ext/srfi/srfi-19.scm (tm:leap-second-table): Reflected the leap
	  second in 2012-07-01.

2012-07-06  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-14.scm (char-set-hash): The hash value wasn't distributed
	  enough.  NB: This changes the hash value.  Watch out if it causes
	  any inter-version compatibility issues.

2012-07-02  Shiro Kawai  <shiro@acm.org>

	* src/libeval.scm (find-load-file): Allow non-regular file (e.g.
	  device files and pipes) to be loaded.  It can be used as a dummy
	  script for one-liner: 'gosh -E... /dev/null "$@"', for example.

2012-06-27  Shiro Kawai  <shiro@acm.org>

	* src/string.c (string_search_reverse): Fixed off-by-one bug.

2012-06-26  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/generator.scm (port->sexp-generator)
	  port->line-generator): Added for completeness.

2012-06-21  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/http.scm (http-basic-auth-handler): Added support
	  for basic authentication, using :auth-user and :auth-password
	  passed to http-requrest.  The caller no longer need to create
	  authorization header by itself.   Patch from Bizenn.
	  Whether the current architecture is enough to handle
	  other authentication schemes isn't clear yet (apparently
	  digest authentication requires a lot more complicated handling).
	  So we don't make the :auth-handler argument and
	  http-default-auth-handler official yet.

2012-06-16  Shiro Kawai  <shiro@acm.org>

	* ext/sxml/adaptor.scm (parse-error): Fixed that 'msg' part
	  wasn't included in the error message.

2012-06-06  Shiro Kawai  <shiro@acm.org>

	* ext/tls/axTLS: updated to axTLS 1.4.6.  Also tweaked "client
	  renegotiation" test in ssltest.c, for it seems to depend on
	  openssl version/architecture difference.

	* src/gauche.h (SCM_MAKE_CHAR): When extended character (e.g.
	  #\uffffff) was given in an 'int' variable, it became negative
	  by the shift op and was sign extended in 64bit architecture,
	  ending up an incorrect character representation.

	* src/char.c (charset_print_ch): Use unicode escape for all
	  control and mark characters.
	* src/libobj.scm (write-object <regexp>): Use \U syntax for the
	  unicode chars beyond BMP.

	* src/regexp.c (Scm_RegComp): Avoid keeping the original pattern
	  string as the value of regexp->string.  The regexp->string return
	  value is calculated from AST when it is used for the first time.
	  Rationale: There's a many-to-one mapping from input string to
	  the actual regexp.  We use regexp->string value to make the
	  external representation of regexp, and we need proper escaping
	  for that.  But escaping "non-canonical" input string gets pretty
	  cumbersome.  For example, both "\\/" and "/" would be parsed as
	  (0 #f #\/), and when printed, both should be printed as #/\//.
	  It is easier to make regexp->string return "/" in both cases.
	  A side effect: #/abc/i is now printed as #/(?i:abc)/, reflecting
	  the internal AST representation.  Let's see if this becomes
	  an issue.
	* src/libobj.scm (write-object <regexp>): Rewritten to adapt
	  the above change, and also to use \uXXXX for non-printable
	  characters.
	* lib/gauche/regexp.scm (regexp-unparse): Do not display extra
	  grouping (?:..) unless necessary in repetition, e.g. #/a?b/
	  instead of #/(?:a)?b/.  The extra grouping becomes annoying
	  because of the above change, although it isn't logicaly incorrect.
	* src/char.c (charset_print_ch): Fixed a bug that didn't escape
	  '\' within charset.

2012-06-04  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/generator.scm (gconcatenate): Added.

2012-06-02  Shiro Kawai  <shiro@acm.org>

	* src/Makefile.in: Avoid race between install-aux and relink in
	  make -j install.

2012-05-31  Shiro Kawai  <shiro@acm.org>

	* ext/threads/thread.c (Scm_ThreadTerminate): Fixed SEGV bug when
	  thread-terminate! is called on a thread that's not running.

2012-05-28  Shiro Kawai  <shiro@acm.org>

	* gc/dyn_load.c: Backport a patch for NetBSD 6.

	* release 0.9.3.3

2012-05-27  Shiro Kawai  <shiro@acm.org>

	* src/port.c (Scm__SetupPortsForWindows): Protect the original
	  scm_stdout and scm_stderr from being GC-ed, for not having fd 1 and 2
	  open causes problems when spawning child processes and communicate
	  with them via pipes.  Thanks to @natsutan for tracking the problem.
	* src/main.c (init_console): make sure fd 0, 1, and 2 are redirected
	  to NUL in no console mode.

	* src/string.c (Scm_StringScanRight, Scm_StringScanCharRight),
	  src/libstr.scm (string-scan-right): Added.

2012-05-26  Shiro Kawai  <shiro@acm.org>

	* gc/*: Bumped to bdwgc 7.2b.

2012-05-25  Shiro Kawai  <shiro@acm.org>

	* src/liblist.scm (every): In multi-arg case, the return value
	  should have been the first non-false return value of PROC but
	  it was #t.  Patch from leque.
	* lib/util/stream.scm (stream-every): Similar fix as above for
	  the consistency.  Patch from leque.

	* src/gauche/vm.h, src/signal.c (SCM_NSIG): On FreeBSD, NSIG doesn't
	  count RT signals, having caused signal.c overrun when setting
	  a handler for SIGRT* signals.  Thanks to Vitaly Magerya for
	  tracking this down.

2012-05-24  Shiro Kawai  <shiro@acm.org>

	* test/system.scm (normalize): Avoid using $HOME to calculate the
	  expected value of tilde-expansion, for $HOME may be altered
	  during testing.  Use getpwuid instead.

2012-05-12  Shiro Kawai  <shiro@acm.org>

	* src/Makefile.in: If install location was redirected by DESTDIR,
	  install-aux target in src/Makefile failed, since it tried to
	  use ./gosh which was already relinked to use libgauche.so under
	  $(libdir).   Changed the order of install-aux and install-core
	  so that we'll first install headers and scripts, then relink and
	  install binaries.

	* lib/text/info.scm (read-info-file-split): Since we now have rfc.zlib,
	  use it instead of external gunzip process to read compressed
	  info files (bonus: it works on Windows/MinGW too).

2012-05-11  Shiro Kawai  <shiro@acm.org>

	* release 0.9.3.2 : Follow-up release.

	* doc/extract: Fixed a bug that caused doc build fail if native
	  encoding isn't utf-8.  The bug was introduced by out-of-tree
	  build modification.

2012-05-10  Shiro Kawai  <shiro@acm.org>

	* src/libeval.scm (%vm-parameter-ref, %vm-parameter-set!): The
	  compatibility definition of these procedures was incorrect.
	  If files using parameterize and precompiled by 0.9.2 or before
	  are used in 0.9.3 an error will be signalled.  Let's see how big
	  the problem will be and decide whether we'll make another follow-up
	  release or not.

	* lib/gauche/procedure.scm (generator-map): Fixed a bug that depended
	  on argument evaluation order.

	* release 0.9.3.1 : Special follow-up release for MinGW because
	  of the previous bug.

	* src/libsys.scm (check-trailing-separator): It raised an error
	  erroneously when "" is given.  It prevented self-building
	  0.9.3 on Windows/MinGW.

	* lib/gauche/portutil.scm, lib/gauche/procedure.scm: Removed
	  duplicated definitions of port-fold etc. which was need to compile
	  0.9.3 by 0.9.2.  The procedures are kept as aliases of
	  generator-fold etc.
	* src/autoloads.scm: Autoload port-fold etc. from gauche.procedure
	  instead of gauche.portutil.

2012-05-09  Shiro Kawai  <shiro@acm.org>

	* release 0.9.3

2012-05-08  Shiro Kawai  <shiro@acm.org>

	* src/parameter.c, src/gauche/parameter.h, src/libeval.scm,
	  libsrc/gauche/parameter.scm: Fixed semantics of parameters created
	  by other threads.  Accessing parameters created by unrelated threads
	  used to be an error; now it works as if the parameter is defined
	  in every thread.  This reduces the annoyance if parameter creation
	  timing is shifted by autoloads, for example.
	  The internal API is slightly changed.  See the comment in
	  src/libeval.scm.
	* src/load.c: Adapted to the above change.

2012-05-07  Shiro Kawai  <shiro@acm.org>

	* winnt/*: Removed old MSVC project files and NSIS-related
	  sources.  Using MinGW and WiX is now the official way to build
	  Windows native version.  If anyone wants to support alternative
	  builds, she can always resurrect those files from the repository.

	* src/liblist.scm, libsrc/srfi-1.scm: Moved remove, remove! and
	  filter-map to the core.

	* gc/libatomic_ops: Backported d923334022938240c43c167d66549b1211aed2ba
	  of git://github.com/ivmai/libatomic_ops.git to avoid build errors
	  on certain Xcode version.

2012-05-05  Shiro Kawai  <shiro@acm.org>

	* ext/tls/Makefile.in, ext/tls/system-fix.c, ext/tls/kick_openssl,
	  ext/tls/test.scm, ext/tls/axTLS/ssl/test/killopenssl.sh,
	  ext/tls/axTLS/ssl/test/ssltest.c: TLS test fixes
	  - Avoid using system(), for it doesn't go well with MT on some
	  OSes (e.g. OSX).  This fix calls /bin/sh explicitly, which may
	  have its own problem, but let's see.
	  - Avoid using 'ps' to extract openssl servers to kill.  Instead,
	  we intercept openssl invocations and record pids.  This (1) avoids
	  complications of 'ps' difference between OSes, and (2) prevents
	  collateral damange when there are more than one test is going on.
	  Again, this fix is quite a kludge and may have other problems.
	  Note that we substitute strings "openssl " in the ssltest.c in
	  order to make this work, so be careful changing ssltest.c not to
	  include the code that can be affected by this substitution
	  inadvertently.

2012-05-03  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-27.scm: Fixed bugs in random-source-make-reals.
	* ext/mt-random/test.scm: Added tests for srfi-27.

2012-05-01  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/generator (x->generator): The implementation for
	  the generic collection was incorrect.

2012-04-20  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/test.scm (test-end, test-summary-check): Extended
	  the module to enable exitting gosh with nonzero status so that
	  it can be detected by make and/or other build monitoring tools.

2012-04-18  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/test.scm (arity-invalid?): Exclude check on generics
	  with no methods.  See the comment.

2012-04-14  Shiro Kawai  <shiro@acm.org>

	* ext/tls/Makefile.in, ext/tls/tls.ac, ext/tls/tls.c,
	  ext/tls/gauche-tls.h: Enable compilation with --disable-tls.
	* lib/rfc/http.scm: Fixed to raise a proper error when :secure
	  is given on a platform without tls support.

2012-04-12  Shiro Kawai  <shiro@acm.org>

	* libsrc/util/match.scm (validate-pattern): Temporary fix for
	  interference with hygienic macro.

	* src/liblazy.scm (lcons*, llist*, liota): Added for completeness.
	* doc/corelib.texi: Added lazy sequence examples.

2012-04-11  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (Scm__VMUnprotectStack),
	  src/lazy.c (Scm_ForceLazyPair): Fixed a bug that corrupts VM stack
	  when lazy-pair forcing occurs during a comined instruction such
	  as CAR-PUSH.  The original code pushed an extra continuation frame
	  during forcing to protect the stack.  If that happened, CAR-PUSH
	  pushes the result on top of the extra continuation.  However,
	  the next instruction to be executed after this CAR-PUSH will be
	  RET, set by Scm__VMProtectStack, which discards the just pushed
	  value by CAR-PUSH.  The fix correctly adjusts the VM stack
	  after forcing is done.

	* src/librx.scm (regexp-num-groups, regexp-named-groups): Added
	  accessors to these internal info.
	* doc/corelib.texi: Made reference from regexp-replace-all to
	  lrxmatch and grxmatch.

2012-04-03  Shiro Kawai  <shiro@acm.org>

	* src/libeval.scm (add-load-path): Enable adding load path
	  relative to the currently loaded file.  Handy to distribute
	  scripts that can just copied by directories.

2012-03-31  Shiro Kawai  <shiro@acm.org>

	* src/vm.c, src/gauche/vm.h: Changed continuation frame structure.
	  It turned out we don't need to save argp, so we have one word less
	  in each cont frame.  Previously we marked C continuation frame
	  by argp=NULL; now it is marked by a special value in env.
	  The C continuation frame is also changed to have pushed data
	  before ScmContFrame, which is symmetric to ordinary continuation
	  frames.  6-8% performance improvement is observed in heavily
	  recursive micro benchmarks (e.g. fibonacci or ackerman).

2012-03-30  Shiro Kawai  <shiro@acm.org>

	* src/char.c (Scm_CharSetCaseFold), src/regexp.c (match_ci):
	  Fixed case-folding match beyond ASCII range.  Patch from
	  OOHASHI Daichi.

2012-03-26  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/http.scm (http-request, http-default-redirect-handler):
	  Fixed the behavior of redirection for 3xx responses, and made it
	  customizable.

2012-03-21  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/cookie.scm (parse-av-pairs): RFC2616 allows period
	  appear in cookie attr name.  Fixed.  (Patch from Kirill Zorin).

	* libsrc/gauche/parameter.scm (object-apply): Splitted methods for
	  getter and setter; it makes arity checking work better.

	* lib/gauche/test.scm (test-module): Added a feature to check arity
	  of global procedures, based on the patch by Masahiro Hayashi.
	* lib/rfc/ip.scm, lib/binary/ftype.scm: Fixed bugs catched by the
	  above check.

	* src/class.c (<bottom>), src/libobj.scm (subtype?): Added the bottom
	  type <bottom>, and type relation predicate subtype?.  <bottom> is
	  needed for applicable? to be useful.
	* doc/corelib.texi, doc/object.texi: Reorganized a bit to have
	  brief introduction of type/class system on top of corelib.texi.

2012-03-19  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/generator.scm: Removed consume, for it is the same thing
	  as generator-for-each.

	* lib/gauche/procedure.scm (generator-fold, generator-fold-right,
	  generator-for-each, generator-map): Supersedes port-fold etc.
	  (To avoid build compilication, we still keep port-fold etc.
	  in portutil.scm until 0.9.3 release; see the comments in
	  portutil.scm.)
	* src/autoloads.scm: Added autoloads for the above procedures.
	* various files: Replaced port-for-each to generator-for-each etc.

2012-03-17  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-42.scm: Added :generator ec-qualifier.

2012-03-16  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/generator.scm (do-generator): Added.

2012-03-14  Shiro Kawai  <shiro@acm.org>

	* src/liblist.scm (fold-left): Added according to R6RS, for the
	  completeness.

2012-03-09  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/portutil.scm (port-map, port-fold): Guarantee to call
	  fn before retrieving the next item by the reader; it just makes
	  more sense.

2012-02-26  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/http.scm (send-headers): Try to send headers in one chunk,
	  for some http servers prefer headers coming in a single packet.

	* src/compile.scm (quasiquote): Fixed a broken hygienity bug in
	  unquote-splicing handling used within hygiene macros.

	* src/vminsn.scm (NUMIDIV2), src/libnum.scm (/.),
	  src/number.c (scm_div):  There was an overflow issue in NUMIDIV2 and
	  /. when both the dividend and the divisor are too big to be coerced
	  to double, but the result can be representable in double.  We
	  shouldn't coerce the arguments to inexact beforehand.  To address
	  this, we delegate exact / exact -> inexact case into Scm_DivInexact
	  C routine.  Now, Scm_DivInexact has been used for the backward
	  compatibiltiy of `inexact-/' (compat.norational) but its behavior
	  is different from `/.'.   We changed Scm_DivInexact to match the
	  behavior of `/.', and added Scm_DivCompat to support `inexact-/'.
	  The compatibility behavior will be removed in 1.0.

2012-02-22  Shiro Kawai  <shiro@acm.org>

	* ext/tls: Added TLS/SSL support module based on Cameron Rich's axTLS.
	  The binding is originally written by Kirill Zorin.  If building
	  of axTLS fails, configure with --enable-tls=none to suppress
	  building it.
	* lib/rfc/http.scm: Repleaced TLS/SSL support with ext/tls, from
	  the previous ad-hoc stunnel-based one.

2012-02-21  Shiro Kawai  <shiro@acm.org>

	* ext/peg/peg.scm: Rewrote using lazy sequences instead of
	  specialized streams for input.  Also simplified API (e.g. dropped
	  $do* and $do distinction, for they are more a performance hack
	  rather than a benefit for users.)  This may degrade the performance.
	  We rely on future compiler improvements to address the performance
	  issue.  Do not count on the current API; they're still subject to
	  change.

2012-02-20  Shiro Kawai  <shiro@acm.org>

	* src/Makefile.in: Fixed install process to call makeverslink
	  before using gauche-install; the latter depends on the installed
	  libgauche.so to be properly symlinked.

2012-02-19  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/generator.scm (consume): Added.

2012-02-18  Shiro Kawai  <shiro@acm.org>

	* src/liblist.scm (map, for-each), src/proc.c (Scm_Map, Scm_ForEach):
	  Define these in Scheme.  The C API is obsoleted; they are just
	  calling Scheme version now, and will be gone in 1.0.

2012-02-17  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/generator.scm (glet*, glet1): Added convenience macros
	  that captures the monadic pattern frequently appear in generator
	  code.

2012-02-14  Shiro Kawai  <shiro@acm.org>

	* src/load.c, src/libeval.scm (load, find-load-file): Moved Scm_VMLoad
	  and Scm_FindFile functions from C to Scheme.  C API Scm_VMLoad()
	  remains for the backward compatibility.  Scm_FindFile() is deleted,
	  for it was never made public.
	  (%add-load-path-hook!, %delete-load-path-hook!): *EXPERIMENTAL*
	  Added a mechanism to trigger a hook function when *load-path* includes
	  a regular file instead of a directory.  The hook function allows
	  the application to load files from archive files (e.g. zip fie).
	  See libeval.scm for the details.

2012-02-12  Shiro Kawai  <shiro@acm.org>

	* src/libsys.scm, lib/gauche/fileutil.scm (file-exists?),
	  (file-is-regular?, file-is-directory?): Moved these from fileutil
	  to libsys.scm because of the dependency.
	* src/autoloads.scm: Changed accordingly.

2012-02-11  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h (SCM_BIND_PROC): Introduced a macro to capture the
	  common pattern in calling a Scheme procedure from C.  The macro
	  can be used to ensure a C variable is initialized by the value
	  of the named Scheme variable (so it isn't restricted to 'PROC',
	  but in practice using it for something other than procedure doesn't
	  make much sense.)
	* src/load.c, src/vm.c, src/system.c: Changed accordingly.

2012-02-10  Shiro Kawai  <shiro@acm.org>

	* src/system.c (Scm__InternalCondWait): Fixed a hazard when timeout
	  occurs.  Also fixed the handling of cond->mutex so that it is safe
	  to call CondSignal and CondBroadcast without holding the related
	  mutex (although it's not recommended).

2012-02-07  Shiro Kawai  <shiro@acm.org>

	* ext/sxml/*: Fixed a problem that out-of-source-tree build generated
	  some Scheme files into srcdir instead of builddir.

	* src/compile.scm (pass1/open-include-file),
	  src/gauche/vm.h (SCM_COMPILE_INCLUDE_VERBOSE),
	  src/main.c (-finclude-verbose): Add a new compile-time flag to
	  report 'include' operation to stderr.  It is separated from
	  -fload-verbose, since 'include' works in compile-time and
	  'load' works in runtime (although typically they are interleaved).

	* src/libio.scm (open-input-file): Allow ":encoding #t" to make
	  open-input-file wrap the iport with a coding-aware port.  It's
	  convenient to process source files that may have coding comment.

2012-02-06  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (Scm_AttachVM, Scm_DetachVM): Protect active VMs explicitly
	  from GC.  Thread-specific area may not be scanned by GC.

2012-02-05  Shiro Kawai  <shiro@acm.org>

	* ext/net/net.c (Scm_MakeSocket): Fix Windows/MinGW problem that
	  sockets can't be used with threads.  Thanks to SAITO Atsushi for
	  tracking this down.

2012-02-03  Shiro Kawai  <shiro@acm.org>

	* src/liblist.scm (iota): Fixed a bug in the case of inexact
	  number sequence (thanks to Toshihiro Morisaki).

2012-01-31  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/lazy.scm: More lazy sequence utilities.
	* doc/modgauche.texi: Documented gauche.lazy.

2012-01-29  Shiro Kawai  <shiro@acm.org>

	* lib/util/stream.scm (stream-count): Bug fix (thanks to KOGURO Naoki).

2012-01-27  Shiro Kawai  <shiro@acm.org>

	* Makefile.in, wirebuildlibs, configure.ac, gc/configure.ac,
	  */Makefile.in, ext/xlink, */tset.scm, src/main.c: Re-enable
	  out-of-source-tree build.  Just call top configure from
	  any directory and it should build and install with make &
	  make install.

2012-01-25  Shiro Kawai  <shiro@acm.org>

	* src/class.c (Scm_MethodApplicableForClasses),
	  lib/gauche/procedure.scm (applicable?): Added applicable?.
	* src/autoloads.scm, doc/corelib.texi, test/object.scm: Changed
	  accordingly.

2012-01-23  Shiro Kawai  <shiro@acm.org>

	* src/gauche/pthread.h: Fix for cygwin pthread: Real-time signals
	  are not available on cygwin, so we use SIGPWR for inter-thread
	  communication.  Nees to be documented.

	* src/Makefile.in: Exclude unnecessary object files in gc/ to be
	  linked to libgauche.so.

	* configure.ac, src/Makefile.in, src/gauche.h: The previous trick,
	  committed for Win32 thread support, to extract GC thread config
	  settings and adding it to gauche/config.h, doesn't work.  The extra
	  code won't be executed by running ./config.status.  So we changed
	  the strategy---at build time, we generate gauche/config_threads.h
	  from the GC's thread configuration.

2012-01-21  Shiro Kawai  <shiro@acm.org>

	* src/port.c (Scm__SetupPortsForWindows): Made implicit
	  AllocConsole() thread-safe for gosh-noconsole.
	* test/win-noconsole-threads.scm: Manual test for the above feature.

	* ext/threads/threads.scm (gauche-thread-type): Returns 'win32
	  on Windows/MinGW threads support.

2012-01-20  Shiro Kawai  <shiro@acm.org>

	* configure.ac, src/gauche/wthread.h, src/system.c, src/vm.c,
	  src/core.c, ext/threads/*, ext/util/queue.scm: Added support of
	  Windows thread on MinGW.  Run ./configure --enable-threads=win32
	  to enable the support.  Unit tests pass, but needs more test
	  with actual applications.

	* src/load.c (Scm_Require): Fix a hazard in parallel require case;
	  the loop around condition variable wait wasn't actually looped
	  due to the bug.  Thanks to Kirill Zorin for tracking this down.

	* src/core.c (finalizable): Fix to protect in the case that GC
	  is run before Gauche is fully bootstrapped.

2012-01-18  Shiro Kawai  <shiro@acm.org>

	* doc/*: Documented basic lazy sequence operations.
	* lib/gauche/lazy.scm (lappend): Added.  Will add more lazy
	  sequence utilities.

2012-01-08  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/generator.scm (grxmatch, port->char-generator)
	  (port->byte-generator): Added stream regexp match generator
	  grxmatch, and a couple of convenience procedures to read
	  from an input port.

2012-01-07  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/generator.scm (gcons*, gappend): Changed gcons -> gcons*,
	  for it's more general.  Modified gappend to delay autocoercing
	  the arguments, so that gappend can be used as a lightweight lazy
	  sequence concatenation.

2012-01-06  Shiro Kawai  <shiro@acm.org>

	* src/class.c (method_more_specific): Don't panic if
	  method-more-specific? gets two methods that can't be ordered;
	  It may be just an erroneous MOP code.  Now we throws an error
	  with descriptive messages.

2012-01-03  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/generator.scm: Allows generator operations to take
	  collections, which are implicitly coerced to generators, for
	  the convenience.

2011-12-27  Shiro Kawai  <shiro@acm.org>

	* lib/util/list.scm, src/liblist.scm, src/libdict.scm,
	  lib/gauche/common-macros.scm, src/autoloads.scm: Obsoleted
	  util.list; entries are moved to liblist, libdict and common-macros.
	  The module is kept for the backward compatibility, but its officially
	  removed from the document.

2011-12-26  Shiro Kawai  <shiro@acm.org>

	* src/gauche/wthread.h, src/gauche/vm.h, src/vm.c, src/signal.c,
	  ext/threads/mutex.c, ext/threads/threads.c, configure.ac:
	  Start adding Windows thread support on Gauche/MinGW, and improved
	  thread-terminate! semantics.  On POSIX, if real-time signal is
	  available, we reserve one signal (GAUCHE_PTHREAD_SIGNAL) to notify
	  termination request.  With the signal, the terminated thread can
	  shut itself down gracefully.  We also use vm->stopRequest mechanism
	  to terminate the thread.

2011-12-25  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/cise.scm (.if): Make sure '#if' stars from the
	  fresh line.
	* src/libsys.scm: The fd range check added recently was invalid on
	  Windows/MinGW (see the comment).  Conditionalized.

	* gc/*: Updated to gc7.2-alpha6.

	* src/compile.scm (quasiquote): Fixed to recognize unquote and
	  unquote-splicing hygienically.

	* lib/control/job.scm: Added 'cancellable' job flavor, which may not
	  be waitable but job-mark-killed! can be used on.  We need mutex
	  if we allow threads other than the job runner to change the job
	  status.  See the comment for the details.
	* lib/control/thread-pool.scm: Use cancellable jobs, for we might
	  want to kill them.

	* ext/threads/mutex.c, ext/threads/threads.scm:
	  (mutex-locker, mutex-unlocker): Added.
	  (with-locking-mutex): rewrite using above, and made it inline.
	  This change prevents with-locking-mutex from making closures
	  at runtime.

2011-12-24  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/generator.scm: Extended API
	* doc/modgauche.texi: Documeted gauche.generator.

2011-12-23  Shiro Kawai  <shiro@acm.org>

	* src/port.c (Scm_FdReady),
	  src/libsys.scm (sys-fdset-ref, sys-fdset-set!): Check if fd is
	  in the valid range.

2011-12-22  Shiro Kawai  <shiro@acm.org>

	* src/string.c (Scm_MaybeSubstring): Allow #f as start or end arguments,
	  for the convenience.

	* src/liblist.scm, libsrc/srfi-1.scm, lib/util/list.scm: Moved
	  take-right, drop-right, take!, drop-right!, take*, drop*,
	  take-right*, drop-right* and split-at* to the core.

2011-12-21  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/generator.scm (generate): Added coroutine-based
	  generator.
	* doc/modgauche.texi: Start adding generator documents.

2011-12-20  Shiro Kawai  <shiro@acm.org>

	* src/main.c: Added '-m module' option to specify the module where
	  the 'main' procedure is looked for when a script is loaded.
	* test/scripts.scm: Added a test for the above.  Eventually we can
	  add more tests for command-line options of gosh.

2011-12-18  Shiro Kawai  <shiro@acm.org>

	* src/string.c (Scm_StringBodyPosition): Deprecate Scm_StringPosition
	  since it is difficult to use in MT-safe way.  Introduced safer
	  Scm_StringBodyPosition.

2011-12-10  Shiro Kawai  <shiro@acm.org>

	* lib/control/job.scm (job-wait): fixed a bug that it looked result
	  where it should've looked status.
	  (job-run!, job-mark-killed!): Called condition-variable-broadcast!
	  with a wrong argument.  Patch for this and above bugs are from ayatoy.

2011-11-28  Shiro Kawai  <shiro@acm.org>

	* configure.ac, src/gauche/config.h.in (HAVE_CRT_EXTERNS_H),
	  src/system.c (Scm_Environ): Newer OSX doesn't allow to access
	  global environ variable directly; we should use _NSGetEnviron().

	* lib/gauche/cgen/cise.scm: Added .undef macro
	* src/libsys.scm: Fix for mingw.

	* configure.ac: Enable HAVE_SELECT on Windows/mingw, altohugh on it
	  select() can only be used on sockets.
	* src/system.c, src/port.c: Changed accordingly.

2011-11-26  Shiro Kawai  <shiro@acm.org>

	* src/*, ext/auxsys, lib/*, doc/*, libsrc/*: Code reorganization:
	  src/*.stub and src/*.scm files are merged, and then splitted
	  accodring to each function's feature instead of the module it
	  belongs.  This keeps related code together and eases maintenance.
	  The new sources are named as src/lib*.scm.
	    By this change, we hide some internal routines into gauche.internal;
	  which we couldn't do before, since each *.stub file could be
	  associated to one module.  Now we can switch the modules inside
	  precompiled scm files as we like.
	    We also merged ext/auxsys into core (mostly in libsys.scm), for
	  we no longer need them to be in an extension module.
	    We've already moved some list utilities from srfi-1 into core;
	  by this commit we do so more, and updated the document accordingly.
	    We also removed SCM_DEBUG_HELPER conditional; we've never had it
	  turned off, so we can just always keep those debug routines.  NB:
	  Those debug dump routines (%*-dump) are now in gauche.internal
	  module.
	* lib/gauche/cgen/precomp.scm: *Experimental*: Allow define-cproc
	  to appear as the toplevel form.  It is easier to read than always
	  putting them in inline-stub.  I might change my mind later, for
	  it may be confusing as well.

2011-11-24  Shiro Kawai  <shiro@acm.org>

	* src/code.c (Scm_CompiledCodeDump): Fixed a bug that can cause
	  infinite loop when printing lifted procedures.

	* src/compile.scm (subst-lvars): The traversal of $LET didn't update
	  lvar-initval, causing the following passes to fail to do some
	  closure elimination.
	  (pass1/define-inline): Wrong check of `closed' value caused
	  all define-inline'd procedures to go through the slower pass.
	  The above to bugs prevented the procedures defined in define-inline
	  from being optimized enough.  Notably, local tail-calls didn't
	  get optimized to loops.

2011-11-20  Shiro Kawai  <shiro@acm.org>

	* src/genconfig (gauche-config): Emit usage message to stderr instead
	  of stdout.  By this, feeding gauche-config output to sh wouldn't
	  confuse sh if you give incorrect option.

	* lib/gauche/cgen/stub.scm (<stub>): Fix the problem that cproc's
	  binding isn't inserted into the tmodule at the time of define-cproc,
	  but at the time of the final rendering.
	* lib/gauche/cgen/precomp.scm: Fixed a similar bug.

	* src/scmlib.scm (generator->lseq): Renamed from lseq to make
	  it more descriptive, since it turned out this function wouldn't
	  be used frequent enough to demand a short name.

2011-11-19  Shiro Kawai  <shiro@acm.org>

	* src/regexp.c (rc1_parse, rc3_rec): Fixed regexp parser and code
	  generateor to recognize BOL/EOL assertions within (?=...),
	  (?!...), (?<=...), (?<!...) and (?>...).  For '^' and '$, we
	  should parse these constructs as if they are stand-alone, no
	  matter where they appear.  That is, '^' appearing at the
	  beginning of these constructs are BOL assertions and '$' at
	  the end are EOL.  This is consistent to Perl and Oniguruma.
	  NB: The code that counted on the previous (buggy) behavior
	  may break by this change.

2011-11-11  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/vm/debugger.scm, src/autoloads.scm: Export
	  debug-print-(pre|post) and set them to be autoloaded.  These
	  symbols are inserted by debug-print macro.  If such a source
	  is pre-compiled, gauche.vm.debugger won't be autoloaded at
	  execute time unless we make debuf-print-(pre|post) autoloaded too.
	  This is not an ideal solution, for those procs are internal.

2011-11-06  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/tmodule.scm (<tmodule>, all-tmodules): Use a
	  parameter instead of a class slot to record tmodules encountered
	  during precompilatoin.  Class slots are global and fragile for
	  multiple invocation of cgen-precompile and/or MT.
	  (with-tmodule-recording): A macro to initialize the module list.
	* lib/gauche/cgen/precomp.scm, lib/gauche/cgen/stub.scm: Changed
	  accordingly.

2011-11-04  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/common-macros.scm (values->list): Support a common
	  pattern.  CL's multiple-value-list.
	* src/autoloads.scm (values->list): changed accordingly.

2011-10-29  Shiro Kawai  <shiro@acm.org>

	* src/lazy.c (Scm_ForceLazyPair): Fixed a bug that the second value
	  from the generator could have leaked out.

2011-10-28  Shiro Kawai  <shiro@acm.org>

	* ext/util/queue.scm (make-mtqueue, enqueue/wait!, dequeue/wait!):
	  Added support of zero-length mt-queue.  Zero-length queue cannot
	  hold any values, but can be used to synchronize producers
	  and consumers---a thread can directly hand a value to another
	  thread.  THIS IS AN INCOMPATIBLE CHANGE: It used to be that
	  zero max-length meant to be unlimited length.  Now you have to
	  give #f to max-length to make the mtqueue unlimited length.
	* ext/threads/test.scm: Tests added for zero-length queue.
	* lib/control/thread-pool.scm: Changed accordingly.

	* lib/rfc/http.scm (http-proxy): Added a parameter to specify the
	  default http proxy.

	* libsrc/file/util.scm (touch-file, touch-files): Extended to
	  take :time, :type and :create options; these are similar switches
	  the touch(1) command has.  Also, touch-files hasn't been exported
	  although the manual has its entry.
	* ext/file/test.scm: Added tests accordingly.

2011-10-24  Shiro Kawai  <shiro@acm.org>

	* src/regexp.h (ScmRegexpRec), src/regexp.c (rc3, Scm_RegExec):
	  Improved unanchored regexp search by skipping the input.  We
	  calculate a set of characters that can possibly match at the
	  beginning of the regex (lookahead set, or laset).  When we
	  advance the input pointer, we check the character and if it
	  isn't in the laset we can skip matching from that position.
	  We also adopt a strategy that when /A+B/ fails to match, where
	  A is a char or charset, and A and B has distinct laset,
	  then we can skip the input as long as it matches A.  These
	  strategy improves the performance greatly in commonly occurring
	  patterns, especially when the input is long.
	* test/regexp.scm, src/extlib.stub: Added some tests.

2011-10-17  Shiro Kawai  <shiro@acm.org>

	* src/scmlib.scm (make-case-lambda),
	  src/intlib.stub (make-case-lambda-dispatcher),
	  src/compile.scm (case-lambda): Changed case-lambda info vector
	  for better diagnostics; the first element now contains the
	  procedure name if available.
	  NB: Eventually we intend to change case-lambda to be a special
	  object instead of the current hack with subr.  The current way
	  of using info slot is temporary.
	* lib/gauche/procedure.scm (disasm): Adapted to the above change.

2011-10-16  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/regexp.scm (regexp-unparse): Handles '|' and control
	  characters properly.

2011-10-15  Shiro Kawai  <shiro@acm.org>

	* src/regexp.c (rc3_rec): Fixed the bug that (regexp-compile '(alt))
	  gets Bus Error.  Now we allow empty altenation.  Although such
	  AST never happens as a result of parsing string regexp, it may
	  be produced in programmatically generated AST.  An empty alternation
	  always fails.
	* lib/gauche/regexp.scm (regexp-unparse): When converting empty
	  alternation to a string, we use negative lookahead assertion (?!),
	  since such alternation can't be represented using '|' operator.
	  Also fixed a bug when converting empty assert/nassert nodes.

2011-10-05  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/json.scm (print-string): Fixed string writer bug that didn't
	  handle ASCII control characters and chars between [U+80,U+fff].

2011-09-30  Shiro Kawai  <shiro@acm.org>

	* src/lazy.c (Scm_ForceLazyPair): Added check of recursive forcing
	  to prevent self-deadlock.

2011-09-28  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/lazy.scm (lfilter): Added for the convenience.

	* lib/gauche/generator.scm (grange): Added grange for the convenience.

2011-09-16  Shiro Kawai  <shiro@acm.org>

	* src/lazy.c (Scm_DecomposeLazyPair), src/extlib.stub (%lazy-snoc),
	  src/scmlib.scm (%lcons), lib/gauche/common-macros.scm (lcons):
	  Added support of lcons, a primitive to write corecursive code.

2011-09-12  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h (SCM_PAIRP),
	  src/lazy.c (Scm_PairP, Scm_ForceLazyPair, Scm_MakeLazyPair),
	  src/class.c (SCM_CLASS_OF), src/extlib.stub (%lazy-cons),
	  src/scmlib.scm (lseq, lrange), lib/gauche/lazy.scm:
	  Added lazy sequence support.
	* lib/gauche/cgen/stub.scm, src/vm.c, src/gauche/vm.h,
	  src/vmcall.c, src/vminsn.scm: Modifications to make lazy sequences
	  forced safely.
	* src/Makefile.in: Make sure *.stubs are reprocessed if gauche.cgen.stub
	  is updated.  It is crucial for this commit, since the *.c files
	  generated by previous genstub aren't safe for lazy sequences.
	* test/primsyn.scm: force/delay tests are moved to test/lazy.scm.
	* test/lazy.scm, ext/gauche/test-lazy.scm: lazy evaluation tests.
	* test/lazy-performance.scm: some code for benchmarking.

	* src/vm.c (user_eval_inner): We no longer save the signal mask and
	  restore it in case of the error.  We don't see any reason to restore
	  the mask.  From the commit logs, this mask manipulation was
	  originally kept in 2004-03-15 change; it says, without restoring
	  the mask, a hang occurred on cygwin.  We can no longer reproduce
	  the hang, so we decided to drop this code.  It has now become
	  a major slowdown factor.

2011-08-25  Shiro Kawai  <shiro@acm.org>

	* src/system.c (Scm_GetTimeSpec): Fixed a bug that didn't handles
	  exact rationals properly (it was rounded down to the nearest
	  integer).
	* ext/threads/test.scm: Improved thread-sleep! test.  Thread-sleep!
	  was affected by the above bug.

2011-08-23  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass2/shrink-let-frame): A small optimization
	  possibly replaces let to nested function call.

2011-08-22  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/common-macros.scm ($): Incorporated the chained apply
	  macro into the core.  Note that the semantics is slightly changed;
	  we drop $* macro, and the $ and $* delimiters determines whether
	  apply to be used for the procedure *before* the delimiter.
	* src/autoloads.scm: Changed accordingly.
	* lib/gauche/experimental/app.scm: Now this is just a placeholder.

2011-08-17  Shiro Kawai  <shiro@acm.org>

	* src/gauche-package.in ("list"): "gauche-package list" now displays
	  packages that are installed by other versions of Gauche, as far
	  as it is abi-compatible to the current gauche version.

2011-08-11  Shiro Kawai  <shiro@acm.org>

	* src/promise.c: Renamed to lazy.c
	* src/lazy.c (Scm_Force): Made force thread-safe.  Now more than
	  one thread can call force simultaneously.
	* ext/threads/test.scm: Added tests for thread-safe force.

2011-08-10  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (lazy): Directly generates $ASM node, eliminating
	  the need of $PROMISE IFrom node.  We have to keep $PROMISE node
	  throughout 0.9.x series for the compatibility of precompiled
	  files in earlier 0.9.x versions, but it will go away in 1.0.

	* lib/gauche/cgen/literal.scm (<cgen-scheme-symbol>): Handle
	  unintered symbols.

	* src/code.c (Scm_CompiledCodeDump): The disassembler now shows
	  the closures lifted to the toplevel procedures.

2011-08-08  Shiro Kawai  <shiro@acm.org>

	* src/number.c (Scm_Quotient): Fixed a bug in the path of
	  inexact quotient calculation.  The path is
	  used by div and mod, relvealing the bug.

2011-08-05  Shiro Kawai  <shiro@acm.org>

	* release 0.9.2.

2011-08-02  Shiro Kawai  <shiro@acm.org>

	* libsrc/srfi-1.scm: Export procedures that are defined in the gauche
	  core.  They are not exported from the gauche module, but they should
	  be exported from srfi-1.

	* lib/rfc/uri.scm (uri-merge): Fix a bug when base-path is empty
	  and rel-path is relative.

2011-08-01  Shiro Kawai  <shiro@acm.org>

	* configure.ac, src/gauche/arith_x86_64.h: Added inline assembly
	  of fullword numberic operations for x86_64.
	* src/bignum.c: Some routines used incorrect type (long vs int) as
	  the argument for arith macros.  On ILP32 machines it didn't matter,
	  but on LP64 it does.

	* src/number.c (scm_mul): The previous version of overflow detection
	  of multiplying two longs depended on C's undefined behavior.
	  clang-llvm does certain optimizations as if the calculation never
	  overflows, and that's valid, since once calculation overflows the
	  result can be anything.  Fixed to use SMULOV macro in gauche/arith.h
	  which detects overflow reliably (but the portable fallback is
	  expensive).

2011-07-31  Shiro Kawai  <shiro@acm.org>

	* test/multibyte.scm, test/char.scm: Splitted multibyte tests
	  and char-only tests.  Character case mappings can be tested
	  separately, and we need more tests focused on characters anyway.

	* src/stdlib.stub (char-ci-cmp): Use foldcase to compare
	  case-insensitive character comparison, and support more than
	  2 arguments a la r6rs.
	  (char-cmp): support more than 2 args.

2011-07-30  Shiro Kawai  <shiro@acm.org>

	* doc/modgauche.texi: Documented gauche.cgen; now the API for
	  cgen.unit, cgen.literal and cgen.type are official.

	* lib/gauche/cgen/unit.scm: Dropped :pre-decl and automatic insertion
	  of "#include <gauche.h>".  If we let the module user to insert
	  "#include <gauche.h>", then we don't need pre-decl stuff and it's
	  conceptually simpler.
	* lib/gauche/cgen/stub.scm, lib/gauche/cgen/precomp.scm,
	  src/autoloads.scm, src/builtin-syms.scm: Changed accordingly.

	* lib/gauche/type.scm: Some integer stub types used SCM_EXACTP for
	  checking exact integers; that's an old convention.  After we have
	  ratnums, it must be checked with SCM_INTEGERP.  Fixed.

2011-07-27  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/generator.scm: Added gauche.generator experimentally.
	  API may change later.
	* ext/gauche/test-generator.scm: Tests for gauche.generator.

	* src/gauche/symbol.h (ScmSymbolRec), src/symbol.c (make_sym): Changed
	  'interned' field to 'flags' field for future extension.  See the
	  comment in symbol.h about the binary compatibility.
	* src/builtin-syms.scm: Changed accordingly.

2011-07-26  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen.scm: Include gauche.cgen.cise too.

	* configure.ac (ipv6): Turn on --enable-ipv6 by default.  To compile
	  on a platform that doesn't have getaddrinfo etc, say --disable-ipv6
	  explicitly.

2011-07-25  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/precomp.scm, lib/gauche/cgen/stub.scm,
	  lib/gauche/cgen/tmodule.scm: Dropped the dependency on an implicitly
	  defined local variable 'mod' in the init function.  In the precomp-
	  generated C source, a local variable ScmModule *mod used to be
	  defined to hold the module of the compiled source.  It's ugly
	  to depend on such implicit names, and also it was awkward to
	  handle the situation when multiple modules are defined in the
	  precompiled source.  Now, if you want to refer to the module
	  inside init functin, you can call Scm_CurrentModule().
	* ext/sparse/sparse.scm, ext/threads/threads.scm, ext/text/unicode.scm:
	  Changed accordingly.

	* configure.ac (multibyte): If --enable-multibyte is given without
	  ENCODING, assume utf-8 instead of euc-jp.

	* ext/net/addr.c: Allow comparing socket addresses based on the
	  content; that is, (equal? x y) => #t if x and y represents the
	  same address, even they are different instances.

	* configure.ac, ext/auxsys/auxsysconf.h.in: Check for clearenv()
	* ext/auxsys/auxsyslib.stub, ext/auxsys/auxsys.scm (sys-clearenv):
	  Support clearenv(3).  If we don't have it but have sys-unsetenv,
	  we define sys-clearenv using it.  To check availability, use
	  (or gauche.sys.clearenv gauche.sys.unsetenv) in cond-expand.
	  (sys-setenv): Fixed a bug that you couldn't omit the overwrite
	  optional argument.
	* src/autoloads.scm: Changed accordingly.

	* lib/rfc/cookie.scm (construct-cookie-string): Recognize :http-only
	  cookie attribute introduced in RFC6265.

	* src/write.c (format_proc): Allow ~* to position at the next to
	  the last argument.  (patch from leque.)

	* gc/libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/x86_64.h,
	  gc/configure.ac, gc/Makefile.in, configure.ac: Fix for MacOSX Lion
	  (patch from KOGURO Naoki).

2011-07-24  Shiro Kawai  <shiro@acm.org>

	* winnt/wix/* : Support Windows installer based on WiX.  This will
	  replace NSIS-based installer.
	* src/mingw-dist.sh: Changed to make wix installer instead of nsis
	  installer.

2011-07-20  Shiro Kawai  <shiro@acm.org>

	* src/char.c, src/char_attr.c, src/gauche/char_attr.h: Added
	  character category and case mapping tables according to Unicode
	  character database.  New/revised APIs: Scm_CharGeneralCategory,
	  Scm_CharAlphabeticP, Scm_CharUppercaseP, Scm_CharLowercaseP,
	  Scm_CharTitlecaseP, Scm_CharNumericP, Scm_CharUpcase,
	  Scm_CharDowncase, scm_CharTitlecase, Scm_CharFoldcase.
	* src/gauche/char_utf_8.h, src/gauche/char_euc_jp.h,
	  src/gauche/char_sjis.h, src/gauche/char_none.h: Some new encoding-
	  specific routines to handle the above functionality.
	* src/stdlib.stub: Changed char-alphabetic?, char-numeric?,
	  char-upper-case?, char-lower-case?, char-upcase and char-downcase
	  to use the new APIs.
	* src/extlib.stub: Added char-title-case?, char-titlecase,
	  char-foldcase, char-general-category.
	* src/gen-unicode.scm: A script to generate character attribute
	  tables from Unicode character database.  The generated files are
	  checked in to repos, so developers don't need to run this script
	  regularly.  Tables need to be regenerated only when Unicode is
	  updated.  To run this script, go down to src/ and do 'make char-data'
	  and follow the instructions.

	* ext/text/unicode.scm, ext/text/unicode_attr.h: text.unicode
	  module provides unicode-defined operations, including unicode
	  encoding conversions, grapheme-cluster and word segmentation,
	  and string-upcase, string-downcase, string-titlecase and
	  string-foldcase.

	* doc/corelib.texi, doc/modsrfi.texi, doc/modutil.texi: Added
	  description of new case handling scheme, text.unicode module,
	  and relation to srfi-13 string-upcase etc.

	* test/chars-strings.scm: Renamed from test/mb-chars.scm and added
	  more tests.

2011-07-13  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass4/scan): Fixed a bug that unnecessarily
	  marked dissolved lambda in pass4, confusing the later passes.

2011-07-09  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/procedure.scm, src/compile.scm, src/scmlib.scm:
	  Moved case-lambda handling into the core.  This is the initial
	  step towards aggresive inlining of case-lambda.
	* src/autoloads.scm: changed accordingly.
	* lib/util/queue.scm: changed to use case-lambda; we couldn't use
	  it because of inter-module dependency.  now case-lambda is in
	  core and we can use it here.

2011-06-30  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/json.scm (print-value, construct-json): Should handle with
	  empty list.  Patch from leque.

2011-06-27  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/redefutil.scm, test/object.scm: Fixed change-class
	  on class metaobjects to work.
	* src/class.c, src/gauche.h, src/objlib.scm: Added a mechanism to
	  'seal' the core slots of class metaobjects that are essential
	  for object system to work; for example, changing num-instance-slots
	  after some instances are created would cause disaster.  Now these
	  core slots can only be set during class initialization.

2011-06-11  Shiro Kawai  <shiro@acm.org>

	* src/port.c (coding_port_recognize_encoding): Fixed a bug in the
	  state machine of encoding magic comment; the lines weren't counted
	  correctly for \r-only or \r\c line endings.

2011-06-10  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub (integer-length): Fixed a bug in the edge
	  case on the boundary of fixnum/bignum switch.

2011-05-31  Shiro Kawai  <shiro@acm.org>

	* libsrc/file/util.scm (create-directory-tree): Fixed a bug
	  to treat content-less file spec.  Thanks to teppey for the fix.

2011-05-30  Shiro Kawai  <shiro@acm.org>

	* lib/control/thread-pool.scm (worker): Fixed a hazard that the
	  worker flagged it was done before queueing the result.
	  Thanks to enami for spotting this.

	* lib/rfc/json.scm (print-string): Fixed a bug that generates
	  incorrect json string if it contains double-quotes.

2011-05-28  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-60.scm: Added srfi-60 support.  Most of APIs are just
	  aliases or re-exports of Gauche's builtin bitwise operators.
	  There are also several new APIs.
	* doc/concepts.texi, doc/corelib.texi, doc/modsrfi.texi: Adjusted
	  accordingly.
	* test/srfi.scm: Tests for srfi-60 additional procedures.

2011-05-27  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub (logand, logior, logxor): Allows zero and one
	  argument a la SRFI-60.
	  (integer-length): Moved here, for we now have Scm_BitsHighest*
	  API and we can efficiently implement integer-length.
	* src/autoload.scm, lib/gauche/logical.scm: Removed integer-length.

	* src/number.c (Scm_LogNot, Scm_LogAnd, Scm_LogIor, Scm_LogXor):
	  The argument check was incorrect (probably a leftover from
	  the time we didn't have rationals), allowing rational numbers
	  to passed to bignum routines, causing crash.

2011-05-25  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/common-macros.scm (ecase): Added CL's ecase.
	* src/autoloads.scm: set ecase to be autoloaded.

2011-05-18  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/uri.scm (uri-parse): Added a procedure to resolve relative
	  URI.  Originally written by teppey.

2011-05-15  Shiro Kawai  <shiro@acm.org>

	* src/read.c (read_list_int): Fixed a bug regarding a dot followed
	  by non-space delimiting characters.

2011-04-29  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass1/extended-lambda): Dropped the support of
	  obsoleted keyword argument spec (var keyword init), in favor of
	  formally supported ((keyword var) init).   The former spec was never
	  supported officially, and the latter is supported officially since
	  0.9, so this change shouldn't affect the user code.
	* lib/gauche/cgen/precomp.scm (cgen-precompile),
	  lib/rfc/http.scm (http-request): Changed accordingly.

	* src/list.c (Scm_Reverse, Scm_ReverseX), src/stdlib.stub (reverse),
	  src/extlib.stub (reverse!): Experimentally added 2-argument reverse.
	  The rationale: If we consider (reverse xs) == (fold cons '() xs),
	  then definining (reverse xs tail) == (fold cons tail xs) looks
	  a natural extension.

	* libsrc/srfi-1.scm (append-reverse, append-reverse!): These are
	  effectively the same as 2-arg reverse and reverse!, so define them
	  accordingly.

	* src/list.c (Scm_MonotonicMerge1), src/extlib.stub (monotonic-merge):
	  Cleaned up API of Scm_MonotonicMerge, and monotonic-merge (the Scheme
	  proc is undocumented; the C API is kept during 0.9.x for the ABI
	  compatibility.)

	* test/list.scm, test/TESTS: Added more tests to list.scm and included
	  it in the standard tests.

	* src/objlib.scm (%expand-define-method): Support extended argument
	  specifications (:optional etc.) in define-method.

2011-04-28  Shiro Kawai  <shiro@acm.org>

	* src/scmlib.scm (map*): Added.
	* test/procedure.scm: Added tests for map*.

2011-04-22  Shiro Kawai  <shiro@acm.org>

	* src/string.c (substring): Fixed a bug that the range check
	  didn't take byterange into account.

2011-04-21  Shiro Kawai  <shiro@acm.org>

	* libsrc/file/util.scm (with-lock-file): Fixed stealing logic.

2011-04-19  Shiro Kawai  <shiro@acm.org>

	* libsrc/file/util.scm (with-lock-file): Added file-based
	  inter-process locking utility.
	* ext/file/test.scm: Added test for with-lock-file.

2011-04-10  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (quasiquote): Added support for zero or multi-
	  argument unquote/unquote-splicing.  They are R6RS compatible.

2011-03-30  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass3/optimize-call): Fixed a bug that may
	  introduce infinite loop in the compiler.

2011-03-24  Shiro Kawai  <shiro@acm.org>

	* ext/threads/thread.scm (atom, atomic, atomic-update!, atom-ref):
	  Added atom, a convenience wrapper for thread-safety.

2011-03-21  Shiro Kawai  <shiro@acm.org>

	* src/system.c (Scm_SysExec): Support SCM_EXEC_DETACHED flag to
	  detach the exec'ed process from the parent's process group.  Useful
	  for starting a daemon process.
	* src/syslib.stub (sys-exec, sys-fork-and-exec),
	  lib/gauche/process.scm (run-process): Support :detached keyword
	  argument.
	* test/system.scm: Added tests for :detached #t.

2011-03-15  Shiro Kawai  <shiro@acm.org>

	* libsrc/util/match.scm (gen): Reverting the change in 2010-05-29 to
	  avoid exponential growth of expansion time.  It turned out that
	  the change can introduce exponential growth of compilation time
	  in certain patterns.  (We still keep the change of 2011-03-06,
	  though).

2011-03-14  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/time.scm (time-this, time-these, time-these/report):
	  Dropped with-times introduced blow, and instead added comprehensive
	  benchmarking utilities inspired by Perl's Benchmark module.

2011-03-13  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass1/define-inline-finish): Fixed a bug that
	  affects inline expansion during precompilation.  See the comment
	  for the details.   The code since commit d6f23ad1 (2011-03-05)
	  until this fix should not be used to compile Gauche itself, since
	  it yields a corrupt compiler.

2011-03-12  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/time.scm (with-times): Added a new procedure to treat
	  the result of 'time' macro programatically.

2011-03-07  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass4/lift): Set lifted $lambda name
	  comprehensively as possible.  Since lifted lambdas don't have a
	  link to parent code, the scheme of deriving hierarchical name
	  in Scm_CompiledCodeFullName doesn't work.   Instead we give
	  the list (<toplevel-name> <name>) in each lifted $lambda node,
	  where <name> is the node's original name if any, or gensym'ed
	  name.

	* src/main.c (cleanup_main): Fixed -pload option; the original code
	  failed if gauche.vm.profile wasn't loaded.  Since we autoload
	  profiler-show-load-stats, we can evaluate it in the gauche module
	  and we don't need FIND_MODULE(gauche.vm.profile).

2011-03-06  Shiro Kawai  <shiro@acm.org>

	* libsrc/util/match.scm (inline-let, gen): Removed inline-let, since
	  it does the duplicate work with Gauche's compiler.  Also made
	  length>= as a global definition instead of local, since Gauche can
	  inline it anyway.

2011-03-05  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/vm/profiler.scm (entry-name): Workaround a problem when
	  case-lambda generates an output that can't be read back.

	* src/gauche/vm.h, src/intlib.stub, src/main.c: Added a compiler flag
	  -fno-lambda-lifting-pass (SCM_COMPILE_NO_LIFTING) to turn off
	  pass4 for troubleshooting.  Also renamed SCM_COMPILE_NO_PASS2OPT to
	  SCM_COMPILE_NO_POST_INLINE_OPT, for the pass numbers can be changed
	  (and indeed they were changed).

	* src/compile.scm (pass4): Revised pass4 to lift closures for
	  obvious cases (independent, and self-recursive calls).
	  We no longer have compile-toplevel-lambda, since a single toplevel
	  lambda can be compiled into multiple definitions because of lifted
	  lambdas.
	* src/precomp.scm (handle-define-macro): Changed not to use
	  compile-toplevel-lambda.

	* lib/gauche/listener.scm (listener-read-handler): Fixed a bug
	  that referenced undefined variable.
	* lib/gauche/cgen/stub.scm (process-body-spec): ditto.
	* ext/dbm/gdbm.scm (dbm-open), ext/dbm/ndbm.scm (dbm-open),
	  ext/dbm/odbm.scm (dbm-open): ditto.

	* src/extlib.stub (method-code), lib/gauche/procedure.scm (disasm):
	  Support disassembling generic functions and methods.

2011-02-28  Shiro Kawai  <shiro@acm.org>

	* Repository moved to git.

	* src/system.c (time_print): Fixed display when time-second is
	  negative.

2011-02-27  Shiro Kawai  <shiro@acm.org>

	* src/string.c (Scm_StringCmp): It is supposed to return either
	  -1, 0 or 1 if we want to use the value for generic compare,
	  but it could return values as if only its sign matters.

	* src/gauche/number.h (Scm_VMExactToInexact): Fixed a bug introduced
	  on 2010-06-19 that breaks the binary compatibility from 0.9.

2011-02-25  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/package.scm (get-all-version-paths): Fixed a bug that
	  caused an error if *load-path* contains a nonexistent path.

2011-02-24  Shiro Kawai  <shiro@acm.org>

	* ext/threads/threads.c (Scm_ThreadStop): Fixed a bug that prevented
	  timeout from working.

2011-02-23  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/test.scm (test-one-of, test-check): Added 'one-of' type
	  test result match.  Also add optional arg to test-check so that one
	  can customize fallback comparison procedure.
	* test/process.scm: Use test-one-of in checking exit status of "cat",
	  for it differs on Solaris.  Also make sure we execute the same
	  commands of ls, cat and grep to compare the results, by finding
	  absolute paths for them.

2011-02-22  Shiro Kawai  <shiro@acm.org>

	* configure.ac: Added special handling of CFLAGS on Solaris.  See
	  http://practical-scheme.net/chaton/gauche/a/2011/02/22#entry-4d6439f9-a10fb

2011-02-18  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive/info.scm, lib/text/info.scm: Support
	  bzip2-ed info files.

2011-02-10  Shiro Kawai  <shiro@acm.org>

	* lib/util/combinations.scm (combinations): Substituted for an
	  optimized version written by Teranishi-san
	  ( http://practical-scheme.net/wiliki/wiliki.cgi/teranishi ).

	* rfc/http.scm (with-connection, reset-http-connection): Added
	  tentative support of persistent connection.  Currently it doesn't
	  handle the case when the server abandons the connection---we
	  should detect it and retry.   Besides, the connection should be
	  reset if an error occurs during handling the communication.
	  Use with care, and do not assume this is the final behavior.
	  (receive-body): Changed the handling of the case when response size
	  is unknown.  Now we pass the receive handler #f in that case.  The
	  receive handler should read as much data as it want and need to call
	  the retriever thunk again.  The predefined *-receivers are adjusted
	  accordingly.

2011-02-05  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-42.scm (%replace-keywords): Made it hygiene.  The previous
	  versions failed when the inserted srfi-42-* symbols were not imported.

2011-02-02  Shiro Kawai  <shiro@acm.org>

	* src/number.c (algorithmR): Correct error estimation at the
	  normalized/denormalized boundary.  This avoids the infinite loop
	  while reading 2.2250738585072012e-308.

2011-01-17  Shiro Kawai  <shiro@acm.org>

	* lib/binary/ftype.scm, ext/binary/io.scm, ext/binary/test.scm:
	  Splitted foreign type stuff into separate module.  API naming is
	  still undecided.

2011-01-12  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/parameter.scm (%parameterize): Fixed another bug
	  that appear when the outer binding of a parameter object (not the
	  value of the parameter object) is altered during execution of
	  the body.

	* lib/gauche/portutil.scm (port->string, port->string-list): Fixes
	  a bug that these procs return prematurely if the input contains
	  an illegal octed sequence for the internal encoding.  Now they
	  return incomplete string(s).

	* src/stdlib.stub (numcmp): Fixed a bug that handles more than four
	  arguments incorrectly.

2011-01-09  Shiro Kawai  <shiro@acm.org>

	* src/system.c (Scm_NormalizePathname): Support '~' expansion on
	  Windows native platform.
	* libsrc/file/util.scm (home-directory): Use the above feature to
	  obtain the home directory.

2011-01-08  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/json.scm (construct-json): Allow optional output port,
	  for the consistency.

	* lib/control/thread-pool.scm: (<thread-pool>): Added shut-down slot.
	  (<thread-pool-shut-down>): A new condition raised by add-job!.
	  (thread-pool-results, thread-pool-shut-down?): External API.
	  (add-job!): Raises <thread-pool-shut-down> if the pool is shut down.
	  (termiante-all): Added cancel-queued-jobs keyword argument.
	  marks executing jobs to be killed when terminating threads forcibly.

2011-01-07  Shiro Kawai  <shiro@acm.org>

	* lib/control/thread-pool.scm (add-job!): Added timeout optional
	  argument, and made the default timeout behavior from returning
	  immediately to wait indefinitely.
	  (wait-all): Added timeout optional argument before check-interval
	  optional argument.
	  THESE ARE INCOMPATIBLE CHANGES.

2011-01-06  Shiro Kawai  <shiro@acm.org>

	* lib/binary/pack.scm (make-number-pack-dispatcher): Fixed a bug
	  that used peek-char to see if input reached at end.  As of 0.9.1,
	  the return value of peek-char is unspecified if the next input is
	  an invalid char, and the current impelemntation happened to
	  return #<eof> in such case.

	* libsrc/gauche/parameter.scm: Fixed a bug that the filter procedure
	  was called unintentionally when the old value was restored upon
	  exitting parameterize.
	  Also fixed another bug that appear when the parameterize body is
	  reentered.  See the added test in ext/gauche/test-parameter.scm.

2011-01-02  Shiro Kawai  <shiro@acm.org>

	* src/gauche/load.h, src/gauche/vm.h, src/load.c, src/vm.c:
	  Moved load-time dynamic environment stuff (load_history, load_next,
	  load_port out of ScmVM structure, and manage them by the parameter
	  slots.  It is inconvenient to have these thread-specific dynamic
	  enviornment within ScmVM, since we can't change them freely because
	  of the binary compatibility.  (We keep dummy slots in place of
	  these slots of ScmVM during 0.9.x series for binary compatibility,
	  though.)
	  New APIs in load.h: Scm_CurrentLoadHistory(), Scm_CurrentLoadNext(),
	  Scm_CurrentLoadPort(), to access these dynamic values.
	  Also start adding SCM_LOAD_MAIN_SCRIPT flag support (not functional
	  yet.)
	* src/stdlib.stub (load), src/extlib.stub (load-from-port,
	  current-load-history, current-load-next, current-load-port):
	  Changed accordingly.  A new keyword argument :main-script is
	  added to load and load-from-port to turn on SCM_LOAD_MAIN_SCRIPT
	  flag during loading.

	* src/module.c (Scm_FindBinding): Fixed a mpl search bug reported
	  by Ryo Akagi.  This is a quick fix, and may have negative
	  impact on Scm_FindBinding performance.  Need to come back later
	  to evaluate it.
	* test/module.scm: Added regression tests for the above bug.

2010-12-31  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass4): Some more preparation of lambda
	  lifting.  The feature is not completed yet, so pass4 is basicaly
	  no-op for the time being.

2010-12-24  Shiro Kawai  <shiro@acm.org>

	* ext/binary/io.scm, ext/binary/binarylib.scm: Experimentally
	  adding foreign struct infrastructure.  API is still fluid,
	  so do not count on the current state.

	* lib/gauche/record.scm (compute-get-n-set): Fixed a bug that
	  the slot index was calculated incorrectly when inheritance was
	  used.  It didn't affect if you only uses record accessors, but
	  it became visible when you tried to access the record with
	  slot-ref and slot-set!.   See the added tests in
	  ext/gauche/test-record.scm.

2010-12-23  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/uvlib.stub.tmpl (uvector-copy!): Added generic copy
	  procedure.

	* configure.ac, src/gauche/config.h.in (HAVE_LONG_LONG): Added check
	  for long long.

2010-12-22  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (Scm_NewVM): Fixed not to copy vm->cstack from proto
	  vm; they may contain a bogus stack value from a different thread.

2010-12-21  Shiro Kawai  <shiro@acm.org>

	* ext/util/queue.scm (list->queue): Fixed a bug that prevented
	  list->queue from working for any arguments.  :rest arguments
	  shouldn't have default value, since its default value is ()
	  by definition.  (But it should be reported as syntax error.)

2010-12-19  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm: Renamed pass4 -> pass5, and created pass4 for
	  free variable scanning for lambda lifting.  free-lvars procedure
	  is removed.  (The transition isn't completed yet.)
	* src/vminsn.scm (LOCAL-ENV-CLOSURES): Allow literal closure
	  to appear in the operand.

2010-12-16  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass3/optimize-call): Fixed an optimizer bug
	  that caused reset-lvars to be called on the same set of lvars
	  more than once, screwing up lvar counts.  See the added test
	  in test/primsyn.scm.

2010-12-15  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/precomp.scm: Allow toplevel closure to be a
	  compile-time literal.

	* src/vm.c (Scm_VMEval): Fixed a bug that made "eval"-ed expression
	  to be executed under the caller's local environment, instead of
	  toplevel environment.  Compilation was done in toplevel env, so
	  it didn't affect meaning of the program; however, closures created
	  at runtime got unnecessary environment.

	* src/compile.scm: Renamed Pass 3 to Pass 4, and Pass 2p to Pass 3,
	  since Pass 2p was actually a separate pass.

2010-12-14  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h (ScmBox), src/vminsn.scm (BOX), src/box.c: Added 'box'
	  object for mutable local variable optimization.
	* src/compile.scm, src/vminsn.scm: Changed pass3 to use boxes for
	  mutable local variables.

	* lib/gauche/regexp.scm (rxmatch-case): Allow (else => proc) form,
	  just like 'case'.

2010-12-12  Shiro Kawai  <shiro@acm.org>

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

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

	* DIST (doc): Needs some tweaking.  Maybe texi2html has changed.
	* doc/ja-init.pl: 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  <shiro@acm.org>

	* release 0.9.1

2010-12-10  Shiro Kawai  <shiro@acm.org>

	* 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/makeverslink.in: Create a symlinc from libgauche.so to
	  libgauche-0.9.so for the backward compatibility; extensions
	  compiled for 0.9 refers to libgauche.so, and they need to
	  be working after installation of 0.9.1.

	* configure.ac, */Makefile.in, src/genconfig.in:
	  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  <shiro@acm.org>

	* 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
	  string.

2010-12-08  Shiro Kawai  <shiro@acm.org>

	* 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  <shiro@acm.org>

	* lib/Makefile.in: Install rfc.json.

	* ext/peg/*, ext/Makefile.in, configure.ac: 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  <shiro@acm.org>

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

	* ext/template.configure.ac, ext/template.Makefile.in,
	  examples/mqueue-cpp/{Makefile.in,configure.ac},
	  examples/spigot/{Makefile.in,configure.ac}: Take care of the
	  case when Gauche is installed under pathnames with spaces.

2010-12-03  Shiro Kawai  <shiro@acm.org>

	* configure.ac, src/genconfig.in: 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
	  compatibility.
	* 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  <shiro@acm.org>

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

2010-11-29  Shiro Kawai  <shiro@acm.org>

	* 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  <shiro@acm.org>

	* 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  <shiro@acm.org>

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

2010-11-24  Shiro Kawai  <shiro@acm.org>

	* ext/windows/*, ext/configure.in, configure.ac: Added os.windows
	  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  <shiro@acm.org>

	* configure.ac, src/Makefile.in: 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
	  platform-dependence.
	* 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
	  argument.

2010-11-22  Shiro Kawai  <shiro@acm.org>

	* src/genconfig.in: 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/setup.nsi.in: Adds $INSTDIR\bin to the PATH on
	  installation.

	* 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
	  application.
	* configure.ac, src/Makefile.in: Changed accordingly.
	* winnt/nsis/setup.nsi.in: 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  <shiro@acm.org>

	* 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/genconfig.in (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  <shiro@acm.org>

	* 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
	  platforms.

	* 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  <shiro@acm.org>

	* 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  <shiro@acm.org>

	* 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  <shiro@acm.org>

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

2010-10-15  Shiro Kawai  <shiro@acm.org>

	* 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  <shiro@acm.org>

	* 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 http://ssax.cvs.sourceforge.net/viewvc/ssax/sxml-tools/txpath.scm?r1=1.6&r2=1.7
	  Fix from teppey.

2010-09-18  Shiro Kawai  <shiro@acm.org>

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

2010-09-12  Shiro Kawai  <shiro@acm.org>

	* 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  <shiro@acm.org>

	* 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
	  enami.

	* 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  <shiro@acm.org>

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

2010-08-04  Shiro Kawai  <shiro@acm.org>

	* 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  <shiro@acm.org>

	* 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  <shiro@acm.org>

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

2010-06-30  Shiro Kawai  <shiro@acm.org>

	* 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  <shiro@acm.org>

	* 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  <shiro@acm.org>

	* 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  <shiro@acm.org>

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

2010-06-08  Shiro Kawai  <shiro@acm.org>

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

2010-06-07  Shiro Kawai  <shiro@acm.org>

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

2010-05-29  Shiro Kawai  <shiro@acm.org>

	* 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  <shiro@acm.org>

	* 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  <shiro@acm.org>

	* 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  <shiro@acm.org>

	* 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  <shiro@acm.org>

	* 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
	  error.

2010-05-13  Shiro Kawai  <shiro@acm.org>

	* 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  <shiro@acm.org>

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

2010-05-11  Shiro Kawai  <shiro@acm.org>

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

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

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

2010-05-10  Shiro Kawai  <shiro@acm.org>

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

2010-05-04  Shiro Kawai  <shiro@acm.org>

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

2010-05-03  Shiro Kawai  <shiro@acm.org>

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

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

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

2010-05-02  Shiro Kawai  <shiro@acm.org>

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

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

2010-05-01  Shiro Kawai  <shiro@acm.org>

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

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

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

2010-04-30  Shiro Kawai  <shiro@acm.org>

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

2010-04-25  Shiro Kawai  <shiro@acm.org>

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

2010-04-21  Shiro Kawai  <shiro@acm.org>

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

2010-04-20  Shiro Kawai  <shiro@acm.org>

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

2010-04-19  Shiro Kawai  <shiro@acm.org>

	* configure.ac, src/gauche/config.h.in: Added GNU/kfreebsd and
	  GNU/Hurd support.  Patch from NIIBE Yutaka.

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

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

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

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

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

2010-04-18  Shiro Kawai  <shiro@acm.org>

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

2010-04-13  Shiro Kawai  <shiro@acm.org>

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

2010-04-11  Shiro Kawai  <shiro@acm.org>

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

2010-04-08  Shiro Kawai  <shiro@acm.org>

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

2010-04-07  Shiro Kawai  <shiro@acm.org>

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

2010-03-30  Shiro Kawai  <shiro@acm.org>

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

2010-03-28  Shiro Kawai  <shiro@acm.org>

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

2010-03-25  Shiro Kawai  <shiro@acm.org>

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

2010-03-22  Shiro Kawai  <shiro@acm.org>

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

2010-03-09  Shiro Kawai  <shiro@acm.org>

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

2010-02-27  Shiro Kawai  <shiro@acm.org>

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

	* ext/threads/threads.scm, ext/threads/Makefile.in:
	  Integrated thrlib.stub into threads.scm.

2010-02-24  Shiro Kawai  <shiro@acm.org>

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

2010-02-23  Shiro Kawai  <shiro@acm.org>

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

2010-02-23  Shiro Kawai  <shiro@acm.org>

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

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

2010-02-22  Shiro Kawai  <shiro@acm.org>

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

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

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

2010-02-21  Shiro Kawai  <shiro@acm.org>

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

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

2010-02-20  Shiro Kawai  <shiro@acm.org>

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

2010-02-19  Shiro Kawai  <shiro@acm.org>

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

	* INSTALL.in: switched to utf-8.

2010-02-12  Shiro Kawai  <shiro@acm.org>

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

2010-02-06  Shiro Kawai  <shiro@acm.org>

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

2010-02-05  Shiro Kawai  <shiro@acm.org>

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

	* doc/gauche-install.1.in, doc/gauche-package.1.in,
	  doc/gauche-cesconv.1.in: Added these manpages based on the ones
	  provided by Jens Thiele.
	* doc/gosh.1.in, doc/gauche-config.1.in: Updated.
	* configure.ac: Changed to process the added manpages.

2010-02-02  Shiro Kawai  <shiro@acm.org>

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

2010-01-21  Shiro Kawai  <shiro@acm.org>

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

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

2010-01-18  Shiro Kawai  <shiro@acm.org>

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

2010-01-17  Shiro Kawai  <shiro@acm.org>

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

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

2010-01-16  Shiro Kawai  <shiro@acm.org>

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

2010-01-15  Shiro Kawai  <shiro@acm.org>

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

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

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

2010-01-10  Shiro Kawai  <shiro@acm.org>

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

2010-01-09  Shiro Kawai  <shiro@acm.org>

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

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

2010-01-08  Shiro Kawai  <shiro@acm.org>

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

2010-01-07  Shiro Kawai  <shiro@acm.org>

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

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

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

2010-01-05  Shiro Kawai  <shiro@acm.org>

	* libsrc/file/util.scm (temporary-directory): Make this 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/genconfig.in: Use unique name for temporary file to avoid
	  race condition when make is run in parallel.

2010-01-04  Shiro Kawai  <shiro@acm.org>

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

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

2010-01-03  Shiro Kawai  <shiro@acm.org>

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

2009-12-30  Shiro Kawai  <shiro@acm.org>

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

2009-12-29  Shiro Kawai  <shiro@acm.org>

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

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

2009-12-28  Shiro Kawai  <shiro@acm.org>

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

2009-12-22  Shiro Kawai  <shiro@acm.org>

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

2009-12-21  Shiro Kawai  <shiro@acm.org>

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

2009-12-16  Shiro Kawai  <shiro@acm.org>

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

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

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

2009-12-15  Shiro Kawai  <shiro@acm.org>

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

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

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

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

2009-12-14  Shiro Kawai  <shiro@acm.org>

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

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

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

2009-12-13  Shiro Kawai  <shiro@acm.org>

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

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

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

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

2009-12-12  Shiro Kawai  <shiro@acm.org>

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

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

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

2009-12-11  Shiro Kawai  <shiro@acm.org>

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

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

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

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

2009-12-10  Shiro Kawai  <shiro@acm.org>

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

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

2009-12-09  Shiro Kawai  <shiro@acm.org>

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

2009-12-04  Shiro Kawai  <shiro@acm.org>

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

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

2009-11-30  Shiro Kawai  <shiro@acm.org>

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

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

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

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

2009-11-29  Shiro Kawai  <shiro@acm.org>

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

2009-11-28  Shiro Kawai  <shiro@acm.org>

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

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

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

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

2009-11-25  Shiro Kawai  <shiro@acm.org>

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

2009-11-23  Shiro Kawai  <shiro@acm.org>

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

2009-11-21  Shiro Kawai  <shiro@acm.org>

	* release 0.9

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

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

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

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

2009-11-19  Shiro Kawai  <shiro@acm.org>

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

2009-11-18  Shiro Kawai  <shiro@acm.org>

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

2009-11-15  Shiro Kawai  <shiro@acm.org>

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

2009-11-11  Shiro Kawai  <shiro@acm.org>

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

2009-11-10  Shiro Kawai  <shiro@acm.org>

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

2009-11-03  Shiro Kawai  <shiro@acm.org>

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

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

2009-10-28  Shiro Kawai  <shiro@acm.org>

	* ext/net/net.c, ext/net/net.ac, src/gauche/config.h.in
	  (HAVE_STRUCT_IFREQ_IFR_IFINDEX, HAVE_STRUCT_IFREQ_IFR_INDEX):
	  FreeBSD7.2 has ifreq.ifr_index instead of ifreq.ifr_ifindex,
	  so we check which is available.  Patch from Naohiro NISHIKAWA.

2009-10-27  Shiro Kawai  <shiro@acm.org>

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

2009-10-26  Shiro Kawai  <shiro@acm.org>

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

2009-10-25  Shiro Kawai  <shiro@acm.org>

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

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

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

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

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

2009-10-24  Shiro Kawai  <shiro@acm.org>

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

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

2009-10-21  Shiro Kawai  <shiro@acm.org>

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

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

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

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

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

2009-10-20  Shiro Kawai  <shiro@acm.org>

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

2009-10-19  Shiro Kawai  <shiro@acm.org>

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

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

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

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

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

2009-10-18  Shiro Kawai  <shiro@acm.org>

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

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

2009-10-17  Shiro Kawai  <shiro@acm.org>

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

2009-10-16  Shiro Kawai  <shiro@acm.org>

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

2009-10-13  Shiro Kawai  <shiro@acm.org>

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

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

2009-10-11  Shiro Kawai  <shiro@acm.org>

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

2009-10-10  Shiro Kawai  <shiro@acm.org>

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

2009-10-09  Shiro Kawai  <shiro@acm.org>

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

2009-10-08  Shiro Kawai  <shiro@acm.org>

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

2009-10-07  Shiro Kawai  <shiro@acm.org>

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

2009-09-29  Shiro Kawai  <shiro@acm.org>

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

2009-09-26  Shiro Kawai  <shiro@acm.org>

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

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

2009-09-24  Shiro Kawai  <shiro@acm.org>

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

2009-09-23  Shiro Kawai  <shiro@acm.org>

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

2009-09-21  Shiro Kawai  <shiro@acm.org>

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

2009-09-19  Shiro Kawai  <shiro@acm.org>

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

2009-09-05  Shiro Kawai  <shiro@acm.org>

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

2009-08-26  Shiro Kawai  <shiro@acm.org>

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

2009-08-25  Shiro Kawai  <shiro@acm.org>

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

2009-08-23  Shiro Kawai  <shiro@acm.org>

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

2009-08-21  Shiro Kawai  <shiro@acm.org>

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

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

2009-08-20  Shiro Kawai  <shiro@acm.org>

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

2009-08-19  Shiro Kawai  <shiro@acm.org>

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

2009-07-28  Shiro Kawai  <shiro@acm.org>

	* src/read.c (read_string),
	  src/gauche/char_*.h (SCM_CHAR_EXTRA_WHITESPACE_INTRALINE):
	  Fully support all intraline whitespace characters.

2009-07-27  Shiro Kawai  <shiro@acm.org>

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

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

2009-07-26  Shiro Kawai  <shiro@acm.org>

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

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

2009-07-25  Shiro Kawai  <shiro@acm.org>

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

2009-07-24  Shiro Kawai  <shiro@acm.org>

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

2009-07-06  Shiro Kawai  <shiro@acm.org>

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

2009-07-03  Shiro Kawai  <shiro@acm.org>

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

2009-07-02  Shiro Kawai  <shiro@acm.org>

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

2009-06-28  Shiro Kawai  <shiro@acm.org>

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

2009-06-26  Shiro Kawai  <shiro@acm.org>

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

2009-06-25  Shiro Kawai  <shiro@acm.org>

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

2009-06-24  Shiro Kawai  <shiro@acm.org>

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

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

2009-06-15  Shiro Kawai  <shiro@acm.org>

	* src/gauche/vm.h (ScmVM): Use of queueNotEmpty flag had a race
	  condition.  We ditched it and introduced separate flags for
	  atomicity.
	  Also dropped unused SCM_VM_BLOCKED state and introduced
	  SCM_VM_STOPPED state; the former is for blocked on system calls,
	  but it's too expensive to change the state for every syscall.
	  SVM_VM_STOPPED is for being stopped by other thread for debugging.
	* src/core.c, src/signal.c, src/extlib.stub: Changed accordingly.

	* src/vm.c (process_queued_requests),
	  ext/threads/threads.c (Scm_ThreadStop, Scm_ThreadCont),
	  ext/threads/thrlib.stub (thread-stop!, thread-cont!):
	  Implemented a hand-shake protocol to stop/continue a thread from
	  another thread.
	* ext/threads/thrlib.stub (thread-state): Added.

2009-06-07  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/http.scm (http-put, http-delete): Added. Patch from illness-P.

2009-06-01  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/ftp.scm (ftp-size): Adjust transfer-type by the connection's
	  transfer-type before sending ftp SIZE request; the value is affected
	  by transfer-type, and some ftpd rejects SIZE request in ASCII mode
	  (since the server needs to scan the file to calculate effects of
	  CRLF conversions).

2009-05-31  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/portutil.scm (copy-port): Make SIZE argument to accept
	  zero as a valid size; previously zero meant no size limit.  This
	  argument was undocumented, so I hope this change won't affect
	  existing code.

2009-05-30  Shiro Kawai  <shiro@acm.org>

	* lib/www/cgi.scm (cgi-main): Change buffering mode of the current
	  error port so that httpd error log will be cleaner.

2009-05-20  Shiro Kawai  <shiro@acm.org>

	* ext/net/netaux.scm (call-with-client-socket): Added :input-buffering
	  and :output-buffering keyword arguments.

2009-05-02  Shiro Kawai  <shiro@acm.org>

	* src/gauche-package.in (compile): Fix a problem when --rpath-flag
	  is empty (e.g. on OSX)

2009-04-30  Shiro Kawai  <shiro@acm.org>

	* doc/corelib.texi (atan): fix description of 2-argument atan.
	  (atan y x) and (atan (/ y x)) are equivalent only when x and
	  y are both nonegative.  Rewrote to use R5RS's definition.

2009-04-29  Shiro Kawai  <shiro@acm.org>

	* src/list.c, src/gauche.h (Scm_ArrayToListWithTail): Added new API.

	* src/proc.c: Added 'optcount' slot to the procedure object.

	* lib/gauche/procedure.scm (case-lambda),
	  src/intlib.stub (make-case-lambda-dispatcher): Rewrote case-lambda
	  implemetation to take advantage of non-consing optional arguments
	  (i.e. optional > 1).  Simple benchmark showed 20x-80x speedup.

2009-04-27  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/precomp.scm (compile-toplevel-form): Instead of
	  matchin toplevel define/define-macro/... literally, we override
	  special form definitions within compile-module to hook the special
	  actions.  The former approach doesn't work if those special forms
	  are generated as the result of macro expansion.
	  The new approach may bread if the compiled source overrides
	  those special forms as well.  See the comment near
	  "Special form handlers" for the details.

2009-04-24  Shiro Kawai  <shiro@acm.org>

	* src/gauche-package.in (compile),
	  lib/gauche/package/compile (gauche-package-compile)
	  (gauche-package-link):
	  Added --gauche-builddir option / :gauche-builddir keyword arg
	  to allow compiling extension using not-yet-installed Gauche.

	* src/core.c (Scm_SimpleMain): Added for the convenience of
	  creating a compiled binary that kicks a Gauche script.

2009-04-23  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h: include scmconst.h.

	* lib/gauche/cgen/literal.scm (<cgen-scheme-real>): properly handles
	  inifinity and NaN flonum constants.

2009-04-22  Shiro Kawai  <shiro@acm.org>

	* src/system.c (Scm_SysExec),
	  src/syslib.stub (sys-exec, sys-fork-and-exec): Added support to
	  chdir() before exec(), by :directory keyword argument.
	  Dropped support of ancient-style API (sys-exec cmd args iomap).
	* lib/gauche/process.scm (run-process): Added :directory keyword
	  argument.

2009-04-21  Shiro Kawai  <shiro@acm.org>

	* ext/sparse/ctrie.c (CompactTrieDelete): Fixed a bug that failed
	  to shrink tree properly.
	  (CompactTrieCheck): Added consistency checking routine.
	  (CompactTrieCopy): Added copy operation.
	* ext/sparse/spvec.[ch]: Added SparseVectorCopy.
	* ext/sparse/sptab.[ch]: Added SparseTableCopy. Fixed a bug in
	  SparseTableAdd in the edge case when hash keys conflict.
	* ext/sparse/sparse.scm (sparse-table-copy, sparse-vector-copy):
	  Added.

2009-04-20  Shiro Kawai  <shiro@acm.org>

	* ext/sparse/sparse.scm: Added *-update!, *-push! and *-pop!.

	* lib/gauche/cgen/stub.scm (cgen-genstub): Moved genstub main
	  functionarity here.
	* src/genstub: only command-line processing remains.

2009-04-19  Shiro Kawai  <shiro@acm.org>

	* ext/sparse/spvec.[ch], ext/sparse/sparse.scm (sparse-vector-inc!):
	  Experimentally added.
	  (CompactTrieClear): Fixed a bug that segfaults when ctrie is empty.

2009-04-18  Shiro Kawai  <shiro@acm.org>

	* src/gauche/bits_inline.h (Scm__CountBitsInWord): Faster code.
	  (Benchmarks on Core2 Quad Q6600 2.4GHz 64bit: 11ns -> 6.2ns,
	   Core Duo L2400 1.66GHz 32bit: 10ns -> 8ns)

	* ext/sparse/spvec.[ch], ext/sparse/sparse.scm: Added sparse uniform
	  vector support.

2009-04-17  Shiro Kawai  <shiro@acm.org>

	* src/gauche/bits.h: Added SCM_BITS_TEST_IN_WORD etc. for single-
	  word bit manipulation.
	* ext/sparse/spvec.[ch], ext/sparse/sparse.scm: Revised implementation
	  of sparse vector; dropped extra leaf array and let it store values
	  directly in the ctrie's leaf node, which showed better performance
	  and memeory usage.  Added delete!, exists? and iterators.

2009-04-16  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/http.scm (receive-body-nochunked): Fixed the bug that made
	  http-get hang when Content-Length is 0.  Patch from kzfm1024.

	* src/compile.scm (pass1/extended-lambda),
	  lib/gauche/cgen/precomp.scm (cgen-precompile, cgen-precompile-multi):
	  precomp.scm has been using a new keyword arg syntax in extended
	  lambda (the one compatible to CL's), but that prevents svn trunk
	  from compiling on 0.8.14 since it doesn't understand the new syntax.
	  So we reverted the offending part temporarily, and changed
	  compile.scm to allow both syntax; they should be gone once we
	  roll out the next release.
	  (NB: You need fresh 0.8.14 installed to compile this revision)

2009-04-15  Shiro Kawai  <shiro@acm.org>

	* ext/sparse/sparse.scm, ext/sparse/sptab.c: Implemented dictionary
	  protocol to <sparse-table>.
	  (sparse-table-exists?): added.

2009-04-14  Shiro Kawai  <shiro@acm.org>

	* ext/auxsyslib.stub, ext/auxsys.scm, src/syslib.stub, src/autoloads.scm
	  (sys-chown, sys-lchown): Moved these from auxsys to core.  The
	  primary motivation is to avoid file.util depending on auxsys
	  (the dependency causes a build problem).  But in fact, I don't
	  remember why I factored these out to auxsys.  Since loading time
	  isn't much issue now, probably I should consider merging all auxsys
	  into core again.

	* ext/net/netlib.stub (socket-sendmsg, socket-buildmsg, socket-ioctl),
	  ext/net/net.c (Scm_SocketSendMsg, Scm_SocketBuildMsg,
	  Scm_SocketIoctl): Added these low-level stuff.  SocketIoctl only
	  supports SIOCGIFINDEX for now.
	* ext/net/net.ac, src/gauche/configure.h.in (HAVE_NET_IF_H,
	  HAVE_STRUCT_IFREQ): Added these checks to support socket-ioctl.

2009-04-10  Shiro Kawai  <shiro@acm.org>

	* libsrc/file/util.scm (create-directory-tree):   Make :owner and
	  :group work with :symlink to change symlink's owner/group instead
	  of the file pointed by it.  Note that :mode is ignored if :symlink;
	  we may honor :mode on systems that has lchmod in future.
	  (check-directory-tree): Fix bug in attribute check.

	* src/gauche-install.in: Changed -p option to take actual path prefix
	  instead of the number of path components to strip.  It is rather
	  useful to make it so to strip $(srcdir) in the make rules.

	* src/precomp, lib/gauche/cgen/precomp.scm: Support multiple Scheme
	  sources to precompile into single DSO.  Each source generates
	  individual *.sci file, which includes dynamic-load form with
	  :init-function to initialize the corresponding part of DSO.
	  It is the key to solve the dependency problem.
	  The API and functionality are not fixed yet; especially we need
	  to redesign naming convention of init function name, since currently
	  we can't have more than one source file with the same basename
	  (e.g. foo/bar.scm and baz/bar.scm).

2009-04-09  Shiro Kawai  <shiro@acm.org>

	* src/load.c (Scm_DynLoad): Allow multiple initialization function
	  in a DSO, in order to support precompiling multiple Scheme sources
	  (modules) into single DSO.

2009-04-07  Shiro Kawai  <shiro@acm.org>

	* src/load.c (Scm_DynLoad): Turned the obsoleted third argument
	  into 'flags' argument for future extension.

	* src/read.c (read_shebang): Fixed a problem that left incorrect
	  VM's numVals after calling shebang handler.

2009-04-06  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/precomp.scm (check-first-form-is-define-module):
	  We can't read entire source first, since it may contain srfi-10
	  extended reader syntax precomp is not aware of.  Instead we just
	  read the first sexp to check define-module, then read and process
	  forms one by one.

	* ext/*: Removed dependency on ext/uvector.  Extension modules only
	  need the uvector features built into core, so they don't need
	  to link DSO in ext/uvector.  Now we can avoid hairy dependency
	  issues at build time.

2009-04-05  Shiro Kawai  <shiro@acm.org>

	* ext/*: Modified to match the new naming convention of DSO files
	  and generated scheme interface files (except uvector, for some
	  external modules depend on the name "libgauche-uvector.so" yet).
	  Also removed *_head.c/*_tail.c magics; they are no longer relevant
	  with modern compilers.

	* src/precomp: Support --strip-prefix and --strip-prefix-all options.
	  Added short options.

	* lib/gauche/cgen/precomp.scm: Recognize export-if-defined form.

	* src/genconfig.in: Write to tmp file then rename.  Otherwise
	  parallel make may grab a partially written file and fail.

2009-04-04  Shiro Kawai  <shiro@acm.org>

	* src/precomp, lib/gauche/cgen/precomp.scm: Reworked API.  Since
	  'ext-module' should be generated for each scheme file that
	  implements individual modules, there's no point splitting
	  cgen-with-ext-module API.  For the convenience of converting
	  Scheme libraries into precompiled DSO + ext-module file, we set
	  a new convention: A Scheme library "foo/bar.scm" is to be
	  precompiled into "foo--bar.so" and "foo/bar.sci".

	  Since we can now infer ext-module file name, --ext-module option
	  for precomp isn't a necessary condition to generate ext-module
	  file and to generate extention initializer.  Now ext-module
	  file is generated if the source contains define-module form
	  at the beginning, and extension initializer is generated by
	  --ext-main option.  The --ext-module option is left mainly for
	  backward compatibility.

2009-04-02  Shiro Kawai  <shiro@acm.org>

	* src/load.c (Scm__InitLoad): Recognize "sci" (Scheme Interface)
	  as a valid suffix as well as traditional "scm".  "sci" takes
	  precedence, and to be used for generated interface files by
	  the precompiler.
	  (Scm_Require): Fixed where it assumed "scm" suffix.

	* src/precomp: Renamed from gencomp to reflect its function.
	* */Makefile.in: Changed accordingly.

	* src/gauche-install.in: Added -p option.
	* test/scripts.scm: Start adding tests for script utilities.

2009-04-01  Shiro Kawai  <shiro@acm.org>

	* libsrc/file/util.scm (create-directory-tree, check-directory-tree):
	  Added.

2009-03-31  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass1/extended-lambda): Fixed the case when
	  :rest and (:optional and/or :key) are both specified.

	* src/scmlib.scm (exit-handler): Let the default exit handler add
	  newline to the output.

2009-03-30  Shiro Kawai  <shiro@acm.org>

	* src/gencomp, lib/gauche/cgen/precomp.scm: Some modifications to
	  support muliple scm files into one DSO case.  This version is still
	  not good enough; if the source consists of multiple modules,
	  each modules should have corresponding ext-module file instead of
	  just one in the current version.  But then, who is responsible
	  to load the common DSO?  Trying to find better pattern.

2009-03-28  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/literal.scm (<cgen-scheme-string>): Properly
	  escape emitted C string constants.

2009-03-27  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/literal.scm, lib/gauche/cgen/literal-uv.scm:
	  Added support for uvector literals.  (NOTE: To build this revision
	  you have to use 0.8.14 as host Gauche.  The bug in %uvector-ref
	  inlining support, which was fixed by the previous commit, would
	  interfere with this module.  See also the comment in literal-uv.scm
	  and don't forget to merge it into literal.scm after releasing the
	  next version.)

	* src/extlib.stub (uvector-length, uvector-immutable?, SCM_UVECTOR_*):
	  Expose some more uvector stuff here to support uvector literal
	  in cgen.

	* src/compile.scm (%uvector-ref): Fix the inliner to emit UVEC-REF
	  only when 'type' arg is a constant integer.

2009-03-26  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/precomp.scm (cgen-with-ext-module): ensure the
	  directory to put ext module file.

	* lib/gauche/cgen/literal.scm (cgen-make-literal)
	  (<cgen-user-defined-type>, infer-literal-handler): Allow precompiler
	  to embed a constant value of user-defined type, as far as the type
	  has external representation using SRFI-10 syntax.
	* src/read.c (Scm_GetReaderCtor), src/extlib.stub (%get-reader-ctor):
	  Added interface to obtain reader constructor.
	* src/read.c (Scm_DefineReaderCtor): Added an argument for future
	  extension of making reader-ctor module-aware.

	* lib/gauche/cgen/precomp.scm: Removed old cruft and reorganized
	  the source a bit.

	* src/module.c (Scm_MakeModule): Made anonymous module name's name
	  to #f instead of '|#|.  I planned this change long time ago, but
	  apparently forgot to implement it.   It shouldn't affect existing
	  code.

2009-03-25  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h (SCM_IGNORE_RESULT): fix again to properly fool gcc.
	* src/gencomp, lib/gauche/cgen/precomp.scm: Moved gencomp functionality
	  into gauche.cgen.precomp module.

2009-03-23  Shiro Kawai  <shiro@acm.org>

	* ext/sparse/sparse.scm (sparse-table-fold): fix a bug about the end
	  marker.
	* ext/sparse/spvec.c (g_desc): elementAtomic should be FALSE.

2009-03-22  Shiro Kawai  <shiro@acm.org>

	* ext/sparse: Renamed spvector for sparse-vector and sptable for
	  sparse-table.  It's more verbose, but abbrev form seems to lack
	  consistency.

2009-03-21  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/stub.scm (process-body): Fix the case when
	  C routine calls Scm_Values*.  In such case, the stub generator
	  doesn't need to generate Scm_Values* code, but just passes
	  the return value from C routine as if it returns a single value.

	* src/write.c (Scm_Vprintf): Support '*' in the precision and width
	  position of the format directives.

	* src/hash.c (insert_entry): Clears old bucket array when hashtable
	  is extended, in order to reduce inadvertent retention of garbages.
	  (Scm_HashString): Allow modulo == 0.

	* ext/sparse: Added sparse data structures (initially just a sparse
	  vector; eventually we'll add sparse uniform vectors and sparse
	  hashtable---hashtable using sparse vector as a backend store).
	  The main advantage of sparse vectors over hashtables is that it
	  behaves better in memory consumption when structures with large
	  number of elements (like >1M) are repeatedly created and discarded.
	  Although each sparse vector uses more memory than a hashtable of
	  the same number of elements, large hashtables are more likely to
	  become "dead memory", because of its large bucket vector.

2009-03-19  Shiro Kawai  <shiro@acm.org>

	* src/Makefile.in: added gauche/bits_inline.h
	* src/gauche/bits_inline.h, src/bits.c: Splitted some useful and
	  performance-critical routines from bits.c into a separate header.
	  The header is not for general inclusion; only those code that
	  needs such routines should explicitly include it.

2009-03-18  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h (SCM_IGNORE_RESULT): Added this macro to silence
	  "ignoring return value" warnings when the return value is
	  intentionally ignored.
	* src/core.c (Scm_Abort), src/string.c (Scm_DStringDump):
	  Using SCM_IGNORE_RESULT.

2009-03-17  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/dictionary.scm (<bimap>): Added bidirectional map.
	  (dict-get, dict-put!, dict-exists?, dict-delete!): Completed
	  dictionary interface protocol.
	* lib/dbm.scm (dict-get, dict-put!, dict-exists?, dict-delete!):
	  Adapted to the new dictionary protocol.
	* test/dict.scm: added.

2009-03-10  Shiro Kawai  <shiro@acm.org>

	* ext/net/addr.c: Allocates <sockaddr-*> instances as ATOMIC to
	  reduce the risk of false pointers.

	* src/core.c (Scm_Abort): Tells the compiler that we intentionally
	  ignore the return value of write(2).  Newer gcc whined on it.

2009-03-01  Shiro Kawai  <shiro@acm.org>

	* src/gauche/extend.h (SCM_INIT_EXTENSION): Redefined this macro
	  to no-op.  The old scheme of registering data/bss start/end by
	  this macro is no longer relevant, since modern linkers doesn't
	  keep the relative locations of static symbols anyway.  Eventually
	  we'll make *_head.c/_tail.c fade out as well.

2009-02-28  Shiro Kawai  <shiro@acm.org>

	* src/string.c (Scm_StringCiCmp): a couple of bug fix, thanks to
	  Tsugutomo Enami.

2009-02-26  Shiro Kawai  <shiro@acm.org>

	* src/vmcall.c (ADJUST_ARGUMENT_FRAME): Fix CHECK_STACK assertion
	  condition and no optargs case in APPLY_CALL.

2009-02-23  Shiro Kawai  <shiro@acm.org>

	* lib/util/toposort.scm (topological-sort): Fix the code that locally
	  shadows '=' by the given optional argument, that breaks when the
	  optional equality predicate isn't compatibile with numeric comparison.

2009-02-22  Shiro Kawai  <shiro@acm.org>

	* src/vminsn.scm: Bug fix: added some missing SCM_FLONUM_ENSURE_MEMs.

	* src/vm.c (Scm_VMFlushFPStack), src/vminsn.scm ($values):
	  Allow register flonums in vm->vals registers.  Make sure they're
	  moved to heap when FP stack is flushed.

	* src/vminsn.scm (UVEC-REFI), src/compile.scm: An experimental code
	  to add UVEC-REFI instruction.  Not enough evidence is collected
	  to support the instruction, though, so they are commented out
	  in this commit.

	* src/compile.scm (attach-inline-transformer): Experimentally added
	  a hook for pass1 inliner.  It's still highly experimental and
	  purely for internal use.
	* ext/uvector/uvutil.scm: Renamed from uvseq.scm.  Inline expand
	  TAGvector-ref into %uvector-ref using inline transformer.

2009-02-21  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/uvlib.stub.tmpl: Flag :fast-flonum for uvector arithmetic
	  (e.g. TAGvector-add etc.)  The second arg can be a register flonum.

	* ext/uvector/uvector.c.tmpl (arg2_check): Fixed a bug that passed
	  too few arguments to Scm_Error.

	* src/vminsn.scm (NUMBERP, REALP): Added instructions.
	* src/stdlib.stub (number?, complex?, real?, rational?): Use new
	  instructions for inline.

	* src/stdlib.stub (numcmp): Rewrote =, <, <=, >= and > using :optarray
	  to avoid consing in 3- and 4-ary cases.
	* src/number.c (Scm_NumCmp): Deferred SCM_FLONUM_ENSURE_MEM until
	  it's absolutely necessary, reducing flonum allcation.

	* lib/gauche/cgen/stub.scm: Added support of :optarray argument
	  spec; it allows SUBR to receive optional arguments as a C array of
	  ScmObj.
	* ext/uvector/uvector.c.tmpl, ext/uvector/uvector.h.tmpl,
	  ext/uvector/uvlib.stub.tmpl: Changed 'TAGvector' function using
	  :optarray argument spec, so that if the argument list is short
	  it won't cons.

2009-02-20  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/stub.scm, src/vmcall.c (ADJUST_ARGUMENT_FRAME):
	  Made SUBR's :optional argument does not cause caller to cons
	  the optional arguments.  Improved performance quite a bit,
	  especially when passing flonums in optional args (if optional args
	  are consed, the flonums have to be moved to the heap; now it can
	  stay in the flonum stack).

2009-02-17  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/stub.scm (process-cproc-args): Code cleanup.

	* src/vmcall.c (ADJUST_ARGUMENT_FRAME),
	  src/gauche.h (ScmProcedure): Allow procedure->optional to be more
	  than 1.  This is preparation for optional arg handling optimization.

2009-02-15  Shiro Kawai  <shiro@acm.org>

	* src/gauche/vector.h, src/vector.c, src/extlib.stub (%uvector-ref):
	  Experimentally added internal support of generic uvector referencer.
	* src/vminsn.scm (UVEC-REF), src/compile.scm: Experimentally added
	  instruction for %uvector-ref

	* ext/uvector/uvlib.stub.tmpl, ext/uvector/uvector.h.tmpl,
	  ext/uvector/uvector.c.tmpl, ext/uvector/uvgen.scm:
	  Let *vector-dot routine to take advantage of FFX.

	* lib/gauche/cgen/type.scm: Fixed boxer definition of <float>,
	  <double> and <real> to use ScmVMReturnFlonum to take advantage
	  of FFX.  Also added <uvector> to builtin types, since it is now
	  supported in the core.

2009-02-14  Shiro Kawai  <shiro@acm.org>

	* src/gauche/vector.h, src/vector.c, ext/uvector/uvector.c.tmpl,
	  ext/uvector/uvector.h.tmpl: Moved definition of ScmUVector structure,
	  constructors, and <uvector> classes from ext/uvector to the core.
	  The role of uniform vector has gotten bigger, for it is used
	  to treat binary data in the Scheme world.  It is awkward to require
	  extensions to link ext.uvector only to use ScmUVector structure.
	  The utility procedures for uvectors remain in ext.uvector.
	  NOTE: This changes definition of type-specific uniform vectors
	  such as Scm_S8Vector; the difference is the type of 'elements' field.
	  As long as you access uvector elements using SCM_*VECTOR_ELEMENTS
	  macro, this change shouldn't affect your code.

2009-02-03  Shiro Kawai  <shiro@acm.org>

	* ext/auxsys/auxsys.scm (sys-realpath): Fixed to follow '..'
	  correctly and other corner cases, thanks to Tsugutomo Enami.

2009-02-01  Shiro Kawai  <shiro@acm.org>

	* ext/auxsys/auxsys.scm (sys-realpath): realpath(3) can be not safe
	  (Linux manpage recommends not to use it), so we reimplemented it
	  in Scheme.

2009-01-28  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h, src/gauche/module.h, src/Makefile.in: Splitted
	  ScmModule related declarations into a separate header.

2009-01-19  Shiro Kawai  <shiro@acm.org>

	* ext/sxml/sxml/tree-trans.scm.in: Added missing 'use srfi-11'.

2008-12-20  Shiro Kawai  <shiro@acm.org>

	* INSTALL.in: Updated some instructions.

	* src/geninsn, lib/gauche/vm/insn-core.scm: Allow :obsoleted flag
	  in the insturction definition to suppress emission of the particular
	  combined instructions.  It is a step before removing them
	  (we can't just remove them from vminsn.scm, since the current
	  release of Gauche would generate them when compiling the trunk
	  code, and the trunk VM must be able to execute them).
	* src/vminsn.scm: Add :obsoleted flag to LREF0-PUSH-GREF-* insns.

2008-12-16  Shiro Kawai  <shiro@acm.org>

	* src/geninsn (construct-vmbody): Fixed handling of insns that combine
	  more than two basic insns.  In the previous code, if you want an
	  insn A-B-C, you have to have the insn B-C.  Now you don't need to.
	  (You still need A-B, for the insn combine state machine can only
	  keep one instruction in a queue; this limitation should be addressed
	  sometime in future.)
	* src/vminsn.scm: Removed NUMADDI-PUSH, for it is no longer needed
	  by the above change.

2008-12-13  Shiro Kawai  <shiro@acm.org>

	* src/vminsn.scm, src/compile.scm: Experimentally added supports
	  for combined instructions: LREF-VAL0-BNUMNE, LREF-VAL0-NUMADD2,
	  NUMADDI-PUSH, LREF-NUMADDI, LREF-NUMADDI-PUSH and LREF-RET.  Some
	  of these combinations frequently appear in typical loop
	  constructs.  This change improves performance slightly (about 7-8%
	  in tak).  The improvement is not so much as expected, though, so
	  we might revert this if we find more fundamental improvements.

	* src/gauche/code.h (SCM_VM_INSN_CODE): utilize full 12bits for code.

2008-12-09  Shiro Kawai  <shiro@acm.org>

	* lib/util/combinations (but-kth, permutations, permutations*,
	  permutations-for-each, permutations*-for-each, combinations,
	  combinations*, combinations-for-each, combinations*-for-each):
	  Optimized a bit.

2008-12-06  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h (ScmFlonum): Make ScmFlonum a structure containing
	  double instead of just a bare double; some 32bit processors/compilers
	  do not align bare double on 8-byte boundary, but they do a struct
	  that containing a double.
	* src/number.c (Scm_MakeFlonum), src/gauche/vm.h (Scm_VMReturnFlonum):
	  Changed accordingly.

2008-12-04  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h (struct ScmClassRec, SCM__DEFINE_CLASS_COMMON):
	  Changed the initial element of the ScmClass structure so that it is
	  likely to be placed in 8-byte align boundary on ILP32 machines.

2008-11-28  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/ip.scm (ip-version, ip-header-length, ip-protocol,
	  ip-source-address, ip-destination-address): Added 'offset' argument,
	  since it is much needed in the practical situation.  THIS IS AN
	  INCOMPATIBLE CHANGE.  Hope there are not many people who have
	  used this obscure module.

2008-11-27  Shiro Kawai  <shiro@acm.org>

	* src/load.c (Scm_LoadFromPort): Fixed a bug in initilalizing
	  load_from_port.

2008-11-23  Shiro Kawai  <shiro@acm.org>

	* ext/digest/sha2.h: Incorporate checks of endianness and uintXX_t
	  from gauche/config.h.

2008-11-22  Shiro Kawai  <shiro@acm.org>

	* src/load.c (Scm_Require, Scm_Provide): Implemented 'autoprovide'
	  feature.  If (require "X") causes loading of X.scm, and there's no
	  'provide' form in X.scm, the feature "X" is provided upon successful
	  completion of loading X.scm as if there is (provide "X") form
	  at the end of X.scm.  If X.scm contains 'provide' form,
	  autoproviding is turned off.  (provide #f) can be used to disable
	  autoproviding and not providing any feature.

2008-11-21  Shiro Kawai  <shiro@acm.org>

	* src/load.c (Scm_LoadPacketInit), src/gauche/load.h (ScmLoadPacket):
	  Cleadned up the structure.  Added Scm_LoadPacketInit to keep
	  room of future extension.

2008-11-20  Shiro Kawai  <shiro@acm.org>

	* src/load.c (Scm_Load, Scm_LoadFromPort),
	  src/stdlib.stub (load), src/extlib.stub (load-from-port):
	  Moved definitions of Scheme's 'load' and 'load-from-port' into
	  stub files for simplicity.

	* lib/gauche/cgen/cise.scm (dopairs): Added a new macro.
	  (render-rec): Added some heuristics to distinguish types and
	  expressions; some operators (such as sizeof) and macros may take
	  types instead of expressions as arguments, and they need to be
	  rendered differently.  This reverts the kludge of sizeof introduced
	  on 11/18.

	* lib/gauche/cgen/stub.scm (process-cproc-args): Switched the stub
	  function's lambda keywords from
	  {&optional,&keyword,&rest,&allow-other-keys} to
	  {:optional,:key,:rest,:allow-other-keys}.  The latter set is
	  consistent with the extended lambda syntax, and it doesn't need to
	  treat ordinary symbols such as &optional specially.
	  The old lambda keywords are supported for the backward compatibility,
	  but will eventually fade out.
	  (process-setter): Make static setter definition handling consistent
	  with define-cproc.
	* *.stub: Changed accordingly.

2008-11-19  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub (%open/allow-noexist?): Check errno==ENXIO as well.

2008-11-18  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/stub.scm (declcode): Added 'declcode' directive
	  to insert raw code in the decl part.  Traditionally, the first
	  raw string in the stub file has served for this purpose, but it
	  won't work when the stub stuff is embedded by inline-stub, since
	  this special handling of the first raw string is treated specially
	  only by genstub.   It is better to be explicit.  (The special
	  treatment by genstub remains only for the backward compatibility.)
	  (define-cmethod): Allow the new cproc body syntax here as well.

	* lib/gauche/cgen/sice.scm (sizeof): Made sizeof a cgen macro to
	  allow e.g. (sizeof struct foo).

2008-11-17  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/cise.scm (cise-render-typed-var): Allow expr
	  in size part of array declaration.
	  (list): fixed a bug when many elements are given.
	* ext/auxsyslib/auxsyslib.stub, ext/binary/binarylib.stub,
	  ext/dbm/{gdbm,ndbm,odbm}-lib.scm, ext/digest/{md5,sha}-lib.scm:
	  Rewrote using new stub syntax.

	* ext/charconv/convaux.scm, ext/charconv/convlib.stub:
	  Made convaux.scm absorb convlib.stub.

	* lib/gauche/cgen/stub.scm: Changed define-cproc flag syntax, and
	  supports a more concise way for the case when C function takes
	  the same arguments as Scheme one (the old 'call' clause).
	  'code', 'call', 'expr', and 'body' clauses are deprecated.
	  Old 'return' clause support is finally omitted.
	* src/*.stub, ext/uvector/uvlib.stub.tmpl: Changed accordingly.

2008-11-15  Shiro Kawai  <shiro@acm.org>

	* src/syslib.stub: (sys-rename, sys-remove, sys-chdir, sys-mkdir,
	  sys-chmod, sys-fchmod, sys-link, sys-close, sys-rmdir, sys-truncate,
	  sys-ftruncate, sys-symlink): Now returns #<undef>

	* lib/gauche/cgen/stub.scm (define-cproc): Introduced a new syntax
	  of define-cproc to specify return-type, eliminating the necessity
	  of body form, allowing more concise definition, and being more
	  consistent with define-cfn.
	* src/*.stub: Changed using the new define-cproc syntax whenever
	  possible.

	* lib/gauche/cgen/cise.scm
	  (dolist, dotimes, |#if|): Added new cise macros.
	  (cise-render-to-string): Added an utility api.

	* src/objlib.scm: Integrated moplib.stub into objlib.scm using
	  inline-stub.
	* src/moplib.stub: Removed.
	* src/core.c, src/Makefile.in: Changed accordingly.

2008-11-14  Shiro Kawai  <shiro@acm.org>

	* src/vminsn.scm: Removed obsoleted VM instructions, and rearranged
	  the order of some instructions.  Developers should rebuild from
	  maintainer-clean to make sure precompiled files are in sync.

	* src/stdlib.stub (%complex->real/imag): Removed; this API is
	  superfluous, since calling real-part and imag-part separately
	  doesn't hurt performance at all.

	* src/gauche.h etc: Integrated fast flonum extension (FFX)
	  (cf. http://portal.acm.org/citation.cfm?id=1408687 ).   This
	  boosts up speed of programs involving heavy floating-point number
	  calculation.
	  It can be turned off by changing #define GAUCHE_FFX 1 to
	  #define GAUCHE_FFX 0 in gauche.h; if you find suspicious behaviors
	  (like incorrect result of flonum calculation), recompile without FFX
	  to see if it is the reason.

2008-11-13  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/package/compile.scm (gauche-package-compile-and-link):
	  Fix the :output keyword arg for the filnal DSO file affecting
	  individual C-file compilation inadvertently.

2008-11-11  Shiro Kawai  <shiro@acm.org>

	* src/gauche/system.h (SCM_SYS_STAT_STAT): wrap access to the statrec
	  field by a macro.
	* src/system.c, src/syslib.stub: changed accordingly.

2008-11-09  Shiro Kawai  <shiro@acm.org>

	* src/gauche/memory.h: Removed, since Boehm GC's inline macros have been
	  changed since 7.0 and are no longer straightforward to use.

2008-11-08  Shiro Kawai  <shiro@acm.org>

	* configure.ac, ext/zlib/zlib.ac, ext/zlib/Makefile.in: Check zlib
	  availability, and allow --with-zlib configure option to specify
	  zlib location.

2008-11-07  Shiro Kawai  <shiro@acm.org>

	* ext/zlib/*: Renamed deflate-port/inflate-port for deflating-port/
	  inflating-port, since deflate/inflate are verbs.
	  (zlib-version): made it a function instead of a constant.

	* lib/gauche/cgen/stub.scm (process-call-spec): Allow symbol as the
	  C function name in 'call' clause of define-cproc.  (I'm not sure
	  why I didn't allow this.  Maybe just an overlook.)

	* lib/gauche/cgen/cise.scm (canonicalize-vardecl): Allow more flexible
	  notation of typed variables, e.g. var::type, var:: type, var ::type
	  are all treated as (var :: type) in the define-cfn argument list,
	  and (var::type [init]), (var:: type [init]), or (var ::type [init])
	  are all treated as (var :: type [init]) in the let* variable list.
	* ext/zlib/zliblib.stub, ext/dbm/ndbm-lib.scm, ext/dbm/odbm-lib.scm,
	  ext/dbm/gdbm-lib.scm: Modified to reflect the above change.

2008-10-31  Shiro Kawai  <shiro@acm.org>

	* ext/zlib/zlib.scm, ext/zlib/Makefile.in: fixed for zlib.scm to be
	  installed into proper location.

2008-10-30  Shiro Kawai  <shiro@acm.org>

	* ext/zlib/*: Added rfc.zlib (written by Rui Ueyama).
	  Probably we should add libz check in the main configure.ac later.

2008-10-27  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass1/extended-lambda): Changed keyword argument
	  spec with different variable name to match the CL-style, i.e.
	  you write (define (foo x :key ((:bar baz) 'init)) ...) to let
	  the baz receives the value supplied to the keyword :bar.
	  Also extended :allow-other-keys to take optional argument that
	  receives unrecognized keyword-value list.

	* test/package.scm: Added to test gauche.package.*.
	* test/cgen.scm: Added to test gauche.cgen.*.

	* lib/*, libsrc/*: Rewrote most let-keywords*/let-optionals* with
	  extended lambda experimentally to see how it looks like in the
	  real code.

2008-10-09  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (compile-toplevel-form, do-it): Instead of
	  recognizing inline-stub literally in compile-toplevel-form, we
	  override inline-stub macro in the compile-module.  It allows
	  macros that generates inline-stub form.

	* src/gauche/macro.h, src/gauche/code.h, src/gauche/extend.h,
	  ext/uvector/uvector.h.tmpl: Increase C++ friendliness.

	* src/extlib.stub (%open-input-file, %open-output-file):
	  When :if-does-not-exist is #f or :if-exists is #f, these procedures
	  have ignored all errors, even if open(2) failed with other reasons
	  such as EPERM.  Now we check errno for these cases and raise
	  appropriate <system-error> if the error reason is not expected one.

2008-10-08  Shiro Kawai  <shiro@acm.org>

	* ext/digest: Added support of SHA2 (SHA224, SHA256, SHA384 and
	  SHA512), using Aaron Gifford's implementation.

2008-10-07  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/cise.scm (cise-render-typed-var): Allow array
	  type declaration e.g. (.array (unsigned char) (10 10)).

	* src/compile.scm, src/intlib.stub: Moved some C-implemented
	  compiler-internal routines from intlib.stub to compile.scm
	  using inline-stub.

2008-10-06  Shiro Kawai  <shiro@acm.org>

	* release 0.8.14

2008-10-05  Shiro Kawai  <shiro@acm.org>

	* test/rfc.scm, ext/net/test.scm: Avoid using sys-fork to run the
	  test server process; fork doesn't go well with windows.

	* ext/net/netlib.stub (sockaddr-name): correctly identifies the
	  length of pathname of the unix domain socket; it can be 0.

2008-10-03  Shiro Kawai  <shiro@acm.org>

	* ext/net/netlib.stub (SHUT_RD, SHUT_WR, SHUT_RDWR): defines
	  constants for 'how' argument of socket-shutdown.

	* configure.ac, ext/Makefile.in, DIST_EXCLUDE: Exclude ext/peg and
	  lib/rfc/json.scm; these are not ready for 0.8.14 release.

	* src/number.c (read_real): Fixed the bug that misunderstands the
	  case when no integral part appears right after the initial sign
	  (e.g. ++i or +/4).

2008-09-18  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/ip.scm (ipv4-global-address?): added.

	* src/Makefile.in (scmlib.c, objlib.c): added dependency on
	  ../lib/gauche/vm/insn.scm.

2008-09-11  Shiro Kawai  <shiro@acm.org>

	* src/scmlib.scm (inline-stub): just issue warning instead of
	  error, for it is sometimes useful to 'load' the source with
	  inline-stub during debugging.

2008-09-04  Shiro Kawai  <shiro@acm.org>

	* src/scmlib.scm (exit, exit-handler): Implemented exit-handler
	  feature to hook application's exit operation.  See the manual
	  for detailed explanation and design rationale.

	* src/builtin-syms.scm (SCM_SYM_PLUSP): defined to an wrong symbol
	  '+?'; should be '++'.

2008-09-02  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/cise.scm (define-referencer): Allow C++-style
	  method invocation: (-> A (B C) (D E)) expands to "A->B(C)->D(E)".

2008-08-31  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (wna), src/vmcall.c, src/proc.c (Scm_CurryProcedure),
	  src/gauche.h, src/builtin-syms.scm, src/intlib.stub,
	  lib/gauche/procedure.scm:
	  Experimentally added some code to support automatic currying.
	  This version still has an issue (see the comment in src/proc.c),
	  so the feature is commented out.

2008-08-29  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/cise.scm (values): Expands 'values' cise macro
	  into appropiate Scm_Values* call.

	* src/gauche/experimental/lamb.scm (^., ^*): added shorthand notation
	  of match-lambda and match-lambda* experimentally.

2008-08-28  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub (%open-input-file): Use Scm_SysError when
	  Scm_OpenFilePort returns #f, since if it returns #f the reason
	  is the failure of open(2).

2008-08-26  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/unit.scm (cgen-safe-comment): Added.
	* lib/gauche/cgen/literal.scm, src/gencomp: Emit more comments into
	  generated C file for ease of debugging.

	* src/gencomp, src/scmlib.scm (declare): Added ad-hoc 'declare' syntax
	  to support keep-private-macro in source instead of command-line args
	  for gencomp.  This is a purely temporary solution, since it won't
	  be needed once we can byte-compile hygienic macros.  It is
	  convenient for the time being to produce some extensions, but it
	  will disappear soon.

2008-08-23  Shiro Kawai  <shiro@acm.org>

	* src/syslib.stub (sys-lstat): On windows, make it behave just like
	  sys-stat.  Windows doesn't have lstat(), but since it works the
	  same as stat() when path is not a symlink, it is reasonable to
	  make it so (and it reduces one headache of cross-platform dev.)

	* ext/peg/peg-lib.scm: Renamed semantic-value-finalize! to
	  rope-finalize, in order to reflect its function more clearly,
	  and also avoid unecessary consing.  Added $<<.
	  (This is still a temporary snapshot; large restructuring is
	  planned.)
	* lib/rfc/json.scm: Changed accordingly.

2008-08-21  Shiro Kawai  <shiro@acm.org>

	* src/getdir_darwin.c (get_install_dir): fixed a bug that releases
	  unretained resource.  Based on a patch by Naoya Tozuka.

	* lib/gauche/experimental/*: Moved some weird syntactic experiment
	  into separate modules, so that it will be easy to track their users
	  in case if we want to change or drop the support.  NOTE: the '$'
	  experiment is now in gauche.experimental.app. (used to be built-in).
	* src/autoloads.scm, lib/gauche/procedure.scm: Moved $ and $* to
	  gauche.experimental.app.  Experimentally added .$ as an alias of
	  compose.

	* src/Makefile.in (INSTALL_SUBHEADERS): added some missing headers.

2008-08-20  Shiro Kawai  <shiro@acm.org>

	* src/port.c (SCM_PORT_CASE_FOLD), src/gauche/port.h,
	  src/read.c, src/gauche/reader.h: Moved the case folding flag from
	  read context to port.
	* src/scmlib.scm, src/extlib.stub (port-case-fold-set!): Changed
	  accordingly.
	* src/core.c: Moved InitVM much earlier than InitPort, since now
	  VM's runtime flag affects the port's case folding flag.  The VM's
	  standard I/O are set in InitPort.

	* **/*.scm: Cleaned up use of |-escapes meant to work for both case-
	  sensitive and case-insensitive mode.  Now we have #!no-case-fold,
	  so we can ensure the file is read in case-sensitive mode.

	* src/gauche/reader.h, src/gauche.h: splitted reader API from gauche.h
	  to reader.h

	* src/read.c (ScmReadContext, Scm_MakeReadContext): made read context
	  a Scheme object of class <read-context>.
	* src/class.c, src/load.c: changed accordingly.

	* src/portapi.c, src/gauche/port.h: Added 'bytes' field in ScmPort
	  that counts the cumulative bytes read from the port.  It is used
	  by the reader to distinguish the script's shebang line and
	  #!<identifier> directive.

	* src/read.c (Scm_DefineReaderDirective, read_shebang):
	  src/extlib.stub (define-reader-directive):
	  Modified the reader to recognize R6RS-style #!<identifier>
	  directive.  Now, only the '#!' of the beginning of the port,
	  followed by '/' or ' ', are recognized as the script shebang
	  line.  All other '#!'s are treated as #!<identifier> directive
	  (before, '#!'s unconditionally worked as a
	  comment-to-end-of-line).  The behavior of #!<identifier> is
	  customizable by define-reader-directive.
	* src/scmlib.scm: Added standard #!<identifier> directives:
	  #!r6rs, #!fold-case and #!no-fold-case.

	* src/gencomp (global-eq??): fixed a bug when the comparing identifier
	  is not yet defined in the host gosh.
	* src/Makefile.in (scmlib.c): use --keep-private-macro=inline-stub
	  to keep inline-stub macro definition in the core.

2008-08-19  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/cise.scm (define-cfn): Introduced define-cfn cise
	  form to enable to write pure C function (not cproc, which is a
	  Scheme subr with C body) in cise.
	* lib/gauche/cgen/stub.scm: Recognizes define-cfn within stub code.
	  (initcode): Allow cise in the code portion.
	  (make-literal, c-literal-expr): Allow cise expression in the
	  expr section of raw c literal (e.g. (c expr)).
	  (define-cclass): Allow :private qualifier to emit the CLASS_DECL and
	  standard macros into the c file.
	  (cclass-emit-standard-decls): is the body to generate standard macros
	  mentioned above.  Eventually there should be an option to emit
	  these into a separate header file.

	* ext/peg/peg-lib.scm: Rewrote a couple of C static functions within
	  inline-stub by define-cfn.

	* ext/dbm/gdbm-lib.scm, ext/dbm/ndbm-lib.scm, ext/dbm/odbm-lib.scm:
	  Include stub code in the Scheme code using init-stub.
	  *.stub are no longer needed.  {gdbm,ndbm,odbm}.scm are auto-
	  generated.
	* ext/dbm/dbm.ac: changed accordingly.

	* ext/dbm/bdbm.c, ext/dbm/bsddb.h, ext/dbm/bsddb.stub: Removed.
	  Berkeley DB licensing terms are like GPL, so it's better to be
	  supported in a separate extension to avoid complication of
	  Gauche-embedded application development.

	* ext/digest/md5-lib.scm, ext/digest/sha1-lib.scm: Include stub
	  code in the Scheme code using init-stub.  *.stub are no longer
	  needed.  {md5,sha1}.scm are autogenerated.

2008-08-17  Shiro Kawai  <shiro@acm.org>

	* src/vminsn.scm (VALUES-APPLY), src/vm.c (Scm_ApplyRec): fixed
	  a bug that caused SEGV when more than SCM_VM_MAX_VALUES args
	  are given to Scm_ApplyRec.  This hasn't been noticed since Scheme
	  version of APPLY doesn't go through this path.  (Note: This
	  is a temporary fix.  VALUES-APPLY can keep the rest list until
	  argumet adjustment, in the same way as TAIL-APPLY.)
	* src/intlib.stub: Added some procedures that uses Scm_ApplyRec
	  family for the testing purpose.

	* lib/gauche/sortutil.scm, src/autoloads.scm, test/sort.scm:
	  Added sort-by, sort-by!, stable-sort-by, stable-sort-by!.

2008-08-08  Shiro Kawai  <shiro@acm.org>

	* lib/dbm.scm (dbm-db-copy, dbm-db-move): Provides fallback methods.
	* doc/modutil.texi (dbm): Added explanation on the protocol a new
	  dbm implementation should conform.

2008-08-04  Shiro Kawai  <shiro@acm.org>

	* doc/modgauche.texi: added missing description of the return
	  value of mutex-unlock!.

2008-08-02  Shiro Kawai  <shiro@acm.org>

	* src/vminsn.scm: added LREF-CAR and LREF-CDR combined insns.  We could
	  wait for the new instruction scheme ('push' bit), but this is simple
	  and effective, so why not?
	  Also added VALUES-RET.

	* ext/peg/peg-lib.scm
	  ($fold-parsers, $fold-parsers-right): change $fold and $fold-right
	  to these names to avoid confusion.
	  ($count, $sep-end-by): rewrote to use $loop macro for speed and
	  correct behavior.
	* ext/peg/test.scm, tests/rfc.scm: moved rfc.json test under ext/peg,
	  for it depends on parser.peg.

2008-07-31  Shiro Kawai  <shiro@acm.org>

	* ext/net/netlib.stub: Added several IP socket option constants.

2008-07-28  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pack-iform): Fixed a bug handling $RECEIVE node.
	  (pass3/branch-core): Added an optimization to cut the unreachable
	  branch of $if.  Such $if may occur as a result of macro expansion.

2008-07-26  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass1/body-wrap-intdefs): Ensure the evaluation
	  order of internal define the same as corresponding letrec.  Before
	  it was reversed and a source of confusion.  It is also consistent
	  to letrec* behavior.

	* ext/peg/peg-lib.scm
	  ($many_): Removed, for it is same as $skip-many.
	  ($fold, $fold-right, $many-chars, $many1): Added.
	  (peg-parse-string): Renamed from parse-string.
	  (peg-run-parser, peg-parse-port): Added.

2008-07-25  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/parseopt.scm (compose-entry): Allow '*' modifier in
	  option-spec, for options that can be specified multiple times.
	  This is just a preparation; the actual code to support multiple
	  appearance of an option hasn't been done yet.

2008-07-20  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/vm/insn.scm.src, lib/gauche/vm/insn-core.scm: Removed
	  the template file insn.scm.src and added a separate module
	  insn-core.scm.  The generated insn.scm extends insn-core.  This
	  is required since geninsn needs to refer to <vm-insn-info>, but
	  gauche.vm.insn doesn't exist yet when geninsn is generating it.
	* src/geninsn: changed accordingly.

2008-07-15  Shiro Kawai  <shiro@acm.org>

	* src/vminsn.svm ($insn-body), src/geninsn (insn-alist):
	  Allow insn definition to retrieve other insn body.

	* src/vminsn.scm ($arg-source,  LREF-VAL0-BNxx),
	  src/compile.scm (pass3/if-numcmp): Emit special instructions for
	  BNxx when one of the arguments are LREF.  This saves one stack
	  push/pop pair.

2008-07-14  Shiro Kawai  <shiro@acm.org>

	* src/vminsn.scm ($vm-err): Avoid expanding CISE into VM_ERR macro,
	  for some C compilers choke on #line directives between macro
	  arguments.

2008-07-10  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass1/define-inline),
	  src/gencomp (check-packed-inliner): Properly emit inliner
	  information of the procedures defined by define-inline, even
	  if the target VM's instruction codes differ from host VM's.

2008-07-08  Shiro Kawai  <shiro@acm.org>

	* configure.ac: Checking for gcc by $GCC instead of $CC, to cope
	  with the case when $CC is actually "gcc -std=gnu99" etc.

2008-07-02  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/vm/insn.scm.src, src/gauche/code.h: Extended the
	  opcode width in the instruction word from 8 bits to 12 bits.

	* src/compile.scm: Instead of reading vminsn.scm to define vm
	  instruction constants, using gauche.vm.insn to do so.
	* src/geninsn: allow define-insn-lref* and define-insn-lref+,
	  that automatically defines LERFn-XXX and LREFmn-XXX combined
	  instructions from the base LREF-XXX instruction definition.

	* lib/gauche/procedure.scm (disasm): removed kludge for old versions.

	* src/code.c (Scm_CompiledCodeEmit): Adopted STN created from
	  vminsn.scm to handle instruction combination.  With this change,
	  the VM instruction set architecture is solely defined by vminsn.scm.
	* src/geninsn: some extension to handle more combined insns.
	* src/vminsn.scm: some fixes

2008-07-01  Shiro Kawai  <shiro@acm.org>

	* src/vminsn.scm, src/geninsn, src/vm.c (run_loop): Having VM loop
	  code fragment within the VM instruction definition in vminsn.scm,
	  and use geninsn to generate the "meat" of the VM loop into
	  vminsn.c.  This is a big step towards VM generation.

	* lib/gauche/cgen/literal.scm (cgen-emit-static-data),
	  lib/gauche/cgen/unit.scm (cgen-emit-c): Moved SCM_CGEN_CONST
	  kludge emission from unit to literal, since it is only required
	  for the static data array generated by cgen-emit-static-data.

2008-06-28  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (VALUES_APPLY): Removed unnecessary code.

2008-06-27  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/cise.scm (source-info): Replaced makeshift source
	  info extractor for debug-source-info.
	  (cise-render-rec): Expose an API to call back to cise expander
	  recursievly.  Needed to write certain type of cise macros.
	  (cise-context, cise-context-copy, cise-register-macro!,
	   cise-lookup-macro): Allow to have multiple cise macro namespaces.
	  (define-cise-stmt, define-cise-expr): allow to specify a variable
	  to receive the cise environment, which is required to call
	  cise-render-rec within the expander.

2008-06-26  Shiro Kawai  <shiro@acm.org>

	* src/autoload.scm, lib/gauche/miscutil.scm (object-source-info):
	  Removed.  Use debug-source-info.

2008-06-25  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/http.scm (http-generic): fixed 'host' field being messed
	  up when redirected.

2008-06-24  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/cise.scm: Added cise macros: while, label, goto,
	  post++, post--.  Allow variable declaration only (without init
	  nor type) in let*.

2008-06-20  Shiro Kawai  <shiro@acm.org>

	* src/vm.c, src/gauche.h (Scm_ApplyRec[01234]): Added these to avoid
	  consing in callback from C to Scheme.
	* src/vminsn.scm (VALUES-APPLY): Changed the name from CONST-APPLY.

2008-06-19  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (Scm_ApplyRec): Avoid allocation by using valN registers
	  to pass the arguments.
	* src/vminsn.scm (CONST-APPLY): Changed the definition since we
	  no longer need an operand.

2008-06-08  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub (hash-table-copy): added.  Why this hasn't been
	  implemented until now?  It must be an overlook.

2008-06-03  Shiro Kawai  <shiro@acm.org>

	* ext/peg/peg-lib.scm (space): recognized 'v' as a space incorrectly.
	  (patch from Masayuki Muto).

2008-06-01  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (user_eval_inner), src/gauche/vm.h (ScmCStrackRec):
	  save/restore signal mask by ourselves, since sigsetjmp's behavior
	  is platform-dependent w.r.t. threads.
	* src/signal.c (Scm_GetSigmask, Scm_SetSigmask) :added convenience
	  functions to hide sigprocmask/pthread_sigmask difference among
	  platforms.

2008-05-30  Shiro Kawai  <shiro@acm.org>

	* src/Makefile.in (INSTALL_HEADERS): install some more gc headers.

2008-05-27  Shiro Kawai  <shiro@acm.org>

	* ext/peg/peg-lib.scm (make-peg-parse-error): better error message.

2008-05-26  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub (eof-object): added from R6RS.

2008-05-25  Shiro Kawai  <shiro@acm.org>

	* rfc/json.scm : Added (written by Rui Ueyama.  Using parser.peg).

	* ext/peg/*, configure.ac, ext/Makefile.in: Added parser.peg module,
	  PEG parser combinator library originally written by Rui Ueyama.

2008-05-22  Shiro Kawai  <shiro@acm.org>

	* src/number.c (Scm_FiniteP, Scm_InfiniteP, Scm_NanP),
	  src/extlib.stub (finite?, infinite?, nan?): Added from R6RS.

2008-05-21  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-26.scm (srfi-26-internal-cut): performance fix (see the
	  comment).

	* src/load.c (Scm_DynLoad): Fixed a bug that leaves dlobj inconsisntent
	  state when dl_sym couldn't find initfn.

2008-05-19  Shiro Kawai  <shiro@acm.org>

	* src/load.c (Scm_DynLoad): Fixed a bug that caused a dead-lock
	  when the initialization function of DSO executes some Scheme
	  function (it happens if the DSO is pre-compiled from Scheme source),
	  and the execution triggers an autoload, which in turn tries to
	  dynamic-load some other module.  Before, we had a global lock for
	  dynamic-load, so the recursive call to it caused a dead lock.
	  Now the lock is per-DSO.

2008-05-12  Shiro Kawai  <shiro@acm.org>

	* src/gencomp, src/genstub, lib/gauche/cgen/stub.scm: Allow stub
	  definitions to be embedded in an ordinary *.scm file for pre-
	  compilation.  When gencomp sees a toplevel
	  (inline-stub stub-form ...) form, the stub-form ... part is
	  passed to gauche.cgen.stub to generate C code into the pre-compiled
	  output.
	* src/gencomp, src/compile.scm (global-eq??): Now gencomp takes
	  into account the module visibility when it checks the special
	  identifiers in the toplevel, so that it won't accidentally step
	  on the source where those identifiers are redefined.
	* src/scmlib.scm (inline-stub): A macro inline-stub is defined
	  to detect when the form is evaluated at runtime (it's only valid
	  for precompilation, so at runtime the form throws an error.)

	* gc/thread_local_alloc.c (GC_mark_thread_local_fls_for): Fixed
	  size-zero allocation problem.

2008-05-10  Shiro Kawai  <shiro@acm.org>

	* libsrc/file/util.scm (safe-stat): fix for platforms that don't
	  have sys-lstat.

	* src/genstub, lib/gauche/cgen/type.scm, lib/gauche/cgen/stub.scm:
	  Moved most of the stub handling stuff into gauche.cgen.type and
	  gauche.cgen.stub modules.  Now genstub is a thin frontend for
	  those modules.

2008-05-09  Shiro Kawai  <shiro@acm.org>

	* src/macro.c (Scm_VMMacroExpand): properly handles the case when
	  the operator is an indentifier.

	* libsrc/util/match.scm: Added support to a certain degree
	  for the case when match macros are used with hygienic macros.
	  Specifically it gracefully handles the case that match macros
	  are inserted as the result of hygienic macro expansion.  It's not
	  complete, but we'll patch the holes as it goes, until we replace
	  the current version with completely hygienic match macro.

2008-05-08  Shiro Kawai  <shiro@acm.org>

	* ext/dbm/ndbm-makedb.c (main): fix.  some versions of ndbm don't
	  like O_WRONLY.

	* ext/dbm/ndbm.scm (dbm-db-copy, dbm-db-move): fixed for the case
	  when ndbm uses single database file.

2008-05-07  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass1/lambda): Merged EXPERIMENTAL extended-lambda
	  support (CL-style :optional, :key, :rest and :allow-other-keys args).
	  Not sure if it fits in Scheme style, but let's see how it goes.
	  Currently an extended lambda is expanded into a normal lambda and
	  let-keywords/let-optionals forms within the compiler.  Eventually
	  I prefer them being supported natively, so that the compiler can
	  do some optimizations.

	* test/system.scm (get-pwd-via-pwd): adapted to OSX's /bin/pwd
	  different behavior.

2008-05-08  ENDO Yasuyuki  <yasuyuki@kahua.org>

	* winnt/nsis/setup.nsi.in (OutFile): use "mingw" instead of "win32".

	* winnt/nsis/Makefile (TARGET): use "mingw" instead of "win32".

	* winnt/nsis/README: use "mingw" instead of "win32".

2008-05-07  Shiro Kawai  <shiro@acm.org>

	* ext/dbm/ndbm.stub, ext/dbm/ndbm.scm, ext/dbm/ndbm-makedb.c,
	  ext/dbm/ndbm-suffixes.scm, ext/dbm/Makefile.in: Since different
	  ndbm implementations attach different suffixes for the database
	  files, we determine the suffixes at the build time by actually
	  creating the ndbm database.  The extra files (ndbm-makedb.c and
	  ndbm-suffixes.scm) are used in the build time to create
	  ndbm-suffixes.h, which is included from ndbm.c (generated from
	  ndbm.stub).  Probably some adjustment will be required for cross-
	  compilation.

	* ext/Makefile.ext.in: For the convenience, defined LOCAL_LFLAGS
	  make variable that exports library flags generated
	  from --with-local configure option.

2008-05-06  Shiro Kawai  <shiro@acm.org>

	* gc/libatomic_ops-1.2/Makefile.in etc.  Ran automake again to make
	  Makefile.in etc. keep up to the newest autoconf.

	* lib/dbm.scm, lib/dbm/fsdbm.scm, ext/dbm/*: Renamed dbm-rename to
	  dbm-move, for the consistency of copy-file/move-file.  The old
	  name dbm-rename is kept as an alias of dbm-move.  Added dbm-copy
	  and dbm-move support to dbm.fsdbm.

	* libsrc/file/util.scm, ext/file/test.scm: Added copy-directory*.
	  Fixed the behavior on dangling symlinks in copy-file.
	  Dropped copy-files and move-files, for its API need to be
	  considered more.

	* gc/tests/test.c: excluded GC_FREE(GC_MALLOC(0))-type tests for
	  they cause problems with DONT_ADD_BYTE_AT_END.

2008-05-04  Shiro Kawai  <shiro@acm.org>

	* gc/*, Makefile.in, src/Makefile.in: Bumped up to Boehm GC 7.1.

2008-05-03  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/numerical.scm (scheme): added two-argument log support.
	  (log z b) is base-b logarithm of z, i.e. (/ (log z) (log b)).  This
	  is an R6RS addition.

2008-04-28  ENDO Yasuyuki  <yasuyuki@kahua.org>

	* winnt/nsis/setup.nsi.in: delete gauche-logo.ico

2008-04-21  ENDO Yasuyuki  <yasuyuki@kahua.org>

	* winnt/nsis/setup.nsi.in: add language English.

2008-04-19  Shiro Kawai  <shiro@acm.org>

	* src/parameter.c (Scm__VMParameterTableInit): Potentially allocating
	  too few elements.

	* src/hash.c (Scm_HashTableAdd): Typo fix in the error message.

	* ext/charconv/jconv.c (jconv): Use Scm_Panic instead of Scm_Error
	  in the logically unreachable code within the critical section.

	* src/gauche/mingw-compat.h: Removed, for this is replaced by
	  win-compat.h
	* src/Makefile.in: install win-compat.h instead of mingw-compat.h.

2008-04-19  ENDO Yasuyuki <yasuyuki@kahua.org>

	* DIST: fix winnt/nsis make clean bug.

2008-04-18  Shiro Kawai  <shiro@acm.org>

	* configure.ac (RPATH_FLAG): substitutes RPATH_FLAG for
	  system-dependent compiler flags to embed library paths in the
	  DSO.  "-Wl,--rpath -Wl," for Linux, for example.
	* src/genconfig (--rpath-flag): A new flag to return RPATH_FLAG info.

	* src/gauche-package.in ("compile"): added --local option to
	  the 'compile' command to add local include paths and local library
	  search paths conveniently.
	* ext/template.configure.ac, ext/template.Makefile.in:
	  added --with-local configure option that propagates to --local
	  option of gauche-package.

	* lib/gauche/process.scm (shell-escape-string): Added a utility
	  function.

2008-04-18  ENDO Yasuyuki  <yasuyuki@kahua.org>

	* winnt/nsis/setup.nsi (VIProductVersion): get version from
	##(incdude (*current-version*)) macro.

	* winnt/nsis/file-list.scm (main): check path exists.

	* winnt/nsis/Makefile (GAUCHE_VERSION): hide error message if
	../../VVERSION not exists.

2008-04-17  ENDO Yasuyuki  <yasuyuki@kahua.org>

	* winnt/nsis/Makefile (all): add target all.
	(gen): add target gen.
	(build): add target build.
	(clean): add target clean.
	(MAKENSIS): check makensis.exe.

	* winnt/nsis/file-list.scm (include): fix match bug.

	* winnt/nsis/setup.nsi.in: include version from
	  "##(include (*current-version*))".

	* winnt/nsis/Makefile (setup.nsi): add argument <dist-path>,
	<gauche-version> for file-list.scm.
	version from `cat ../../VERSION`.

	* winnt/nsis/file-list.scm (*current-version*): add.
	(main): required args: <dist-path> <template-file> <gauche-version>
	(include): match inline "##(include exp)" template.

2008-04-15  ENDO Yasuyuki  <yasuyuki@kahua.org>

	* winnt/nsis/Makefile (setup.nsi): generate setup.nsi from
	setup.nsi.in.

	* winnt/nsis/file-list.scm: list Gauche-mingw files and generate
	NSIS script.

	* winnt/nsis/setup.nsi.in: add. (template for NSIS script)

	* winnt/nsis/README: add.

	* winnt/nsis/gauche-logo.ico: Windows icon file for Gauche.

2008-04-11  Shiro Kawai  <shiro@acm.org>

	* src/main.c (main, getopt): fixed argument processing on Windows.

2008-03-03  Shiro Kawai  <shiro@acm.org>

	* lib/util/trie.scm (call-with-builder): incorrect argument order
	* lib/util/relation.scm (relation-column-getters): typo fix
	* lib/gauche/cgen/literal.scm (cgen-emit-xtrn): fixed incorrect
	  variable name.
	  (Thanks to koguro for the above three fixes.)

2008-02-26  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/dictionary.scm: removed undefined dict-map-to from
	  export list.

	* lib/gauche/common-macros.scm, src/autoloads.scm, src/scmlib.scm
	  (let-optionals*, let-keywords, let-keywords*): moved from
	  common-macros to scmlib.  This is a step toward supporting
	  keyword and optional args in VM core.

	* lib/gauche/test.scm (read-summary): avoid using file-exists?, for
	  it triggers autoload which may not be tested in the early stage
	  of testing.

2008-02-24  Shiro Kawai  <shiro@acm.org>

	* various scm files: cosmetic changes and adoption of rlet1.

	* lib/gauche/common-macros.scm: added if-let1 and rlet1.

	* libsrc/file/util.scm: added touch-files, copy-files, move-files,
	  remove-files, and delete-files.

2008-02-23  Shiro Kawai  <shiro@acm.org>

	* lib/binary/pack.scm (read-count): fixed wrong arguments
	  in function call.

	* lib/srfi-27.scm (random-source-make-reals): fixed nonexistent
	  function call.

2008-02-20  Shiro Kawai  <shiro@acm.org>

	* src/write.c (format_proc): raise an error on incomplete tilde
	  sequence in format string.

	* lib/gauche/time.scm (with-time-counter): avoid multiple
	  evaluation of time-counter expression.

2008-02-16  Shiro Kawai  <shiro@acm.org>

	* lib/www/cgi.scm (get-mime-parts): allow :mode option for mime
	  part handler.

2008-02-14  Shiro Kawai  <shiro@acm.org>

	* src/vmcall.c (ADJUST_ARGUMENT_FRAME): Fixed a bug that apply didn't
	  copy the argument list when it needed to 'unfold' the passed
	  argument list.

2008-02-13  Shiro Kawai  <shiro@acm.org>

	* release 0.8.13

2008-02-12  Shiro Kawai  <shiro@acm.org>

	* src/load.c (Scm_ResolveAutoload): fixed another bug that, when N
	  threads (N >= 3) tried to resolve the same autoload and N-1 threads
	  goes to wait, only one of them is ever waked up.

2008-02-09  Shiro Kawai  <shiro@acm.org>

	* src/load.c (Scm_ResolveAutoload): fix a bug that caused malfunction
	  of autoload resolving in multithreaded environment.

2008-02-08  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h (ScmDefaultCPL): make SCM_EXTERN to extern, for cygwin
	  to treat them as compile-time constants.  (Needs more work for
	  Win/VC platform).

2008-02-07  Shiro Kawai  <shiro@acm.org>

	* src/char.c (charset_print_ch): Safer print method for charset
	  literal.

2008-02-06  Shiro Kawai  <shiro@acm.org>

	* ext/net/netlib.stub: Added some more socket option constants.

2008-02-05  Shiro Kawai  <shiro@acm.org>

	* src/scmlib.scm (rxmatch->string): added.

	* src/system.c (Scm_CurrentMicroseconds), src/extlib.stub
	  (greatest-fixnum, least-fixnum): fixes for 64bit architecture.

2008-02-04  Shiro Kawai  <shiro@acm.org>

	* test/system.scm, ext/termios/test.scm: excluded some tests from
	  cygwin, for they are not supported well on it.

	* src/vmcall.c: fixed a bug that takes calling context
	  (normal or applyargs) incorrectly when a next-method object is
	  created in applyargs context, is invoked in normal calling
	  context, a new next-method is created during it, and the new
	  next-method is invoked in the normal calling context.

2008-02-03  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/test.scm (closure-grefs): We've been missing checking
	  the closures in the operand of LOCAL-ENV-CLOSURES.  Check added.

	* configure.ac, */Makefile.in, src/genconfig.in: Adapted for
	  cross compilation. (Parch from YOKOTA Hiroshi).

	* src/bignum.c, src/gauche/config.h.in: checks malloc.h to use
	  alloca on mingw. (Parch from YOKOTA Hiroshi).

	* src/string.c, src/system.c, src/number.c, src/dl_win.c,
	  src/class.c, ext/mt-random/mt-random.c: removing inline from
	  externed procs, and some other fixes for better portability.
	  (Parch from YOKOTA Hiroshi).

	* Makefile.in (uninstall): avoid going into gc/, since we don't
	  install a separate libgc.a so we shouldn't uninstall it.

2008-02-02  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/parseopt.scm (next-option): fixed a problem that regexp
	  might run out the stack when very long option arg is given.

2008-02-01  Shiro Kawai  <shiro@acm.org>

	* libsrc/file/util.scm (copy-file): Fixed a bug that didn't
	  preserve the mode of dst when dst already exists, safe is #f
	  and keep-mode is #f.

	* src/read.c (read_char): allow 5, 6, or 7 hex digits in unicode char
	  literal (#\uxxxxx etc.)  The old code only allows 4 or 8 digits,
	  which is too restrictive (and not much point since Unicode is now
	  only up to #\u10ffff.)

	* src/extlib.stub (fixnum-width, greatest-fixnum, least-fixnum):
	  Added.

	* src/syslib.stub (current-microseconds): Experimentally
	  added.  Returns # of microseconds since system-dependent epoch,
	  wrapped around fixnum resolution (possibly negative).  Useful
	  for micro benchmarking since it doesnt' allocate.

2008-01-31  Shiro Kawai  <shiro@acm.org>

	* 0.8.13_pre1

	* lib/gauche/procedure.scm, src/autoloads.scm: Experimentally
	  added '$' and '$*' macro.  It's unofficial yet.  See how it
	  works.

2008-01-26  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/process.scm (handle-abnormal-exit): Fix not to call
	  :on-error-exit handler if the process' exit status is zero.

2008-01-23  Shiro Kawai  <shiro@acm.org>

	* src/class.c (generic_print): Reverted the display format of
	  generic functions; maxReqargs is not relevant for most users,
	  so it's just confusing.

2008-01-04  Shiro Kawai  <shiro@acm.org>

	* lib/slib.scm.in (require, provide, provided?): adapted to
	  slib3a5 (using slib:require instead of require:require, etc).
	  This should also work with slib 3a4 as well, since 3a4 exports
	  both APIs.

2007-12-31  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (run_loop): Implemented an optimization on TAIL-APPLY
	  instruction.  Since arguments are already on the stack except
	  the last one, we can share large part of processing with TAIL-CALL
	  instruction, with a modification of the special treatment of
	  the last argument.  This eliminates the need to call Scm_VMApply,
	  and also allows large argument list to be applied, such as
	  (apply + (iota 10000)).
	  (Scm_VMApply): changed to use TAIL-APPLY instruction.  This also
	  eliminates need of unfoling the passed args.
	* src/vmcall.c: Added to refactor the similar code between CALL
	  and TAIL-APPLY instruction handling.

	* src/compile.scm (pass3/$ASM), src/stdlib.stub (apply):
	  A little hack to make *every* 'apply' call a tail-call, so that
	  it is compiled as TAIL-APPLY instruction.

2007-12-28  Shiro Kawai  <shiro@acm.org>

	* src/class.c (Scm_ComputeApplicableMethods): Optimized inner loop
	  a little bit.  General code cleanup.
	* src/moplib.stub: Rewrote some procs using cise.

2007-12-25  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/numerical.scm (asin, asinh): fixed a problem of avoiding
	  numerical instability.
	  (exp, expt, cos, cosh, sin, sinh): use real-part/imag-part instead
	  of %complex->real/imag, for the former is slightly faster.

2007-12-22  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub (rxmatch-num-matches): returns 0 if #f is passed,
	  as described in the manual.

2007-12-18  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/822.scm (rfc822-write-headers): Added generic message
	  header generation routine.
	  (rfc822-read-headers): Renamed rfx822-header->list for the
	  symmetry with rfc822-write-headers.  We keep the old name
	  for the backward compatibility.

2007-12-11  Shiro Kawai  <shiro@acm.org>

	* src/read.c (read_string): Supports R6RS-style line folding in
	  string literal.  This should be reworked once we support all
	  kind of whitespaces and line endings, but for the time being
	  we just hardcode treatment of SPC and TABs.

	* lib/rfc/mime.scm (mime-decode-text, mime-encode-word,
	  mime-encode-text): Added utilities to encode/decode header fields
	  according to RFC2047.

2007-12-09  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/quoted-printable.scm (quoted-printable-encode): Added line-
	  width and binary keyword arguments.  Encode '?' to avoid interference
	  with RFC2047 encoded header body.

2007-12-07  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/base64.scm (base64-encode): Added line-width keyword argument
	  to specify line width or suppress line breaking of the output.

2007-12-06  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/http.scm (request-response): Fixed to pass the port number
	  to host header field (RFC2616 section 14.23).

2007-11-30  Shiro Kawai  <shiro@acm.org>

	* src/port.c (Scm__InitPort): Set stdout buffering mode to FULL if
	  the file descriptor 1 is not connected to a terminal.  This greatly
	  improves performance when large number of lines of output are
	  redirected to a file.

2007-11-23  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/fileutil.scm (glob-fold, make-glob-fs-fold): Removed
	  :root and :current args from glob-fold, for they should belong to
	  the 'folder' function rather than the glob-fold function itself.
	  Instead, we added a utility function make-glob-fs-fold to generate
	  a customized 'folder' function with root/current dirs.
	  (glob-fold-1): Added support of '**' wildcard.

2007-11-20  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/fileutil.scm (glob-fold): Added :root and :current
	  keyword arguments for the flexibility.

	* lib/gauche/regexp.scm, src/scmlib.scm, src/autoloads.scm:
	  Moved regexp-replace, regexp-replace-all, regexp-replace*,
	  regexp-replace-all* and regexp-quote from the autoloaded regexp.scm
	  to the compiled scmlib.scm.
	* src/regexp.c, src/objlib.scm: Implemented regexp printer in
	  Scheme write-object instead of C's class print function.  Properly
	  escapes slashes in the regexp and adds 'i' suffix for case-folded
	  regexp, so that read/write invariance is sufficed for trivial
	  cases.  (See the comment before write-object (<regexp> <top>) for
	  the work to do to realize full read/write invariance).
	* src/read.c (read_regexp): let the reader consume a backslash before
	  a slash, for it has nothing to do with regexp parser (and it will
	  be consistent from the regexp created via string->regexp).
	* src/preload.scm: use gauche.regexp explicitly, for it is needed
	  to compile HEAD with 0.8.12.  Can be removed after 0.8.13 release.

2007-11-09  Shiro Kawai  <shiro@acm.org>

	* configure.ac, src/gauche/config.h.in: Enabled large file support
	  (AC_SYS_LARGEFILE).  On Linux this defines _FILE_OFFSET_BITS as 64.
	  COMPATIBILITY NOTE: The definition may affect the behavior of the
	  standard libraries.  It is crucial to include <gauche.h> *before*
	  any other standard headers.
	* src/system.c (Scm_IntegerToOffset, Scm_OffsetToInteger, ScmSysStat):
	  properly handles 64bit offsets.
	* ext/fcntl/fcntl.c: properly handles 64bit offsets.

	* examples/mqueue-cpp/README: added explanation to include
	  gauche.h first.

2007-11-08  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/regexp.scm (regexp-parse-subpattern): allow named
	  reference in the replace string in regexp-replace etc.
	  Patch from Rui Ueyama.

2007-11-07  Shiro Kawai  <shiro@acm.org>

	* configure.ac, src/gauche/config.h.in (HAVE_SYS_RESOURCE_H,
	  SIZEOF_RLIM_T): configuration for getrlimit/setrlimit
	* src/syslib.stub (sys-getrlimit, sys-setrlimit): Added.
	  (Patch from Tatsuya BIZENN).

	* src/extlib.stub (tree-map-floor etc.): Added Scheme-level interface
	  to find the closest entry in the treemap.  Also added tree-map-clear!

2007-11-06  Shiro Kawai  <shiro@acm.org>

	* lib/text/gettext.scm, lib/text/tr.scm: Moved to ext/text.
	* libsrc/text/tr.scm, ext/text/*: Made text.gettext and text.tr
	  compiled modules.

	* src/gencomp (compile-toplevel-form): Modified to recognize
	  define-constant form so that constant-folding works in
	  pre-compilation.

	* ext/srfi/srfi-19-lib.scm: switched back julian-day calculation
	  to use exact numbers (Cf. ChangeLog at 2007-01-16 below).  By
	  scaling everything except nanoseconds first, we can avoid
	  ratnums in intermediate calculations.  With working constant folding
	  in pre-compilation, the overhead isn't as bad as before.  See
	  the comment near TM_EXACT_CALC for the details.

	* src/gauche/system.h (ScmTime): use ScmInt64 to represent seconds
	  to avoid year 2038 problem.
	* src/system.c: Changed accordingly.  Added Scm_MakeTime64() and
	  Scm_Int64SecondsToTime().
	* src/gauche/int64.h, src/number.c: Added macros (SCM_INT64_EQV,
	  SCM_INT64_CMP, SCM_SET_INT64_BY_LONG, SCM_SET_INT64_BY_DOUBLE)
	  and APIs (Scm_Int64ToDouble, Scm_UInt64ToDouble, Scm_DoubleToInt64,
	  Scm_UInt64ToDouble).

2007-10-29  Shiro Kawai  <shiro@acm.org>

	* release 0.8.12

	* winnt/winvc-prep.sh, DIST: enable preparation for winvc from
	  the distribution tarball.
	* src/system.c: Some fixes for MinGW.

2007-10-27  Shiro Kawai  <shiro@acm.org>

	* gc/configure.in: Added CFLAGS to compile on Leopard.

	* src/objlib.scm (x->integer, x->string): a bit of simplification.

2007-10-23  Shiro Kawai  <shiro@acm.org>

	* ext/dbm/gdbm.scm (dbm.gdbm): added missing exports (gdbm-errno,
	  GDBM_SYNCMODE.

2007-10-01  Shiro Kawai  <shiro@acm.org>

	* src/number.c (read_number, double_print): Changed infinities and
	  NaN notation to +inf.0, -inf.0 and +nan.0, according to R6RS.
	  The old syntax #i1/0, #i-1/0 and #i0/0 are recognized for
	  the compatibility.

	* ext/net/net.ac, ext/net/net.c: Removed dependency on inet_aton
	  (always using inet_pton).

	* lib/gauche/parseopt.scm: When "f" is specified as the option's
	  argument type, it allows rational number to be given but coerces
	  it to flonum.

2007-09-28  Shiro Kawai  <shiro@acm.org>

	* ext/auxsys/auxsys.c (Scm_Environ),
	  ext/auxsys/auxsyslib.stub (sys-environ),
	  ext/auxsys/auxsys.scm (sys-environ->alist): Added sys-environ
	  and sys-environ->alist to obtain all environment variable bindings
	  of the current process.

2007-09-27  Shiro Kawai  <shiro@acm.org>

	* ext/sxml/Makefile.in, ext/sxml/sxml-sxpath.scm.in: avoid dependency
	  on sxml-tools at generation time, by turning the references to
	  it into autoloads.

	* lib/gauche/fileutil.scm (glob-fold-1): Changed the traversal
	  procedure from 'lister' (returns a list) to 'folder' (works like
	  fold), for better flexibility.

2007-09-24  Shiro Kawai  <shiro@acm.org>

	* lib/text/progress.scm (make-text-progress-bar): added a feature to
	  show information text on right, and allow to alter header and info
	  text on the fly.
	* ext/sxml/Makefile.in: temporarily reverted to make sxml-sxpath.c
	  to depend on sxml-tools.so, because of the build problem.  This
	  doesn't work on windows port, though, so we might need to find
	  some trick.

2007-09-18  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/sequence.scm: added permute and shuffle.

2007-09-17  Shiro Kawai  <shiro@acm.org>

	* src/system.c, src/syslib.stub, src/auxsyslib.stub, src/process.scm:
	  Implemented an abstraction layer for kill and waitpid (Scm_SysKill,
	  Scm_SysWait) to support windows process smoothly.  For Windows
	  processes we keep its process handle instead of an integer pid.

2007-09-16  Shiro Kawai  <shiro@acm.org>

	* src/number.c (Scm_NumCmp): apply short cut path for the case when
	  both args are negative.

2007-09-13  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h, src/class.c: Resurrected windows DLL data import hack
	  we used to had for cygwin support (back in 2002).   We have dropped
	  the hack since the newer gcc supports auto data importing (by
	  runtime pseudo reloc), but we found that the same technique can
	  be used for Windows/VC++.  This supersedes the kludge in 2007-09-10
	  changes.
	* src/gauche/extend.h: SCM_EXTENSION_ENTRY macro to indicate
	  the initialization function entry of extension modules; needed
	  for Win/VC.
	* src/* : various additions for MSVC support.  shouldn't affect
	  unix build.

2007-09-10  Shiro Kawai  <shiro@acm.org>

	* src/gencomp: make it accept -D option to specify preprocessor
	  symbols.

	* src/gauche/extern.h: added to hide windows dll insanity.
	* src/gauche.h, src/gauche/class.h, src/gauche/string.h,
	  src/gauche/code.h, src/genstub, src/gencomp,
	  lib/gauche/cgen/literal.scm: Experimentally added a workaround
	  to the MSVC linker limitation that the address of external variables
	  in a separate DLL can't be used in a constant expression to
	  initialize static variables.  It defeats the Gauche's tag
	  architecture.  This fix makes the static Scheme objects to be
	  initialized with dummy tags (see SCM_CLASS_STATIC_TAG in gauche.h),
	  and "patches" the correct tag in the initializatin code.

2007-09-06  Shiro Kawai  <shiro@acm.org>

	* src/char.c, src/read.c, src/port.c, ext/charconv/charconv.c,
	  ext/uvector/uvinit.c: Instead of letting extensions set the hook
	  function pointer, added an explicit API to set the hook (for
	  easier handling in windows dll).

2007-08-29  Shiro Kawai  <shiro@acm.org>

	* ext/net/net.scm, ext/net/gauche/net.h, lib/gauche/cgen/cise.scm:
	  typo fix.

	* src/number.c (numcmp3): optimization in case when all args are
	  fixnums (can happen on 64bit machines).

2007-08-28  Shiro Kawai  <shiro@acm.org>

	* src/number.c, src/string.c, src/class.c, src/bignum.c: various
	  small fixes.

	* lib/gauche/fileutil.scm (glob, glob-fold, sys-glob): Implemented
	  glob functionality in Scheme.
	* src/autoload.scm (glob, glob-fold, sys-glob): sets these autoloads.
	* src/syslib.stub (sys-glob), src/system.c (Scm_GlobDirectory):
	  removed C-function for the glob() interface.

	* src/extlib.stub (read-char-set): Expose char-set parser to
	  the Scheme level.

2007-08-26  Shiro Kawai  <shiro@acm.org>

	* libsrc/file/util.scm (file->string etc.): made them gracefully
	  return #f if the file doesn't exist and :if-does-not-exist #f
	  is given.
	  (temporary-directory): look at TMPDIR environment variable.
	  (current-directory): clean up.

	* src/number.c (Scm_NumCmp): fixed a bug in the short cut path
	  of ratnum vs ratnum comparison.

	* ext/net/netlib.stub (socket-input-port, socket-output-port):
	  Fixed a bug that (effectively) forces socket input mode to be
	  :full, making many network applications behave incorrectly.

2007-08-25  Shiro Kawai  <shiro@acm.org>

	* src/regexp.c (regmatch_ref): fixed a bug that the failed named
	  submatch returns "" instead of #f.
	* lib/gauche/cgen/cise.scm (render-rec): handles character constants
	  outside of alphanumeric range.

2007-08-24  Shiro Kawai  <shiro@acm.org>

	* Start adding Windows/MSVC support.
	* DIST: added 'winvc' target to pre-generate files necessary to
	  compile with VisualStudio.
	* winnt/*: files for VisualStudio.
	* src/gauche/win-compat.h: renamed from mingw-compat.h and
	  integrated MSVC support.
	* src/*.c : various touch-up for Windows support.

2007-08-21  Shiro Kawai  <shiro@acm.org>

	* DIST, */Makefile.in : adjusted pre-package make target so that
	  it will do most of the pre-packaging job, hence can make DIST script
	  less cluttered.

2007-08-16  Shiro Kawai  <shiro@acm.org>

	* release 0.8.11

2007-08-15  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen/cise.scm (define-cise-stmt, define-cise-expr):
	  A bit of touch-up for cise API.
	* src/genstub: recognize define-cise-stmt and define-cise-expr as
	  a stub forms, so that one doesn't need to use eval* form.
	  I'm ambivalent on the eval* stub form; maybe it should be removed.
	* src/stdlib.stub, src/extlib.stub: changed accordingly.

2007-08-14  Shiro Kawai  <shiro@acm.org>

	* configure.ac: fixed a problem to set GAUCHE_USE_PTHREADS correctly
	  when thread type isn't specified.

2007-08-13  Shiro Kawai  <shiro@acm.org>

	* src/port.c (Scm_PortFdDup), src/extlib.stub (port-fd-dup!):
	  Added an interface to dup2(2).  Patch from Rui Ueyama.

	* src/bignum.c (Scm_BignumToDouble): Fixed a double rounding bug
	  caused from using flonum arithmetic (see the comment for the
	  details).
	* src/bignum.c (Scm_BignumLogCount), src/extlib.stub (logcount):
	  Implemented logcount natively on top of ScmBits API.
	* src/gauche/float.h (ScmIEEEDouble): moved the structure definition
	  from src/number.c, for it is now used by both number.c and
	  bignum.c.
	* lib/gauche/logical.scm: removed logcount.
	* src/bits.c: finally a working version.

2007-08-11  Shiro Kawai  <shiro@acm.org>

	* src/load.c (Scm_ResolveAutoload): Renamed from Scm_LoadAutoload,
	  and changed so that it returns SCM_UNBOUND instead of raising an
	  error when it detects the autoload is recursive.  That allows
	  more natural handling in implicit binding checks like implicit
	  generic definition by define-method or implicit redefinition
	  check by define-class.  Note that the caller of Scm_ResolveAutoload
	  must check if the return value is SCM_UNBOUND and take an appropriate
	  action.

	* src/gauche.h: Because of the above change, we dropped
	  SCM_BINDING_KEEP_AUTOLOAD flag for Scm_GlobalVariableRef, since
	  it was introduced only to avoid the recursive autoload in the
	  implicit generic definition.  We no longer need it.
	* src/module.c (Scm_GlobalVariableRef): Changed accordingly.
	* src/moplib.stub (%ensure-generic-function): Changed accordingly.

	* src/class.c (Scm_CheckClassBinding): Simplified according to
	  the above change.

	* test/load2.scm: Added to test the above autoload mechanisms.
	  This can't be in load.scm, since we have to test it after
	  object.scm.

2007-08-10  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/test.scm (test-end): Let it return the number of
	  failed tests.  May be useful if the test script wants to return
	  non-zero exit status when test fails (e.g. (exit (test-end)) ).
	  Suggested by Masatake YAMATO.

2007-08-09  Shiro Kawai  <shiro@acm.org>

	* configure.ac: When --enable-threads is not given (or 'default' is
	  given) we turn on pthreads support on available platforms, and
	  turn off on others.
	  Also defines _POSIX_PTHREAD_SEMANTICS on Solaris with threads
	  so that we can get a pthread-compatible API
	  (more specifically, sigwait()).
	* gc/configure.in: Adapted to the above change; now we ignore
	  --enable-threads, and rely on the info the main 'configure.ac'
	  left in 'config.threads'.
	* src/gauche/config.h.in: added _POSIX_PTHREAD_SEMANTICS.
	* src/gauche.h: Include gauche/config.h before any headers so that
	  the definitions like _POSIX_PTHREAD_SEMANTICS can affect the
	  system headers.
	* src/signal.c: removed system header includes, since they are
	  included in gauche.h anyway.

	* libsrc/srfi-1.scm (list=): bug fix for handling more than three
	  lists.  (Patch from OGURISU Osamu).

	* ext/template.Makefile.in, lib/gauche/package/compile.scm:
	  Supports separate buiddir during compiling extension packages
	  (Patch from Leonardo Boiko).

	* doc/corelib.texi (Symbols): removed the remark of "symbols are always
	  interned", since gensym'ed symbols are not interned.

	* src/gencomp (allocate-code-vector): properly escape '/*' and '*/'
	  in the inserted comments.

	* src/class.c, src/port.c, src/vm.c: added casts between intptr_t and
	  void* for proper operation on LP64.  (Patch from Rui Ueyama).

	* lib/gauche/time.scm (gauche.time): export <time-counter>.  Although
	  it is a pure abstract class, user may want to define a method
	  specializing for a bunch of time-counter subclasses.

2007-08-08  Shiro Kawai  <shiro@acm.org>

	* src/intlib.stub: include gauche/memory.h to get decl of
	  GC_print_static_roots.

	* src/core.c (Scm_Init): added missing call to Scm__InitCollection().

2007-08-07  Shiro Kawai  <shiro@acm.org>

	* src/port.c (port_cleanup): resurrected unregister_buffered_port
	  to remove active buffererd port entry when a port is closed.
	  It was removed before, since when port_cleanup is called via
	  port's finalizer, the entry is already cleared by GC.  However,
	  it turned out that there was a case that number of closed ports
	  retained from GC grew, prohibiting new ports from being registered
	  to the active buffered port vector.  Note: maybe we can also
	  clear some pointers in the port when it is closed, so that the
	  stuff referenced from the port can be GCed even the closed port
	  itself lives longer.

2007-08-06  Shiro Kawai  <shiro@acm.org>

	* src/number.c (Scm_DoubleToHalf): fixed to make sure shifting long
	  literal instead of int literal to generate a mask larger than 32bits.
	  The bug yielded incorrect rounding behaviour on 64bit platforms.

2007-08-05  Shiro Kawai  <shiro@acm.org>

	* ext/net/test.scm: Avoid using "ip" for testing getprotobyname/
	  getprotobynumber, since the official name of protocol number 0
	  has been changed and we're in transition phase.  Using "icmp"
	  instead.

	* libsrc/file/util.scm (copy-file): Added :keep-mode keyword arg.

2007-08-02  Shiro Kawai  <shiro@acm.org>

	* src/syslib.stub (sys-umask): Support omitting mode to query
	  the current umask without changing it.

2007-07-31  Shiro Kawai  <shiro@acm.org>

	* libsrc/srfi-13.scm (%string-*case!): fixed a bug that caused an
	  error when the last optional args are omitted for string-downcase!
	  etc.

2007-07-25  Shiro Kawai  <shiro@acm.org>

	* src/hash.c (string_access): fixed invalid argument passed to
	  Scm_Error (ScmHashTableCore* is not ScmObj).

2007-07-16  Shiro Kawai  <shiro@acm.org>

	* src/number.c (Scm_GetDouble): fixed a bug on big ratnum coercion
	  that caused SEGV in some cases.
	  (Scm_NumCmp): fixed a bug on comparing small ratnum with big
	  denominator with fixnum.

2007-07-10  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/collection.scm: Added find-min, find-max, and
	  find-min&max.

2007-06-30  Shiro Kawai  <shiro@acm.org>

	* src/scmlib.scm (error): error message formatting routines didn't
	  consider circular structure, causing SEGV when such a structure
	  is given to error/errorf.

2007-06-22  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (cond, case): exclude dotted list from clauses
	  and properly reports syntax error instead of SEGV.
	* lib/rfc/http.scm (request-response): fixed a bug that ignores
	  :sink and :flusher keyword arguments.
	* lib/gauche/interactive/info.scm (viewer): fixed malformed
	  with-signal-handlers (enbugged when we rewrite with-error-handler
	  to guard?)
	* ext/uvector/uvector.c.tmpl (Scm_WriteBlock): added a missing breaks.
	  (Scm_UVectorCopy, Scm_UVectorSwapBytes, Scm_UVectorSwapBytesX):
	  f16vector support was missing.
	* src/vm.c (get_debug_info): fixed a bug in the range check.

2007-05-31  Shiro Kawai  <shiro@acm.org>

	* src/hash.c, src/weak.c, src/gauche/hash.h, src/gauche/weak.h,
	  src/extlib.stub: some additions for weak hash tables.  unfortunately
	  I found the current hash core implementation doesn't go well with
	  key-weak hash table, and am planning to replace hash core
	  implementation; for the time being, I freeze development of
	  weak hash tables.

2007-05-22  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/ftp.scm (req&send, ftp-put-unique): made ftp-put-unique
	  to return two values, a final server's response and the remote
	  file path given by 1xx response.  AN INCOMPATIBLE API CHANGE.
	  But I assume nobody has been used ftp-put-unique seriously,
	  for it is almost useless without obtaining the generated remote path.

	* configure.ac: shows some of the configuration parameters
	  at the end, upon a request.

	* ext/net/netlib.stub (sockaddr-addr): fixed inet6 address bug
	  in LP64 architectures, and also adaped to gauche.cgen.cise.

	* lib/rfc/ftp.scm (call-with-ftp-connection): Fix passing wrong
	  keyword argument to ftp-login.

	* src/number.c (Scm_NumCmp): Fixed a bug that raises an error when
	  attempted to compare bignum and infinity.

	* lib/slib.scm.in (force-output): oversight.  made it an alias of
	  flush.

	* src/main.c (main): temporarily avoided using new Scm_Apply API
	  due to the bug that lost stack traces.

2007-05-21  Shiro Kawai  <shiro@acm.org>

	* src/gauche/charset.h (SCM_CHAR_SET etc): Changed CHARSET in
	  macro names to CHAR_SET for the consistency.  Old names are
	  defined for compatibility but will fade out.
	* src/char.c, src/regexp.c, src/class.c: changed accordingly.

	* lib/gauche/cgen/cise.scm: Allow embedding Scheme constants
	  by quote form.  Allow omitting type declaration if it's ScmObj.
	  Some more conveniece macros.
	* src/extlib.stub: changed to use gauche.cgen.cise more.

2007-05-19  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/miscutil.scm: added.
	* src/autoload.scm: added autoload for gauche.miscutil.

	* lib/gauche/cgen/cise.scm: added.  A utility to generate C code
	  from S-expression.  The spec is still experimental and may be
	  tweaked.
	* src/genstub, src/stdlib.stub, src/extlib.stub: changed to use
	  gauche.cgen.cise module.
	* lib/Makefile.in, lib/gauche/cgen/unit.scm: changed accordingly.

2007-05-15  Shiro Kawai  <shiro@acm.org>

	* ext/fcntl/fcntl.c, ext/net/netdb.c, ext/termios/termios.c,
	  ext/threads/mutex.c, src/class.c, src/codec, src/compaux.c,
	  src/error.c, src/genstub, src/proc.c, src/system.c:
	  Use SCM_CLASS_SLOT_SPEC_END() macro instead of literal constant.
	  Patch from MUTOU Masayuki.

2007-05-04  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interpolate.scm (%string-interpolate): recognize '[' and
	  '{' as the beginning of unquoted expression as well.

	* src/genstub, lib/gauche/cgen/unit.scm, lib/gauche/cgen/literal.scm:
	  Further integrated genstub's code into gauche.cgen.*.  Changes
	  include: Cpp conditions are now supported by <cgen-node>.
	  The subclass of <cgen-node> should override cgen-emit-* methods,
	  not the cgen-emit method.  Some of literal handling code
	  are moved to gauche.cgen.*.
	  Also experimentally testing shorthand notation of ref.

2007-04-26  Shiro Kawai  <shiro@acm.org>

	* src/genstub: Refactored to utilize more features of gauche.cgen;
	  the original genstub predated gauche.cgen and had many kludges
	  that gauche.cgen solved better.

	* src/gauche/port.h: Fixed a problem that compatibility functions
	  are not declared when necessary (#ifdef area got wrong).

2007-04-23  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen.scm, lib/gauche/cgen/unit.scm,
	  lib/gauche/cgen/literal.scm: Splitted gauche.cgen module for
	  modularity and readability.

2007-04-22  Shiro Kawai  <shiro@acm.org>

	* ext/auxsys/auxsys.scm (sys-realpath): typo fix.

2007-04-21  Shiro Kawai  <shiro@acm.org>

	* src/gauche/weak.h, src/weak.c: Start adding weak hash table
	  (not finished yet).
	* src/hash.c: added Scm_HashCoreInitGeneral.

2007-04-20  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub (hash-table-clear!): added.

	* ext/net/net.c (init_winsock): typo fix for mingw.

2007-04-18  Shiro Kawai  <shiro@acm.org>

	* release 0.8.10

	* lib/www/cgi.scm (cgi-main): fix to make error handler called
	  correctly.
	* src/system.c (copy_win32_path): bug fix on mingw.

2007-04-17  Shiro Kawai  <shiro@acm.org>

	* src/vm.c, src/vminsn.scm, src/compile.scm: Inline inexact arithmetic
	  operators (+., -., *. and /., as NUMIADD2, NUMISUB2, NUMIMUL2, and
	  NUMIDIV2).  These operators are meant for performance tuning, so
	  it's better to make them as fast as normal operators.

	* ext/net/netlib.stub (inet-checksum): fix for big-endian machines.
	* src/hash.c (NOTFOUND): added missing 'return'.
	* src/gauche/bits.h (SCM_BITS_TEST): fix for 64bit platform

2007-04-16  Shiro Kawai  <shiro@acm.org>

	* ext/charconv/cvt.scm (generate-utf8->eucj): fix for not generating
	  mappings from U+0080-U+009f range; they produced wrong EUC sequence,
	  causing troubles.  Now they are replaced to alternative characters.

2007-04-15  Shiro Kawai  <shiro@acm.org>

	* src/port.c, src/scmlib.scm, src/stdlib.stub, src/extlib.stub,
	  src/gauche/port.h:  Made current-{input|output|error}-port
	  like parameters, allowing replacing them.  Moved implementation
	  of with-input-from-port etc. to Scheme (scmlib.scm), hence dropping
	  them from extlib.stub.  Scm_WithPort is also dropped.
	  New API Scm_SetCurrentInputPort etc.
	  The old Scm_WithPort had a bug that didn't set a proper "before"
	  thunk for dynamic-wind.  The bug doesn't exist in the new version.

	* src/genstub (emit-definition): removed remanings of GAUCHE_SUBR_VM
	  support.
	  (<procstub>): moved several slots from <cproc> to fix define-cmethod.
	  (define-cmethod): fixed incorrectly placed close paren.
	  (parse-specialized-args): reversing parsed arglist.
	  (process-body-spec): removed remainings of GAUCHE_VMAPI_VM support

	* src/gauche/mingw-compat.h: added #undef small, for <windows.h>
	  defines 'small' to 'char'.

2007-04-13  Shiro Kawai  <shiro@acm.org>

	* lib/www/cgi.scm: Fixed a bug that hangs when Content-Length is zero
	  (Patch from Tatsuya BIZENN).

	* src/hash.c (Scm_HashIterInit, Scm_HashIterNext): changed so that
	  the initial iterator points "one before the first entry" and
	  the 'next' operation returns an entry after proceeding the pointer.
	  It is consistent with Scm_TreeMapInit/Next. - Nope.  Reverted.
	  If the caller happens to delete the curent entry from the table,
	  the new version of the iterator loses the iteration.  We can prevent
	  that by letting the iterator prefetch the next entry---but the code
	  to do prefetch is exactly the same the previous version was doing!
	  (The change would be visible if we have HashIterCurrent, but it
	  seems little use so we dropped it.  If we ever re-adopt
	  HashIterCurrent do not forget to keep the current entry pointer
	  as well as the 'next' prefetch pointer).

2007-04-11  Shiro Kawai  <shiro@acm.org>

	* src/write.c (Scm_Sprintf, Scm_SprintfShared, Scm_Vsprintf): added
	  convenience functions.
	* src/error.c : changed to use above new APIs.

	* src/load.c, src/gauche/load.h (Scm_Load, Scm_LoadFromPort,
	  Scm_Require): New APIs for better error handling.
	* src/read.c, src/main.c, src/extlib.stub, src/char.c:
	  changed accordingly.

2007-04-08  Shiro Kawai  <shiro@acm.org>

	* src/collection.c, src/gauche/colleciton.h: Make SCM_DICT_SET_VALUE
	  to check iff given value isn't an obviously illegal value (e.g.
	  NULL or SCM_UNBOUND), for the safety.
	* src/module.c: Replaced old hashtable APIs for the new ones.

2007-04-07  Shiro Kawai  <shiro@acm.org>

	* src/char.c (Scm_CharSetLE): fixed a bug.

	* lib/gauche/test.scm: record "abort count", the # of test processes
	  aborted, as well.

	* src/hash.c, src/gauche/hash.h, src/gauche.h: Changed hashtable API
	  for consistency of dictionary API.  This introduces incompatibility
	  in Scm_HashIterInit and Scm_HashIterNext, which we provide the
	  backward compatibility routines by default; defining GAUCHE_API_0_9
	  make the new API visible.  Also we deprecate Scm_HashTableGet,
	  Scm_HashTablePut, and Scm_HashTableAdd, in favor of the new
	  APIs Scm_HashTableRef and Scm_HashTableSet.  (Scm_HashTableDelete
	  is also changed, but it only changes its return type which isn't
	  used much.)   All the "raw" hashtable support is dropped, in favor
	  of ScmHashTableCore.
	* src/class.c, src/extilb.stub, src/module.c: Changed to adapt the
	  new hashtable API.

2007-04-06  Shiro Kawai  <shiro@acm.org>

	* lib/text/progress.scm: fix.
	* examples/text-progress.scm: added.

2007-04-04  Shiro Kawai  <shiro@acm.org>

	* src/gauche/charset.h: splitted char-set related API decls.
	* src/char.c: rewrote ScmCharSet using ScmBits and ScmTreeCore.
	  API rename for consistency: Scm_CopyCharSet -> ScmCharSetCopy.
	* src/treemap.c: adjust some APIs based on the experience of
	  reimplementing ScmCharSet.

	* src/gauche/collection.h (ScmDictEntry): make 'key' member const.

2007-03-31  Shiro Kawai  <shiro@acm.org>

	* src/gauche/bits.h, src/bits.c: added ScmBits, generic bitarray
	  operation support.  A plan is to use this to cleanup charset
	  implementation and also for CL-ish bitvector.  Some other
	  datastuructures may take advantage of this.
	* src/char.c: using ScmBits for the small character maps.

	* src/core.c (init_cond_features): adds the feature gauche.sys.pthreads
	  if Gauche is compiled w/ pthread support.

	* src/syslib.stub (sys-symlink): defines sys-symlink conditionally,
	  with the feature identifier gauche.sys.symlink.

2007-03-28  Shiro Kawai  <shiro@acm.org>

	* src/core.c: defines the feature identifier gauche.sys.pthreads
	  if Gauche is compiled with pthreads enabled.

2007-03-27  Shiro Kawai  <shiro@acm.org>

	* test/system.scm: use sys-nanosleep instead of sys-sleep if
	  possible, to reduce the time of test.

	* ext/auxsys/auxsys.c (Scm_SetEnv): added a wrapper routine for
	  sys-putenv and sys-setenv, so that we can use whichever available
	  on the system.  Importantly, this will fix the leak problem of
	  sys-putenv on the common platform that supports setenv(3).
	* ext/auxsys/auxsys.scm: cleanup some cond-expands.

2007-03-26  Shiro Kawai  <shiro@acm.org>

	* src/stdlib.stub (vector-ref, vector-set!),
	  src/vector.c (Scm_VectorRef, Scm_VectorSet): we can't use ::<fixnum>
	  type for the index of vector-ref, since bignum is allowed if
	  fallback is also given.  Because of this, we moved range check
	  to stub, and made Scm_VectorRef not raise an error.  Similar change
	  on vector-set! for consistency.

	* src/vm.c (SCM_VEC_REF etc): fix error message.  if bignum is given
	  as an index, the message should be "out of bound" instead of
	  wrong type argument.

	* src/number.c (Scm_GetDouble): handles the corner case when ratnum
	  has very large denominator and/or numerator.

	* src/treemap.c, src/gauche/treemap.h: Renamed and cleaned up some
	  treemap API for the consistency.

2007-03-24  Shiro Kawai  <shiro@acm.org>

	* ext/net/net.ac: added a hack to avoid dragonfly's broken
	  gethostbyaddr_r.

2007-03-23  Shiro Kawai  <shiro@acm.org>

	* configure.ac, gc/configure.in, gc/libtool.m4: Patched to support
	  DragonFly BSD.

	* ext/net/addr.c, ext/net/test.scm: struct in6_addr.s6_addr32 isn't
	  portable, so we roll our own.  also make sure we won't run ipv6
	  inet_pton/ntop if Gauche isn't configured with ipv6.  Patch from
	  Tatsuya BIZENN.

2007-03-22  Shiro Kawai  <shiro@acm.org>

	* ext/sxml/sxml-ssax.scm.in: extend text.parse as well, for
	  ssax:make-parser inserts assert-curr-char.

	* ext/mt-random/mt-random.c (mt_allocate): Seed initialization was
	  broken when seed is given to the initialization argument.
	  Consolidated mt-random-set-seed! and seed initialization into
	  Scm_MTSetSeed.

	* ext/net/netaux.scm, ext/net/netlib.stub, ext/net/net.c:
	  Implemented inet-address->string and inet-string->address in C,
	  using inet_pton and inet_ntop.

2007-03-21  Shiro Kawai  <shiro@acm.org>

	* ext/srfi/srfi-19-lib.scm (tm:directives): fix date formats to make
	  them iso-8601 compliant.

2007-03-16  Shiro Kawai  <shiro@acm.org>

	* ext/dbm/dbm.ac: checks for ndbm funcs in more libraries.
	* ext/xlink: allow no file arguments; depending on configuration,
	  both $(LIBFILES) and $(SCMFILES) can be empty in ext/Makefile.ext.
	* src/genconfig.in: be friendly to autoconf 2.60.

	* lib/gauche/dictionary.scm: dictionary generic functions.
	  experimental.
	* src/objlib.scm: added 'ref' and 'set!' methods for tree-map.

2007-03-15  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/icmp.scm: added ICMPv6 support.

	* ext/net/net.c, ext/net/netlib.stub (inet-checksum+): added
	  inet-checksum+, which can be used to combine checksums; handy
	  for IPv6 packet checksum calculation, for it requires including
	  pseudo-IPv6 header.  See RFC2460 sectin 8.1.
	  Nope! reverted.  Kernel takes care of IPv6 checksum, so we
	  don't need it.

2007-03-14  Shiro Kawai  <shiro@acm.org>

	* ext/net/addr.c (sockaddr_in6_allocate): fixed memory leak (missing
	  freeaddrinfo).

2007-03-12  Shiro Kawai  <shiro@acm.org>

	* src/error.c, src/gauche/exception.h: Dropped <application-exit>
	  exception; it doesn't work well.  The most annoying part is
	  that the exception may be shadowed by other exceptions if the
	  latter is thrown within the error handler; it does happen, for
	  example, in the cleanup clause of unwind-protect.  We still want
	  the applictation to exit without reporting stack trace even something
	  fails in cleanup handlers.  It seems that application-exit needs
	  different mechanism to trap (e.g. exit-handler) after all.

2007-03-11  Shiro Kawai  <shiro@acm.org>

	* src/number.c (Scm_RoundToExact), src/extlib.stub (round->exact etc):
	  implemented round->exact etc in C, for it can avoid some overhead
	  and makes them much faster.  Since the operation is so common I
	  think it's worth of it.
	* lib/gauche/numerical.scm, src/autoloads.scm: removed round->exact
	  etc, for they're in extlib.stub now.

2007-03-10  Shiro Kawai  <shiro@acm.org>

	* src/genconfig.in : Lets genconfig generate lib/gauche/config.scm,
	  so that gauche.config no longer needs to call gauche-config command.
	* lib/gauche/config.scm: Removed from repository, for it is now
	  generated by src/genconfig.

2007-03-09  Shiro Kawai  <shiro@acm.org>

	* src/Makefile.in (HOSTGOSH): reset GAUCHE_LOAD_PATH and
	  GAUCHE_DYNLOAD_PATH to avoid unexpected interference.

	* ext/auxsys/auxsys.scm (sys-fdset): added a convenience constructor
	  of <sys-fdset>.

2007-03-06  Shiro Kawai  <shiro@acm.org>

	* lib/text/progress.scm: added.

	* src/gauche-init.scm, src/scmlib.scm: moved string-interpolate
	  read-ctor and <exception> definition from gauche-init.scm to
	  scmlib.scm.  We can't move three define-macro stuff yet, since
	  gencomp doens't preserve macro definitions, but eventually we
	  want to eliminate gauche-init.scm totally.
	* lib/gauche/numerical.scm, src/autoloads.scm: added
	  round->exact, floor->exact, ceiling->exact and truncate->exact.

2007-03-05  Shiro Kawai  <shiro@acm.org>

	* src/main.c: Added -F<feature> option and -L<file> option.

2007-03-04  Shiro Kawai  <shiro@acm.org>

	* src/main.c: Handle <application-exit> during execution of 'main'
	  procedure.

	* lib/gauche/process.scm: Added support of remove execution by
	  :host keyword argument.

	* ext/net/addr.c: Allow <sockaddr-in> and <sockaddr-in6> constructors
	  to take integer and u8vector IP address as :host initializer
	  keywords.
	* ext/net/netlib.stub, ext/net/netaux.scm: Implements sockaddr-name
	  of <sockaddr-in> and <sockaddr-in6> in Scheme, since now we have
	  inet-address->string so they're more concise in Scheme.
	* ext/net/net.c (socket-setsockopt): Accepts uniform vector as
	  a value.  We'll phase out the use of string as a binary data
	  and replace them for uvectors.

2007-03-03  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/time.scm: use inexact arithmetics to avoid the timer
	  results being ratnums.

	* src/number.c (div_internal): fix: (/ 0 <inexact-number>) must be
	  the inexact zero, not the exact zero.
	* src/extlib.stub: added inexact arithmetics: +. -. *. /.

	* ext/net/netaux.scm: added inet-address->string, inet->string->address
	  and inet-string->address! (these have replaced the provisional
	  address parsers in rfc.ip).

2007-03-01  Shiro Kawai  <shiro@acm.org>

	* ext/net/net.c: cleaned up winsock-specific code using
	  Scm_AddCleanupHandler.  Also add the feature gauche.net.ipv6
	  conditionally.

	* src/core.c (Scm_AddFeature): Moved cond-features management code
	  here from load.c, and cleaned up API.
	* src/intlib.stub (cond-features): ditto.
	* lib/srfi-0.scm (cond-expand): ditto.

	* src/genstub: added 'when' directive.

	* src/char.c: added a feature, either one of gauche.ces.utf8,
	  gauche.ces.sjis, gauche.ces.eucjp, or gauche.ces.none, according
	  to the compile-time option.
	* src/syslib.stub: conditionally add features: gauche.sys.sigwait,
	  gauche.sys.nanosleep, gauche.sys.crypt, gauche.sys.symlink,
	  gauche.sys.readlink, gauche.sys.select.
	* ext/auxsys/*: conditionally add features: gauche.sys.realpath,
	  gauche.sys.getloadavg, gauche.sys.putenv, gauche.sys.setenv,
	  gauche.sys.unsetenv, gauche.sys.lchown.
	* ext/fcntl/fcntl.c: conditionally add a feature: gauche.sys.fcntl.
	* ext/termios/termiolib.stub: conditionally add features:
	  gauche.sys.openpty, gauche.sys.forkpty.
	* ext/syslog/syslog.stub: conditionally add features:
	  gauche.sys.syslog, gauche.sys.setlogmask

2007-02-26  Shiro Kawai  <shiro@acm.org>

	* src/error.c, src/vm.c, src/gauche/exception.h: Support
	  <application-exit> condition experimentally.

2007-02-24  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/ip.scm: added ip-parse-address and ip-parse-address!

2007-02-21  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/*: added Scm_UVectorSizeInBytes and uvector-size to
	  get uvector's size in bytes.  Useful to treat uvectors as a
	  binary buffer.
	* ext/binary/binary.c: changed to use above API.

	* ext/net/netlib.stub: added inet-checksum routine; the same checksum
	  routine is used for various protocols, so it may be worth to have
	  it (and it's pretty fast in C).

	* lib/rfc/ip.scm: Added experimentally.

2007-02-20  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/uri.scm (uri-encode-string, uri-decode-string): Support
	  :encoding keyword argument.
	  (*rfc2396-unreserved-char-set*, *rfc3986-unreserved-char-set*):
	  Export two slightly different "unreserved" char set, so that
	  the application can choose (or modify from) either one.
	  (uri-encode): Change the default :noescape value to
	  *rfc3986-unreserved-char-set*.  Patch by Tatsuya BIZENN.

	* ext/net/*: Added socket-recv! and socket-recvfrom!.  Changed
	  socket-send and socket-sendto to accept uniform vectors as well
	  as strings.  These are a part of shift towards using uniform
	  vectors uniformly for binary data, instead of strings.

	* lib/rfc/icmp.scm: added experimentally.

	* ext/binary/*: reconsidered and changed the argument order of put-*!
	  to be consistent with u*vector-set!; after some coding I found that
	  the original one was too confusing.

2007-02-19  Shiro Kawai  <shiro@acm.org>

	* configure.ac: added check for sys/types.h; gauche.h includes it
	  unconditionally, but some configure check (on some specific OS)
	  needs it to be included, so it is convenient to force all checks
	  include sys/types.h.  (Specifically, sys/socket.h requires
	  sys/types.h on older MacOSX).

	* ext/binary/*: Made default-endian a parameter; it eliminates
	  need to provide endian argument in almost all cases.
	  The peculiar endianness of double floats in ARM processors are
	  supported as arm-little-endian.
	  Renamed read-binary-uint8 etc. to read-u8 etc. for
	  brevity and consistency with uniform vectors (old names are
	  supported for the compatibility, but deprecated).
	  Added support of read from and write to uniform vectors.

2007-02-18  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/*, src/read.c: added f16vector support.  changed
	  {s,u}{8,16} unbox routine to use the new conversion API below.

	* src/gauche/number.h, src/number.c: Introduced ScmObj -> C integer
	  conversion routines for u8, s8, u16, and s16.

2007-02-17  Shiro Kawai  <shiro@acm.org>

	* src/gauche/parameter.h, src/parameter.c: Cleaned up Parameter-related
	  API.  Introduced ScmParameterLoc and Scm_DefinePrimitiveParameter
	  to make it easier to create and access (builtin) parameters from C.
	* src/vm.c, src/gauche/vm.h, src/gauche.h, src/extlib.stub: Changed
	  accordingly.

	* src/number.c (Scm_HalfToDouble, Scm_DoubleToHalf): Added conversion
	  functions for 16-bit float (half).
	* src/gauche/float.h: added.
	* configure.ac, src/gauche/config.h.in: added checks for uint16_t
	  and long double.
	* src/test-arith.c: added tests for 16-bit float support.
	* ext/binary/binarylib.stub, ext/binary/binary.c, ext/binary/io.scm:
	  added {read|write}-binary-half-float.

2007-02-16  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/test.scm: Added an experimental feature to report
	  the total test result across multiple test processes.  If
	  the environment variable GAUCHE_TEST_RECORD_FILE is defined,
	  gauche.test accumulates the test result stats into the named
	  file.
	* Makefile.in, src/Makefile.in, ext/Makefile.ext.in: modified
	  to support the above feature.

2007-02-13  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (iform-copy-lvar): fixed bug (compared lvars
	  by assoc, now by assq).  Patch from Rui Ueyama.

2007-02-12  Shiro Kawai  <shiro@acm.org>

	* src/treemap.c, src/gauche/treemap.h, lib/gauche/treeutil.scm:
	  Added native support of red-black tree, for it is useful to
	  implement efficient char-set, character attribute map, and
	  readtable.
	* src/collection.c, src/gauche/collection.h: Besides <collection>
	  and <sequence>, added two more abstract classes, <dictionary>
	  and <ordered-dictionary>.  These files implement some of
	  common stuff for these classes.
	* src/hash.c: Now inherits <dictionary> as well.
	* src/genstub: added <tree-map> as a builtin type.
	* src/extlib.stub: added some tree-map native cprocs.
	* src/autoloads.scm: added autoloads for gauche.treeutil.

	* lib/util/rbtree.scm: removed the previous content and changed
	  to use builtin tree-map.  This is kept for the backward
	  compatibility.

2007-02-10  Rui Ueyama  <rui314@gmail.com>

	* src/char.c (charset_print): write a character at once instead of
	  byte-by-byte.

	* src/write.c: fixed a bug of handling multibyte character,
	  causing Scm_WriteLimited to raise an error.

2007-02-09  Rui Ueyama  <rui314@gmail.com>

	* test/rfc.scm: Added tests for rfc.html module.

	* lib/rfc/http.scm: Added <http-error>.  Fixed a bug in the case
	  of HTTP request is redirected, causing malformed request-line is
	  sent to a server.

2007-02-04  Shiro Kawai  <shiro@acm.org>

	* lib/www/cgi/test.scm: Renamed www.cgi-test module to www.cgi.test
	  module (www.cgi-test is kept for backward compatibility).

	* src/port.c, src/gauche.h (Scm_GetOutputString,
	  Scm_GetOutputStringUnsafe, Scm_GetRemainingInputString): API CHANGE:
	  New API takes string constructor flags.  Compatibility macros
	  are provided by default; defining GAUCHE_API_0_9 makes the new
	  API visible.

	* src/gauche/string.h: Splitted String API.
	* src/string.c, src/extlib.stub: Removed string mutating APIs:
	  Scm_StringSet(), Scm_StringByteSet(), Scm_StringSubstitute(),
	  and Scm_StringFill().  Since string bodies are immutable,
	  there's little advantage for providing these operations in C.
	  Instead, String_ReplaceBody() and Scheme-level
	  %string-replace-body! are added.  Scheme-level string mutators
	  are built on top of this.
	* src/scmlib.scm: Defines string-set!, string-byte-set! and
	  string-fill! here.  Note: There's no more string-substitute!.
	* libsrc/srfi-13.scm: Changed string-copy!, string-upcase!,
	  string-downcase!, string-titlecase!, string-reverse!,
	  string-map! and string-xcopy! to use %string-replace-body!
	  instead of string-substitute!.

2007-02-02  Shiro Kawai  <shiro@acm.org>

	* src/core.c (Scm_GC): added an API to trigger GC.

	* src/gauche.h (SCM_NEW_ATOMIC_ARRAY): added for consistency.

	* src/gauche/symbol.h, src/gauche/gloc.h, src/gauche/keyword.h,
	  src/gloc.c, src/Makefile.in:  Reorganized the sources.

2007-02-01  Shiro Kawai  <shiro@acm.org>

	* ext/dbm/dbm.ac, ext/dbm/dbmconf.h.in, ext/dbm/ndbm.stub,
	  ext/dbm/odbm.stub: Some platform has gdbm-ndbm.h etc., and/or
	  requires -lgdbm_compat, for dbm/ndbm compatibility.  Added
	  autoconf stuff to detect that.  It became unnecessarily complicated
	  because of the defect of autoconf design (its name translation
	  scheme can't distinguish gdbm/ndbm.h and gdbm-ndbm.h!)

	* test/system.scm: Changed tests for mkdir/chmod/fchmod to tolerate
	  the case that the directory is sgid-ed.

	* lib/gauche/process.scm (run-process): Changed the API to be
	  consistent with other keyword-argument taking procedures.
	  Old API is still supported but deprecated.  The reasons of
	  the change are (1) STk compatibility is much less important
	  now, and (2) it's easier to write code that calls run-process
	  if it takes keyword arguments canonically.

2007-01-30  Rui Ueyama  <rui314@gmail.com>

	* src/read.c (read_internal, process_sharp_comma), src/gauche.h:
	  avoid evaluating SRFI-10 sharp-comma expression within SRFI-62
	  S-expression comment.

2007-01-21  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/package/compile.scm
	  (gauche-package-link, gauche-package-compile): let them recognize
	  extra keyword args, for such keywords can be passed via
	  gauche-package-compile-and-link.

	* lib/www/cgi-test.scm (call-with-cgi-script): added :on-abnormal-exit
	  :ignore to call-with-process-io.  (Note: the proper fix may be to
	  mask SIGPIPE when running the child process instead of ignoring
	  the error.)

2007-01-21  Rui Ueyama  <rui314@gmail.com>

	* lib/gauche/common-macros.scm (let-keywords): added let-keywords.
	* src/autoloads.scm, test/procedure.scm: changed accordingly.

	* lib/gauche/common-macros.scm (let-keywords*): issue a warning if
	  given argument list contains unknown keyword.  It will be
	  changed to raise an error soon.

	* src/genstub (define-cproc etc.): added check for unknown keyword
	  parameter.  A new keyword argument, &allow-other-keys is
	  introduced to disables the checking.

	* ext/charconv/convaux.scm, ext/net/netaux.scm,
	  ext/vport/vport.scm, lib/dbi.scm, lib/dbm.scm,
	  lib/file/filter.scm, lib/gauche/libutil.scm,
	  lib/gauche/package.scm, lib/gauche/portutil.scm,
	  lib/gauche/process.scm, lib/gauche/test.scm,
	  lib/gauche/package/build.scm, lib/gauche/package/compile.scm,
	  lib/gauche/package/fetch.scm, lib/gauche/package/util.scm,
	  lib/gauche/vm/profiler.scm, lib/net/client.scm, lib/rfc/822.scm,
	  lib/rfc/hmac.scm, lib/rfc/telnet.scm, lib/rfc/uri.scm,
	  lib/text/diff.scm, lib/text/html-lite.scm, , lib/text/tr.scm,
	  lib/www/cgi-test.scm, lib/www/cgi.scm, libsrc/file/util.scm,
	  libsrc/gauche/collection.scm, libsrc/gauche/sequence.scm:
	  changed to use let-keywords instead of let-keywords* or
	  get-keyword.

	* ext/threads/test.scm: typo fix.

	* ext/uvector/uvseq.scm: call-with-iterator for uniform vector
	  classes didn't recognize `:size' keyword.

	* lib/binary/pack.scm: removed unused variable `keys'.  added
	  keyword check.

2007-01-21  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/process.scm: added a mechanism to handle child process'
	  abnormal exit status via <process-abnormal-exit> condition.
	  This changes the default behavior of process port procedures,
	  which used to ignore nonzero exit status, now raises an error.
	  To get the old behavior, add ':on-abnormal-exit :ignore' to
	  the call of those procedures.

2007-01-18  Shiro Kawai  <shiro@acm.org>

	* ext/charconv/convaux.scm, ext/dbm/gdbm.scm, ext/net/netaux.scm,
	  ext/uvector/uvgen.scm, lib/dbm.scm, lib/file/filter.scm,
	  lib/gauche/cgen.scm, lib/gauche/interpolate.scm,
	  lib/gauche/libutil.scm, lib/gauche/parseopt.scm,
	  lib/gauche/process.scm, lib/gauche/redefutil.scm,
	  lib/gauche/test.scm, lib/gauche/interactive/info.scm,
	  lib/gauche/package/fetch.scm, lib/rfc/mime.scm,
	  lib/text/gettext.scm, lib/www/cgi.scm, libsrc/file/util.scm,
	  src/compile.scm: Replaced 'with-error-handler' for 'guard' or
	  'unwind-protect'.   There are some left in src/scmlib.scm, which
	  should be replaced after the next release, since 0.8.9 doesn't
	  know about unwind-protect yet so it wouln't build the CVS HEAD
	  if we replace them now.

	* lib/rfc/ftp.scm: Added.  Based on the contribution from
	  OOHASHI Daichi.

2007-01-17  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/common-macros.scm (unwind-protect): added unwind-protect,
	  finally.
	* src/autoload.scm: changed accordingly.

	* release 0.8.9

2007-01-16  Shiro Kawai  <shiro@acm.org>

	* ext/net/net.ac: on mingw, we need to inlcude <windows.h> to check
	  struct sockaddr_storage.

	* ext/srfi/srfi-19-lib.scm: make julian-day calculation in inexact
	  numbers to avoid the huge overhead of rational arithmetic.
	* config.guess, config.sub: updated to the newer version.

2007-01-15  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h: reintroduced the compatibility macros for Scm_Eval,
	  Scm_EvalCString and Scm_Apply, since there are extension packages
	  that need more time to migrate.  By default, these are defined
	  to Scm_EvalRec etc.  If GAUCHE_API_0_8_8 is defined, these becomes
	  the new APIs.

2007-01-14  Shiro Kawai  <shiro@acm.org>

	* src/signal.c (Scm_SigWait): Added a wrapper of sigwait to ensure
	  removing signal handlers for the signals to wait.  The behavior
	  of sigwait with signal handlers is underined in the spec, and
	  it causes unpleasant effect on some systems.  We also need to ensure
	  removing signals from the passed masks that are not under control
	  of Gauche.
	  (sig_handle): treat signalPendingLimit == 0 case separately to avoid
	  potential overflow of sigcounts.

2007-01-13  Shiro Kawai  <shiro@acm.org>

	* src/system.c (Scm_GlobDirectory): dropped SCM_SYSCALL around
	  glob(), since it doesn't necessarily return a negative value
	  on error, and it doesn't necessarily set errno.  Well, eventually
	  this function should go away, but for the time being this fix
	  may be effective.

	* gc/darwin_stop_world.c (GC_stop_world): applied a patch posted
	  to gc-list by Allan Hsu that prevents SEGV on OSX.

	* src/class.c (find_core_allocator): added more precise check for
	  inheritance; the previous code incorrectly rejected a valid
	  inheritance in which more than one BASE class are included but
	  they form a single inheritance.  The previous code also incorrectly
	  accepted a class that inherits from BUILTIN class.

2007-01-11  Shiro Kawai  <shiro@acm.org>

	* src/syslib.stub (sys-fchmod): added.  Patch from UEYAMA Rui.

	* lib/slib.scm.in: adapted to slib3a4 changes.  Based on a patch
	  by YOKOTA Hiroshi.  There're some hacks to make it work with
	  both old and new slibs.

2007-01-10  Shiro Kawai  <shiro@acm.org>

	* src/signal.c:
	  (Scm_SetSignalHandler): set up C-level signal handler so that all
	  signals are blocked during its execution, in order to avoid race
	  condition.
	  (sig_handle): interpret signalPendingLimit==0 as no limit.

2007-01-09  Shiro Kawai  <shiro@acm.org>

	* src/signal.c, src/gauche/vm.h: changed signal handling; we no longer
	  queue the signals; instead the C-level signal handler just counts
	  what signals it received.  The order of signal arrival isn't
	  preserved, but it's ok for most Unixes doesn't guarantee that
	  anyway.  The upper limit of the # of occurrences of the same
	  signal before	VM handles them can be configured by
	  set-signal-pending-limit; if the signals excceds this limit,
	  Scm_Abort() is called.
	* src/syslib.stub (set-signal-pending-limit, get-signal-pending-limit):
	  added.

2007-01-09  Rui Ueyama  <rui314@gmail.com>

	* configure.ac, src/syslib.stub, test/system.scm,
	  src/gauche/config.h.in : added sys-sigwait

2007-01-08  Shiro Kawai  <shiro@acm.org>

	* Makefile.in, src/Makefile.in, ...: added datarootdir = @datarootdir@
	  definition for autoconf 2.60 and after.  It works for both pre-2.60
	  and 2.60; pre-2.60 leaves @datarootdir@ as is, but no other place
	  refers $(datarootdir) so it is ok; for 2.60, @datadir@ is replaced
	  for reference of $(datarootdir), so it also works.

2007-01-07  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/listener.scm (listener-read-handler): fixed a bug
	  that exits the listener when an error is signaleld during
	  evaluation.  This fix is temporary; more complete fix is required.

	* src/mingw-exify : Adapted to Scm_Apply API change.

	* src/signal.c (Scm_SetSignalHandler, Scm_SigCheck): Added "mask"
	  argument to Scm_SetSignalHandler so that one can ensure a signal
	  handler is executed while certain signals are blocked.
	  Also added Scm_GetSignalHandlerMask().
	* src/syslib.stub (set-signal-handler!, get-signal-handler-mask):
	  changed accordingly.

	* src/scmlib.scm (sys-sigset): added the convenience function.

2007-01-06  Shiro Kawai  <shiro@acm.org>

	* configure.ac: Removed warning of defaulting encoding to utf-8.
	  0.8.9_pre1.

2007-01-03  Shiro Kawai  <shiro@acm.org>

	* src/number.c (Scm_Mul): fixed a silly bug in the short cut paths,
	  which resulted (* +i 0.0) => +i etc.

2006-12-26  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/process.scm (%run-process): Fixed a leak bug that didn't
	  delete a process from the active process list if :wait #t is
	  given.  Thanks for Tomas Stanek to point this out.

2006-12-21  Shiro Kawai  <shiro@acm.org>

	* lib/dbi.scm (dbi-execute-query): fixed a wrong way of passing
	  :pass-through arg to dbi-do.  This bug only surfaced if the
	  app was using compatibility APIs.

2006-12-09  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (run_loop): fix tail-recursive APPLY.

	* src/compile.scm (pass2/$LREF): Added a check for circle in
	  initialization of local variables introduced by letrec.  It
	  have caused an infinite loop in the compiler.  Patch from
	  Rui Ueyama.

2006-12-08  Shiro Kawai  <shiro@acm.org>

	* src/hash.c (Scm_EqvHash): didn't considered RATNUMs.

2006-12-06  Shiro Kawai  <shiro@acm.org>

	* vm.c: removed obsoleted experimental code (SMALL_REGS switch and
	  SAVE_REGS/RESTORE_REGS stuff).

2006-11-30  Shiro Kawai  <shiro@acm.org>

	* src/string.c (get_string_from_body), src/gauche.h: Avoid accessing
	  out-of-bound element of the string content to check whether the
	  string is NUL-terminated.  Instead, we introduced a new flag
	  SCM_STRING_TERMINATED to track whether the string content is
	  NUL-terminated.
	  Also we deprecate SCM_MAKSTR_* flags, and consolidated them to
	  SCM_STRING_* flags.
	* various files: Replaced SCM_MAKSTR_* flags for SCM_STRING_* flags.

2006-11-27  Shiro Kawai  <shiro@acm.org>

	* src/number.c (Scm_InexactToExact): Rule out NaN and Inf before
	  applying modf.

2006-11-26  Shiro Kawai  <shiro@acm.org>

	* src/intlib.stub (global-call-type): Experimentally added a feature
	  to record modules used during expansion, to be used by test-module
	  later.

2006-11-23  Shiro Kawai  <shiro@acm.org>

	* src/regexp.c (Scm_RegMatchStart etc.): Optimized counting length
	  of submatch strings.  Patch from Rui Ueyama.

2006-11-20  Shiro Kawai  <shiro@acm.org>

	* src/class.c (Scm__InitClass): Added missing initialization of
	  <rational> class.

2006-11-19  Shiro Kawai  <shiro@acm.org>

	* src/string.c (substring): avoid counting characters when the end
	  of the substring is equal to the end of the source string.
	  Patch from Rui Ueyama.

	* src/vm.c (Scm_NewVM): a newly created VM didn't inherit current
	  ports from the prototype.  This became visible when a new thread
	  was created when current ports were bound to ports other than
	  the standard ones.

2006-11-17  Shiro Kawai  <shiro@acm.org>

	* src/main.c (main): the change to use the new Scm_Apply was
	  incorrect; (1) it returns exit_code == 0 when 'main' returns
	  non-integer, and (2) it exits silently when non-captured
	  error occurs.

	* lib/gauche/condutil.scm (define-condition-type): automatically add
	  :init-keyword to slots, for the convenience.  Based on the patch
	  from Rui Ueyama.

2006-11-15  Shiro Kawai  <shiro@acm.org>

	* src/class.c (Scm__InternalClassName): make sure to return a string,
	  for some code in error.c assumes a string and SEGVs otherwise.

2006-11-13  Shiro Kawai  <shiro@acm.org>

	* src/vm.c, src/gauche.h: removed compatibility stuff about
	  Scm_Eval etc.

2006-11-12  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (Scm_EvalCStringRec): typo fix (was: Scm_EvalRecCString).

	* src/gauche.h, src/gauche/vector.h: splitted vector API header.

	* src/compile.scm (case, cond): Applied srfi-61/srfi-87 patch from
	  Rui Ueyama.

2006-11-11  Shiro Kawai  <shiro@acm.org>

	* release 0.8.8

2006-11-10  Shiro Kawai  <shiro@acm.org>

	* configure.ac, src/gauche/config.h.in (sunmath): Solaris's compiler
	  provides isinf() in a separate header/library.  Added checks for it.

	* src/class.c (unlock_class_redefinition): reset
	  class_redefition_lock.owner to NULL as well, otherwise the
	  redefinition lock keeps other threads waiting until the lock holding
	  thread terminates.

	* src/number.c (SCM_IS_INF): Provide an alternative function when
	  the system does not provide isinf().  We used to inline the check,
	  but some version of gcc appears to assume incorrectly the condition
	  would never be satisfied and optimizes it away.  (It happened on
	  gcc-3.3.2/Solaris 5.9/i86pc).

	* lib/gauche/logger.scm: We can't determine lock policy statically,
	  since the lock file may be placed on a filesystem that doesn't
	  support fcntl lock.  So I changed the lock policy to be dynamically
	  determined at the first access to the file-based log drain.

2006-11-09  Shiro Kawai  <shiro@acm.org>

	* INSTALL.in, doc/extract: moved away from escm to generate INSTALL
	  and INSTALL.eucjp, since it is awkward for escm to handle eucjp doc
	  with utf-8 gauche.  Instead I use doc/extract.

	* src/vm.c (Scm_VMDefaultExceptionHandler),
	  src/gauche/vm.h (ScmEscapePoint): added a flag in ScmEscapePoint
	  to specify whether the dynamic handlers should be rewind before
	  or after the error handler is invoked.  Legacy with-error-handler
	  assumes they are invoked after the error handler.  SRFI-34's guard
	  requires the handler clauses are invoked after the dynamic env
	  is rewound.  It may be better to change with-error-handler semantics,
	  but for now, we go with this flag.  Do not count on this flag
	  kept in future.
	* src/exclib.stub (with-error-handler): added a keyword arg to
	  set the ScmEscapePoint flag mentioned above.  This is a temporary
	  solution; applications should not cound on this feature.
	* lib/gauche/common-macros.scm (guard): fixed guard semantics
	  to conform srfi-34, using the above feature.


2006-11-08  Shiro Kawai  <shiro@acm.org>

	* ext/sxml/sxml-tools.scm.in: Avoid mutual dependency between
	  sxml.sxpath and sxml.tools by autoloads.

	* configre.ac, src/gauche/config.h.in, src/syslib.stub (HAVE_CRYPT_H):
	  Adds crypt.h if exists, to suppress warnings.  Patch from
	  David Mosberger-Tang and YAEGASHI Takeshi.

	* ext/dbm/gdbm.stub (gdbm-open): improved error message.

	* src/read.c (ref_val): added missing type declaration of the argument,
	  which became a problem on 64bit architecture.  Patch from
	  David Mosberger-Tang and YAEGASHI Takeshi.

	* lib/gauche/test.scm (closure-grefs): fixed to trace code in the
	  internal closures.  Thanks to Rui Ueyama.
	* ext/srfi/srfi-19-lib.scm, ext/sxml/sxml-sxpath.scm.in,
	  ext/sxml/sxml-tools.scm.in, ext/sxml/sxml/adaptor-scm,
	  lib/text/gettext.scm, lib/util/stream.scm: fixed the undefined
	  global reference found by the above patch.

	* gc/darwin_stop_world.c, gc/include/private/gc_priv.h,
	  gc/os_dep.c: Applied Allan Hsu's GC patch for Xcode-2.4/OSX.

	* gc/*: bumped to Boehm GC 6.8.

2006-11-07  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h: define SCM_ILLEGAL_CHAR_* enums to specify illegal
	  character handling mode.

	* src/string.c, src/extlib.stub: add 'handling' argument to
	  string-incomplete->complete, so that the caller can ensure to
	  obtain a complete string by omitting or replacing incomplete
	  chars in the original string.  The linear-update versions,
	  string-complete->incomplete! and string-incomplete->complete!,
	  are obsoleted (the latter is kept for backward compatibility,
	  but will go away soon).

	* src/gauche/char_utf_8.h (scm_CharUtf8Getc): more strict error
	  checking.

2006-11-05  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h (ScmModule): added a field to track module dependency.

	* src/error.c (Scm_TypeError): added a convenience API to report
	  argument type error.

2006-11-04  Shiro Kawai  <shiro@acm.org>

	* src/gauche/port.h (PORT_SAFE_CALL): Remove bogus check of lockOwner.

	* src/class.c (lock_class_redefinition): There was an off-by-one
	  error in the recursive lock count.

2006-11-02  Shiro Kawai  <shiro@acm.org>

	* gauche.h, vm.c (Scm_Eval etc.): changed my mind about the names
	  of the new Eval API.  If GAUCHE_API_0_8_8 is defined before including
	  gauche.h, Scm_Eval, Scm_EvalCString and Scm_Apply have the new
	  APIs (the old ones are accessible as Scm_EvalRec etc.).  If
	  GAUCHE_API_0_8_8 is not defined, Scm_Eval, Scm_EvalCString
	  and Scm_Apply have the original API (and Scm_EvalRec etc., are
	  also available).  This helps the transition, while maintaining
	  compatibility and avoid further extra names like SafeEval.
	  NB: I'm still not sure about what Scm_Eval etc. should return.
	  May change my mind again.
	* various files: updated accordingly.

2006-10-29  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (Scm_SafeEval etc.): The previous version was broken.
	  Needed to set up error handler properly.

2006-10-28  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h, src/vm.c (Scm_SafeEval): Added convenient and robust
	  API to call Scheme program casually from C code.  Scm_Safe* APIs
	  catch errors and returns the info in the packet.  They also handle
	  multiple values.
	  The existing Scm_Eval and Scm_Apply are renamed to Scm_EvalRec
	  and Scm_ApplyRec, for they call VM recursively.  The old names
	  are #defined for backward compatibility.  The plan is to give
	  Scm_Eval etc. to Scm_SafeEval eventually.  The reason is that
	  Scm_EvalRec etc. are not really for end-user programming, since
	  handling errors are still cumbersome.  Scm_SafeEval is more
	  intuitive that it (almost) always returns, error or no error.
	  So Scm_SafeEval is more suitable to get the simpler name, Scm_Eval.

2006-10-21  Shiro Kawai  <shiro@acm.org>

	* ext/net/test.scm: On some systems IPv6 loopback host name isn't
	  "localhost" by default, so we apply some heuristics.  Patch from
	  Rui Ueyama.

	* src/number.c (read_real): some fixes to handle divide-by-zero cases.
	  Patch from OOHASHI Daichi.

	* lib/util/rbtree.scm, test/util.scm, lib/Makefile.in:
	  added util.rbtree, contributed from Rui Ueyama.

2006-10-20  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/collection.scm: original 'fold' is now built-in
	  instead of srfi-1.
	* libsrc/gauche/sequence.scm (fold-right): added generic version
	  of fold-right.  It is sequence's operation, since collections
	  don't care about the order of elements.

2006-10-18  Shiro Kawai  <shiro@acm.org>

	* src/port.c (Scm_FlushAllPorts): fixed MT-hazard in Scm_FlushAllPorts.

	* src/number.c (read_real): Fixed the behavior when too big or
	  too small exponent is given.  Also fixed the handling of explicitly
	  exact fractional numbers (e.g. #e12.34e3 or #e4e-2).

2006-10-16  Shiro Kawai  <shiro@acm.org>

	* lib/util/list.scm (cond-list): extended the syntax to allow
	  splicing, using '@' modifier.
	* lib/util/trie.scm (make-trie): revised using new cond-list syntax.

2006-10-15  Shiro Kawai  <shiro@acm.org>

	* lib/util/trie.scm, lib/Makefile.in, test/util.scm: Added util.trie
	  module, contributed by OOHASHI Daichi and other people on WiLiKi.

2006-10-14  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub (boolean): added boolean procedure, which is
	  just (compose not not), but convenient if you want to guarantee
	  the returned value is boolean.

2006-10-07  Shiro Kawai  <shiro@acm.org>

	* ext/threads/threads.h:
	  ScmConditionVariable and ScmMutexRec should have SCM_INSTANCE_HEADER,
	  for they are BASE class (I'm not sure whether I should let them
	  inheritable or not, so I may revert this and change them to
	  BUILTIN class in future; but for now, let's maintain the
	  consistency.)

	* src/write.c (Scm_WriteCircular, Scm_WriteLimited):
	  Fix for write/ss is called during walk pass of outer write/ss.
	  Patch from Rui Ueyama.

	* ext/charconv/convaux.scm (%open-{input|output}-file/conv):
	  Avoid creating conversion ports when it is unnecessary.
	  Patch from Tatsuya BIZENN.

	* configure.ac: bumped to 0.8.8_pre1.

	* ext/sxml/src/serializer.scm, ext/sxml/sxml-serializer.scm.in,
	  ext/sxml/Makefile.in, doc/modutil.texi:
	  Added sxml.serializer module, a customizable SXML serializer.
	  Original code is by Dmitry Lizorkin.  Ported to Gauche and
	  documented by Leonardo Boiko.

	* ext/sxml/test.scm:
	  Added simple tests for sxml.serializer

2006-10-06  Shiro Kawai  <shiro@acm.org>

	* src/number.c (Scm_Div, Scm_DivInexact): provide backward-compatible
	  version of division, Scm_DivInexact, which returns flonum when
	  arguments are exact integers and the result isn't a whole number.
	* src/extlib.stub (inexact-/): make the backward-compatible version
	  of division as 'inexact-/'.
	* lib/compat/norational.scm: when used, redefines '/' by 'inexact-/',
	  so that the existing code that counts on the old behavior can
	  work as before.

2006-10-05  Shiro Kawai  <shiro@acm.org>

	* src/port.c (register_buffered_port): Run global GC when the port
	  vector gets full, so that we may be able to clean up some entries
	  for garbaged ports.  I also found unregister_buffered_port wasn't
	  necessary.  See the comment titled "Tracking buffered ports" in
	  the source.
	  The original fix is provided from Michal Maruška.

2006-10-01  Shiro Kawai  <shiro@acm.org>

	* ext/srfi/srfi-19-lib.scm (date->string): allow '@' option in
	  the format directive (e.g. ~@b) to gurantee the 'C' locale is
	  used.  Since srfi-19 only provides locale-sensitive directives
	  for month and day-of-week names, without such extention you
	  cannot write a library whose output isn't affected with locale
	  settings.

2006-09-30  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/cookie.scm (construct-cookie-string): accepts srfi-19
	  <time> and <date> as well as number and string for :expires
	  argument.

	* src/write.c (Scm_Vprintf): fixed lone '%' in the printf format
	  string.

2006-09-28  Shiro Kawai  <shiro@acm.org>

	* libsrc/util/match.scm: fixed a bug that multiple values were not
	  handled properly under the existence of failure continuations.
	  Failure handler was expanded into (k <body>), which should be
	  (call-with-values (lambda () <body>) k).

2006-09-25  Shiro Kawai  <shiro@acm.org>

	* src/system.c (Scm_YieldCPU): typo fix.

2006-08-27  Shiro Kawai  <shiro@acm.org>

	* libsrc/file/util.scm: fixed directory-fold to make lister returns
	  new seed value as well as directory contents, so that it can process
	  directory pathnames.

2006-08-03  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/822.scm (rfc822-date->date): fixed treatment of sub-hour
	  timezone value.

2006-07-25  Shiro Kawai  <shiro@acm.org>

	* src/gauche/system.h, src/gauche.h : splitted system-related API
	  declarations to gauche/system.h.

2006-07-22  Shiro Kawai  <shiro@acm.org>

	* src/gauche/port.h (PORT_LOCK, PORT_UNLOCK, ScmPort): fixed a race
	  condition caused from PORT_UNLOCK having not been an atomic
	  operation (setting lockOwner, then calling cond_signal).  Now
	  we drop using condition variable, which also decreases overhead.
	  See the comment for more detailed discussion.

	* src/system.c (Scm_YieldCPU): added an API to yield CPU.

	* ext/thread/thread.c, ext/thread/thrlib.stub (thread-yield!):
	  changed to use Scm_YieldCPU.  Dropped Scm_ThreadYield.

2006-07-18  Shiro Kawai  <shiro@acm.org>

	* ext/charconv/charconv.c (conv_input_closer): Fixed file descriptor
	  leak by adding code to close the source port if the input port
	  owns it.  Tracked down by Tatsuya BIZENN.

	* lib/gauche/vm/profiler.scm (show-stats): properly round the result
	  of division so that the result won't be shown as a rational number.

2006-07-05  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h, src/gauche/port.h: splitted public port API
	  into port.h.

2006-07-04  Shiro Kawai  <shiro@acm.org>

	* ext/net/net.ac, ext/net/gauche/net.h (struct sockaddr_storage): added
	  check for struct sockaddr_storage and provides an alternative
	  if the system doesn't have it.  Also rewrote the check of
	  SIN_LEN etc by AC_CHECK_MEMBERS.
	* ext/net/net.c (Scm_SocketRecvFrom): fixed a bug that didn't
	  retrieve sender's sockaddr correctly.  Also applied some cosmetic
	  fixes by Tatsuya BIZENN.

	* configure.ac, src/gauche/config.h.in, src/system.c: use
	  AC_CHECK_MEMBERS to check struct passwd/group members such
	  as PW_GECOS.

	* ext/net/netlib.stub: fixed typo (SO_RCVBUF).  added some more
	  SO_* constants.

2006-07-03  Shiro Kawai  <shiro@acm.org>

	* configure.ac: check pthread_spinlock_t type instead of
	  pthread_spinlock_init() function.

	* ext/threads/threads.c (Scm_ThreadStart): fixed a bug of passing
	  invalid value to pthread_attr_setdetachstate().
	* lib/dbi.scm (dbi-parse-dsn): treat "dbi:driver:" as no-option,
	  i.e. same as "dbi:driver".  Suggested by Tatsuya BIZENN.

	* ext/sxml/sxml/adaptor.scm (string-rindex): added alias for missing
	  definition of string-rindex used in sxml-tools.scm

2006-06-23  Shiro Kawai  <shiro@acm.org>

	* lib/dbi.scm (dbi-make-driver): use module-name->path instead of
	  library-fold to get a path component of the requested dbd module;
	  if we get full pathname from library-fold, requiring it doesn't
	  match with provided path component in the module, causing the
	  module to be loaded every time dbi-make-driver is called.

2006-06-04  Shiro Kawai  <shiro@acm.org>

	* src/number.c: Introduced exact rational numbers.  Arithmetic
	  API changed for consistency.  Dropped n-ary APIs, since we hardly
	  see n-ary cases now (the compiler expands primitive arithmetics
	  to binary applications).
	* src/gauche.h, src/gauche/number.h : Splitted numeric APIs to
	  subfile.  This is a first step of slimming down gauche.h.
	* src/vm.c, src/test-arith.h, src/stdlib.stub, src/hash.c,
	  src/bignum.c, src/autoloads.scm, lib/gauche/numerical.scm,
	  lib/gauche/cgen.scm, lib/srfi-42.scm, ext/uvector/uvgen.scm,
	  ext/uvector/uvector.c.tmpl, ext/srfi-srfi-19-lib.scm:
	  Reflected the API changes.

2006-05-30  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h, src/number.c, src/stdlib.stub: API CHANGE:
	  changed complex number C API for consistency.

2006-05-27  Shiro Kawai  <shiro@acm.org>

	* src/regexp.c, test/regexp.scm: fixed bugs that resulted
	  regexp compilation error.

	* lib/rfc/http.scm (send-request): avoid sending "\r\n" after
	  body (RFC2616 section 4.1).

	* lib/gauche/package/compile.scm: dropped quote around CC, for
	  it may contain options such as 'gcc -std=gnu99'.

2006-05-05  Shiro Kawai  <shiro@acm.org>

	* src/error.c (Scm_PrintDefaultErrorHeading): fix error message.
	* src/genstub (emit-definition): fix error message.

2006-04-28  Shiro Kawai  <shiro@acm.org>

	* src/char.c (Scm_DigitToInt): fix digit->integer.
	  (digit->integer #\2 2) yielded 2, should be #f.

2006-04-13  Shiro Kawai  <shiro@acm.org>

	* doc/Makefile.in: conversion of japanese html lang spec was wrong:
	  'jp' should be 'ja'.

2006-04-12  Shiro Kawai  <shiro@acm.org>

	* release 0.8.7

2006-04-07  Shiro Kawai  <shiro@acm.org>

	* src/autoloads.scm : set autoload for 'time' macro---it seems that
	  quite a few people who used other Schemes expect it and have
	  difficulty to find gauche.time module.

	* src/gauche-install.in (ensure-directory): made mode/owner/group
	  change effective for the directory creation by gauche-install -d.
	  (currently it is only effective on the last component of the
	  directory).

2006-04-06  Shiro Kawai  <shiro@acm.org>

	* doc/Makefile.in: reverted jp document from utf-8 to euc-jp,
	  for some tools still don't like utf-8.

	* src/compile.scm (pass1/define-inline): made define-inline keeps
	  its effect outside its compiler unit.

	* ext/net/net.c (socket_finalize, Scm_SocketClose): clear
	  inPort/outPort when we're done to help GC.

	* lib/srfi-0.scm: added some newly supported srfis.

	* lib/gauche/test.scm (test-module): added a check to find out
	  referencing undefined global variables, as suggested by
	  Kazuki Tsujimoto.  A new keyword argument, :allow-undefined,
	  is introduced to disable the checking on certain variables.
	* ext/net/test.scm, ext/auxsys/test.scm: changed accordingly.

2006-04-05  Shiro Kawai  <shiro@acm.org>

	* ext/srfi/srfi-19-lib.scm, ext/uvector/matrix.scm,
	  libsrc/srfi-13.scm: fixed typo of local variable names.

2006-03-26  Shiro Kawai  <shiro@acm.org>

	* src/module.c (Scm_FindBinding, Scm_GlobalVariableRef): API CHANGE:
	  instead of stay_in_module boolean flag, it takes bitmasks so that
	  we can extend it later.  Scm_GlobalVaribleRef takes a new flag,
	  SCM_BINDING_KEEP_AUTOLOAD, to choose not to resolve autoload, which
	  is required in some special occasions.
	* src/vm.c, src/moplib.stub, src/macro.c, src/load.c, src/intlib.stub,
	  src/gauche.h, src/extlib.stub, src/compaux.c, src/class.c:
	  changed accordingly.

	* ext/net/netlib.stub (SOMAXCONN): added SOMAXCONN constant (suggested
	  by Tatsuya BIZENN).

2006-03-25  Shiro Kawai  <shiro@acm.org>

	* ext/termios/termiolib.stub (sys-forkpty-and-exec): changed
	  argument from optionals to keywords, to support :sigmask.

2006-03-24  Shiro Kawai  <shiro@acm.org>

	* src/system.c (Scm_SysExec): added support of setting signal mask
	  before exec.
	* src/syslib.stub (sys-exec, sys-fork-and-exec): Changed API to take
	  keyword arguments :iomap and :sigmask.  The old signature (optional
	  iomap) is supported for backward compatibility, but will be gone
	  in future.
	* lib/gauche/process.c (run-process): allow :sigmask keyword argument.

2006-03-17  Shiro Kawai  <shiro@acm.org>

	* lib/util/queue.scm (dequeue!): avoid non weak-GC-robust pattern.
	  See the comment for the details.

	* src/objlib.scm (ref*): Added utility procedure ref*, as suggested
	  by Issac Trotts.  Ref methods for some builtin classes are also
	  added here.

2006-03-14  Shiro Kawai  <shiro@acm.org>

	* lib/util/stream.scm (stream-cons): The original srfi-40 reference
	  implementation evaluates the second argument twice within delay.

2006-03-12  Shiro Kawai  <shiro@acm.org>

	* ext/auxsys.c, ext/auxsyslib.stub: moved sys-gettimeofday to
	  main system.  support sys-times on mingw32, emulating times()
	  by GetProcessTimes.
	* src/system.c, src/syslib.stub: added Scm_GetTimeOfDay, an
	  abstraction of gettimeofday() call.  On mingw32 we emulate it
	  with GetSystemTime.  sys-gettimeofday is moved here.
	* src/gauche/mingw-compat.h : some addition for above changes.

2006-03-11  Shiro Kawai  <shiro@acm.org>

	* src/system.c (Scm_BaseName, Sys_DirName): handles drive letters
	  sensibly on mingw32.
	* src/syslib.stub (sys-sleep): Use Sleep() win32api call on mingw32.

2006-03-10  Shiro Kawai  <shiro@acm.org>

	* src/autoloads.scm, lib/gauche/procedure.scm: added forgotten exports
	  and autoloads (filter$ etc.)  Patch from Michael Campbell.

2006-03-09  Shiro Kawai  <shiro@acm.org>

	* src/regexp.c etc.  Added support of backreferences, named captures,
	  and lookback assertions to regexp.  (Patch from Rui Ueyama).
	* src/gauche/regexp.h: Splitted regexp-related objects into this
	  header; their internals are not of general interest.

	* lib/dbi.scm (dbi-execute-query): the adapter to the legacy dbd
	  interface passes :pass-through option to the dbi-do for compatibiliy.
	  This change doesn't affect the new dbd interface.

	* ext/net/netaux.scm (make-server-socket): added :backlog keyword
	  argument to customize the backlog number passed to socket-listen.
	  (Patch from Tatsuya BIZENN).

	* src/genstub: fixed setter procedure generation.  By looking up
	  the stub name of setter procedure, instead of assuming naming
	  convention, we can now handle setter defintion in define-cgeneric
	  clause (it needs different treatment since their C stub name would
	  differ from normal cproc/cmethod).

2006-03-07  Shiro Kawai  <shiro@acm.org>

	* src/genstub: fixed several typos in cgeneric setter generation
	  code (Patch from Takahiro Horii).

2006-03-04  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (module-qualified-variable?): filtered out the
	  case that non-variable could be passed to cenv-lookup.

	* src/gauche.h (SCM__DEFINE_CLASS_COMMON),
	  src/gauche/pthread.h, src/gauche/uthread.h:
	  Iniitalize the mutex and condition variable in the statically
	  defined builtin classes.

	* src/class.c (method_more_specific): fixed a bug when comparing
	  methods both of which have rest arg.

2006-03-03  Shiro Kawai  <shiro@acm.org>

	* gc/*, src/genstub, src/gauche/config.h.in: Bumped to Boehm GC 6.7.
	  Support NetBSD threads.  (Patch from Tatsuya BIZENN).

	* lib/www/cgi.scm (cgi-header): changed line terminators from '\n' to
	  '\r\n', in order to follow the spec precisely.  Some httpds don't
	  like '\n'.

2006-02-17  Shiro Kawai  <shiro@acm.org>

	* src/genconfig.in: Avoid using '\"' sequence within the string that
	  is generated by shell script---apparantly some shells treat
	  backslashes differently in this case, causing compatibility problem.
	  Using single quotes is an easy solution.  (Thanks to Robbert
	  Haarman for pointing this out).

2006-02-10  Shiro Kawai  <shiro@acm.org>

	* libsrc/srfi-13.scm (string-copy!): fixed argument range check bug
	  (Thanks to Jeff Read).

2006-02-08  Shiro Kawai  <shiro@acm.org>

	* 0.8.7_pre1.  Entered release test cycle.

	* gc/darwin_stop_world.c: applied Bruce Mitchener's memory leak patch
	  posted on Boehm GC list.

2006-01-27  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/vm/debugger.scm (debug-print): made the width of
	  information to print customizable by the parameter
	  debug-print-width.
	  (debug-source-info): added.
	* src/autoloads.scm: added debug-print-width and debug-source-info.

	* src/write.c (Scm_WriteLimited, Scm_Format): Fixed a bug that
	  didn't propagate shared-structure-mode flags, causing write routine
	  to go infinite loop even it is called with ss-mode.

	* src/signal.c (Scm_SysSigmask): Allow NULL to newmask arg, if
	  the caller just want to obtain the mask without modifying it.

2006-01-26  Shiro Kawai  <shiro@acm.org>

	* ext/net/netdb.c: rewrote some code using Scm_CStringArrayToList.

	* ext/termios/termiolib.stub (sys-forkpty-and-exec): added.
	* ext/termios/termios.c (Scm_ForkptyAndExec): ditto.

	* src/string.c (Scm_CStringArrayToList): API Change - integrated
	  copying and non-copying version, and added FLAGS argument to
	  specify which.

	* src/system.c (Scm_SysPrepareFdMap, Scm_SysSwapFds):
	  extracted core functionality of I/O remapping in Scm_SysExec,
	  so that it can be used from other extensions.

	* src/string.c (Scm_ListToConstCStringArray, Scm_ListToCStringArray):
	  added.

	* lib/dbi.scm (generate-sql/parameters): fix referencing out-of-scope
	  variable.

	* ext/binary/io.scm: some optimization and cosmetic changes.
	* doc/modutil.texi: made "binary.io" official.

2006-01-22  Shiro Kawai  <shiro@acm.org>

	* src/gauche/exception.h, src/error.c : added Scm_UnhandledSignalError.
	* src/signal.c (default_sighandler): the default signal handler now
	  throws <unhandled-signal-error>.

	* src/extlib.stub (with-ports): added.

2006-01-21  Shiro Kawai  <shiro@acm.org>

	* lib/text/sql.scm (sql-tokenize): fixed the regexp stack overflow
	  problem when very long input is given.

	* src/compile.scm (pass1/body): handles ((with-module x y) arg ...)
	  form in the beginning of lambda body.

	* src/syslib.stub (sys-wait, sys-waitpid): syscall wasn't restarted
	  when wait/waitpid was interrupted.

2006-01-20  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass1/body): added a check for improper list
	  in the lambda body.

	* src/load.c (Scm_VMLoad), src/main.c, lib/gauche/vm/profiler.scm:
	  added -pload profiler option.
	* src/vm.c (Scm_VMUnwindProtect, Scm_VMNextHandler, Scm_VMRewindProtect):
	  added.

	* src/port.c (Scm_GetRemainingInputString): fixed a bug that didn't
	  consider ungotten chars.

2006-01-19  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (module-qualified-variable?): fixed to check if
	  with-module has the right binding when parsing
	  ((with-module m v) ...) form.

2006-01-15  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass1): support compilation of a form in which
	  the head position has (with-module mod identifier).  This allows
	  one to refer syntactic keyword from other module, e.g.
	  ((with-module gauche define) x 4).  This, in turn, gives more
	  flexibility for modules to redefine syntaxes.

2006-01-10  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub (global-variable-ref): added second optional
	  argument to limit the lookup within the module.
	* src/module.c (Scm_GlobalVariableRef): dropped Scm_SymbolValue
	  and added this corresponding to global-variable-ref.
	* src/gauche.h (Scm_SymbolValue): definds it as a macro which
	  expands to Scm_GlobalVariableRef call.

	* src/vm.c (throw_cont_calculate_handlers, user_eval_inner):
	  dynamic handlers didn't properly invoked when error occurred
	  during reinstallation of dynamic handlers via call/cc.
	  (Patch from Kazuki Tsujimoto).

2006-01-09  Shiro Kawai  <shiro@acm.org>

	* src/vm.c, src/vminsn.scm: added some experimental VM insns.
	  not really used yet.

	* src/Makefile.in (newinsn): added a special build sequence
	  in case the VM insn set has been changed.

	* src/compile.scm (iform-copy): lvar in $LSET insn wasn't copied,
	  causing compiler internal error (Patch from Kazuki Tsujimoto).
	  Also fixed wrong handling of label assoc list in copying $LABEL
	  node.

2006-01-07  Shiro Kawai  <shiro@acm.org>

	* libsrc/gauche/collection.scm (maybe-minimum-size): should return
	  #f if any of collection's size isn't immediately known.  Patch
	  from Takahiro Horii.

	* src/compile.scm (pass1/body): fixed a bug in an argument of
	  error function (Patch from Kazuki Tsujimoto).

2006-01-06  Shiro Kawai  <shiro@acm.org>

	* ext/net/net.c (Scm_SocketInputPort, Scm_SocketInputPort):
	  prohibit creating i/o ports from closed socket.

	* src/gauche.h: removed SCM_VECTOR_FOR_EACH, for it was buggy and
	  not a very useful API.
	* src/hash.c: rewrote the only instance of using SCM_VECTOR_FOR_EACH.

	* libsrc/gauche/collection.scm (map-to): size estimatin was wrong when
	  multiple collections of uneven lengths are given.
	* libsrc/gauche/sequence.scm (map-to-with-index): ditto.

	* lib/util/stream.scm (write-stream, ->stream-char): fix let-optionals
	  -> let-optionals*.

	* lib/gauche/procedure.scm (complement): added complement.

	* src/compile.scm (pass2/$CALL): fixed a bug that caused an internal
	  compiler error when local function inline expansion happens
	  recursively.  Many thanks to Jun Inoue for tracking this bug
	  down.

	* lib/text/sql.scm (sql-tokenize): INCOMPATIBLE CHANGE: changed to
	  return SQL unquoted identifiers as strings.  This is because
	  we want to preserve the case of identifiers; although SQL is
	  case-insensitive, some RDBMS honors the case of table and
	  column names.  It would be very confusing if pass-through SQL and
	  SQL parsed by sql-tokenize behaves differently.
	* lib/dbi.scm (generate-sql/parameters): adapted to the above change.

	* src/port.c (bufport_read): fixed a bug that could block read
	  from non-full-buffered port even there are some data in the
	  buffer.

	* INSTALL.esc: corrected the default encoding (euc-jp -> utf-8).

2006-01-03  Shiro Kawai  <shiro@acm.org>

	* src/system.c (Scm_DirName): fixed a bug that doesn't handle a
	  pathnames with a single slash at the beginning, like "/abc".

2005-12-21  Shiro Kawai  <shiro@acm.org>

	* src/write.c (write_object_fallback), src/class.c (class_print):
	  Show whether the class is redefined.  This helps to avoid confusions
	  during interactive development when the class is redefined.

2005-12-04  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub (read-block): fixed a bug that may cause SEGV later.
	  (patch from Tatsuya BIZENN).

2005-11-23  Shiro Kawai  <shiro@acm.org>

	* lib/util/relation.scm (util.relation): relation-rows wasn't exported.

2005-11-17  Shiro Kawai  <shiro@acm.org>

	* lib/util/stream.scm (stream-filter): fixed a bug from the reference
	  implementation that didn't handle the end of stream correctly.

2005-11-11  Shiro Kawai  <shiro@acm.org>

	* ext/template.Makefile.in : add $(DESTDIR)

2005-11-10  Shiro Kawai  <shiro@acm.org>

	* src/signal.c (sig_handle): in the sigqueue overflow warning,
	  show the signal name and number as the debugging aid.

	* src/number.c (Scm_Divide): fixed a bug that busts VM when
	  a bignum is divided by zero.

	* lib/gauche/collection.scm, lib/gauche/sequence.scm,
	  lib/gauche/hook.scm, lib/gauche/parameter.scm: moved to libsrc/,
	  and compiled into DSOs under ext/gauche.
	* test/colseq.scm, test/hook.scm, test/parameter.scm: moved into
	  ext/gauche.
	* ext/gauche/* : compile some of gauche.* modules into DSOs
	* configure.ac, ext/Makefile.in, lib/Makefile.in: adjusted
	  accordingly.

2005-11-09  Shiro Kawai  <shiro@acm.org>

	* src/gencomp: added --keep-private-macro option to emit some
	  private macros into the generated Scheme file by --ext-module
	  option.  It's a kludge, but needed to compile gauche.parameter.

	* src/preload.scm: added to make HOSTGOSH more compact.  See the file
	  for the detailed explanation.
	* src/Makefile.in (HOSTGOSH): rewrote using preload.scm

2005-11-07  Shiro Kawai  <shiro@acm.org>

	* src/main.c (main): recognize drive letter in argv on MinGW32.

	* configure.ac: fixed a problem for configuring with
	  --enable-multibyte=none.  (Pointed by Sven Hartrumpf).

2005-11-04  Shiro Kawai  <shiro@acm.org>

	* release 0.8.6

	* src/genconfig.in: added --prefix optoin.
	* ext/template.configure.ac: override the default prefix by the prefix
	  used to compile installed Gauche.

2005-11-03  Shiro Kawai  <shiro@acm.org>

	* src/Makefile.in : fixed to make sure lib/gauche/vm/insn.scm is
	  generated at pre-package stage.

	* src/genconfig.in: generates src/gauche/arch.h simultaneously as
	  src/gauche-config.c, for it's simpler to synchronize (esp. in
	  MinGW).
	* src/Makefile.in : changed accordingly.

	* src/genarch : removed.

	* lib/util/relation.scm (<relation>): no longer inherits <collection>,
	  since <sequence> can also become as a relation.  It now behaves
	  like a mixin.  Added the relation-rows method to adapt to the
	  collection.

	* lib/gauche/sequence.scm (ref): restrict second arg to <integer>,
	  so that it won't interfere if the object inherits <sequence> and
	  something else.

2005-11-02  Shiro Kawai  <shiro@acm.org>

	* src/regexp.c (rc_setup_context): fixed a bug that caused
	  regexp-compile to choke if an external AST containing non-greedy
	  match, assertin, etc.

2005-11-01  Shiro Kawai  <shiro@acm.org>

	* ext/charconv/charconv.c, ext/net/netdb.c : force static data to
	  be in .data section instead of .bss section, for .bss section can't
	  be reliably scanned by GC.

	* src/syslib.stub (sys-fork): force GC_gcollect() just before fork(),
	  to avoid the page dirty bits synchronization problem on Solaris.
	  (See my post in the Boehm gc mailing list on Nov 1).

2005-10-30  Shiro Kawai  <shiro@acm.org>

	* lib/www/cgi.scm (cgi-main): ensure error page output goes to the
	  current-output at the time cgi-main is called.

2005-10-29  Shiro Kawai  <shiro@acm.org>

	* src/syslib.stub (sys-close): added for low-level tweaking.

2005-10-28  Shiro Kawai  <shiro@acm.org>

	* src/regexp.c (rc_setup_context): fixed a bug that caused
	  regexp-compile to choke if an external AST containing 'wb' or
	  'nwb' node is given.
	  (rc3_rec): fixed bad assertion.

	* lib/binary/pack.scm (read-one-packer): fix 'V' directive, and
	  added n!, N!, v!, V! directives as the signed variants of
	  n, N, v, and V.  (Patch from Masatake YAMATO).

2005-10-27  Shiro Kawai  <shiro@acm.org>

	* lib/www/cgi.scm (get-mime-parts): put a code to accomodate broken
	  IE sending improperly quoted value to content-disposition field.
	  (Patch from Tatsuya BIZENN).

	* src/system.c (time_compare): implement proper compare function
	  so that equal? will work on <time>'s.
	* ext/srfi/srfi-19-lib.scm (time<=? etc): changed accordingly.

	* src/char.c (charset_compare): implement compare function properly,
	  so that equal? will work on charsets.

	* ext/vport/vport.c (bport_allocate): accept :buffer-size keyword
	  argument to specify the size of the buffer (Patch from Tatsuya
	  BIZENN).

2005-10-26  Shiro Kawai  <shiro@acm.org>

	* src/system.c (Scm_NormalizePathname, Scm_BaseName, Scm_DirName):
	  rewrote to handle multibyte pathnames correctly (even with sjis
	  that may contain 0x5c in the second byte).

2005-10-25  Shiro Kawai  <shiro@acm.org>

	* src/gencomp (insert-ext-initializer): emit SCM_INIT_EXTENSION
	  in the initialization routine when it is compiling stand-alone
	  Scheme file (i.e. --ext-module option is given).

2005-10-23  Shiro Kawai  <shiro@acm.org>

	* configure.ac, Makefile.in, src/genconfig.in : added experimenal
	  support to build Gauche as a private framework on MacOSX.
	  After installing Gauche as usual, configure the source with
	  --enable-framework, then do 'make framework'.
	* src/genarch, src/paths.c, src/gauche/paths.h, src/getdir_*.c,
	  src/core.c:
	  splitted out the routines to obtain runtime pathnames.

2005-10-21  Shiro Kawai  <shiro@acm.org>

	* src/genconfig.in: added --pkg{inc|lib|arch}dir option for more
	  flexible extension configuration.
	* ext/template.Makefile.in, ext/template.configure.ac: adapted to
	  --pkg*dir option of gauche-config.  With the generated configure
	  script, the package installer can choose installation location
	  by command-line options such as --prefix, --exec-prefix, --libdir
	  or --datadir.

2005-10-12  Shiro Kawai  <shiro@acm.org>

	* src/string.c, src/gauche.h (ScmString): API CHANGE: ScmString
	  is splitted into the header part and the immutable body
	  (ScmStringBody), for thread safety.  See the lengthy comment
	  in the STRING section of gauche.h.  New thread-safe API,
	  Scm_GetStringContent and SCM_STRING_BODY* macros are added.
	  Use of SCM_STRING_LENGTH, SCM_STRING_SIZE and SCM_STRING_START
	  is deprecated.
	* src/*.{c,stub}, ext/*/*.{c,stub}: adapted to the above changes.

2005-10-09  Shiro Kawai  <shiro@acm.org>

	* doc/libgauche-ref.texi: dumped.
	* doc/gauche-dev.texi: started.

2005-10-07  Shiro Kawai  <shiro@acm.org>

	* ext/srfi/srfi-19-lib.scm (tm:integer-reader-exact): fixed typo.

2005-10-06  Shiro Kawai  <shiro@acm.org>

	* src/class.c (generic_initialize): It turned out we don't need a
	  special initialization method for <generic>.  We can just let
	  the default initialization method to handle it.  The custom
	  initialization method had a problem of initializing slots defined
	  in a subclass of <generic>.
	* lib/dbi.scm : added some more backward-compatibility code.

2005-10-05  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-55.scm (require-extension): when srfi number unknown to
	  the Gauche runtime is given, it expands to (use srfi-N) anyway,
	  so that it may work if the user put srfi-N.scm in the load-path.
	  (This is useful to make Alex Shinn's common-scheme work).

2005-10-04  Shiro Kawai  <shiro@acm.org>

	* src/vector.c (Scm_MakeVector): check the size argument.
	* ext/srfi/srfi-43-lib.scm: added support of srfi-43.
	* ext/srfi/test.scm: ditto.

2005-10-03  Shiro Kawai  <shiro@acm.org>

	* src/list.c (Scm_ListTail): added fallback argument for consistency.
	* src/vector.c (Scm_ListToVector): added start and end arguments
	  to support srfi-43's extended list->vector.
	* src/*.c : some files are affected by the above API changes.

2005-10-02  Shiro Kawai  <shiro@acm.org>

	* src/prof.c (Scm_ProfilerStart): fixed bugs that the temporary file
	  wasn't reopened after profiler reset, and profiler-show/profiler-stop
	  segfaulted if profiler-start hadn't been called.  Patch from
	  Michael Campbell.
	* src/autoloads.scm (profiler-show): autoloads gauche.vm.profiler.

2005-09-30  Shiro Kawai  <shiro@acm.org>

	* src/system.c (Scm_NormalizePathname): fixed memory corrupting bug.

2005-09-22  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/http.scm (receive-body-chunked): added error checking of
	  premature end of chunked body, and fixed a bug referring a
	  nonexistent variable (patch from Michael Campbell).

2005-09-20  Shiro Kawai  <shiro@acm.org>

	* src/load.c (Scm_LoadAutoload): fixed a bug that autoload's
	  definition enviornment and resolution environment didn't match.

2005-09-18  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/common-macros.scm (until): missing => as a literal
	  identifier.

2005-09-13  Shiro Kawai  <shiro@acm.org>

	* libsrc/file/util.scm (relative-path?): recognize pathnames beginning
	  with '~' as a relative pathname.  Tilda expansion must be done
	  before any operation on pathnames anyway.

2005-09-12  Shiro Kawai  <shiro@acm.org>

	* lib/dbi.scm, lib/dbd/null.scm, test/dbidbd.scm : reverted the change
	  in 9/6, and we use <dbi-query> and dbi-execute again.  It is because
	  some drivers require an explicit deallocation of resources used
	  by prepared query, and we can't do it nicely with closures.

2005-09-11  Shiro Kawai  <shiro@acm.org>

	* src/class.c (accessor_get_proc, accessor_set_proc): fixed a long
	  standing bug about an undesired interaction of modules and accessor
	  methods.  Check out test/object.scm "module and accessor" section
	  for an explanation and an example.

	* lib/gauche/let-opt.scm, lib/gauche/singleton.scm,
	  lib/gauche/validator.scm : issue warning when used.  preparation
	  of removing these obsoleted modules.

	* src/genstub, *.stub : added define-enum-conditionally to abbreviate
	  the common idiom of defining Scheme enum constant only if it is
	  defined in C.  Rewrote some .stub files by using it.
	* ext/net/netaux.scm, ext/net/net.scm: compile Scheme part into
	  libnet.so.

	* ext/net/netlib.stub (socket-status): made returned symbol lowercase,
	  in sync with the documentation.

	* src/gauche.h (SCM_FOREIGN_POINTER_P): use SCM_ISA to check.

	* src/syslib.stub: exposed some unix error codes (such as EINTR)
	  as predefined constants.

2005-09-10  Shiro Kawai  <shiro@acm.org>

	* configure.ac (--enable-multibyte): Switched the default encoding
	  from euc-jp to utf-8.  Issue a warning and wait for user's
	  reaction if --enable-multibyte is not given to ./configure,
	  in order to avoid confusion.

	* lib/dbi.scm, lib/dbd/null.scm : dropped <dbi-object> and
	  <dbi-result-set>.  Moved dbi-get-value to the deprecated section.
	  Defines fallbacks of dbi-open? and dbi-close.

	* lib/util/relation.scm (util.relation): exports <simple-relation>
	  and <object-set-relation>.

	* src/module.c (Scm_FindBinding): fixed a bug that inadvertently
	  exposes non-exported symbols to outside.

2005-09-09  Shiro Kawai  <shiro@acm.org>

	* ext/mt-random/mt-random.c (mt_allocate): allow u32vector to be
	  given to :seed initarg.

	* ext/srfi/srfi-19-lib.scm (tm:integer-reader-exact): fixed typo
	  in function name.

	* src/genstub : added 'code' spec to the cproc body so that
	  the cproc can perform some checking before 'call' or 'expr' spec.

	* ext/charconv/convaux.scm: splitted Scheme-defined functions
	  from charconv.scm and compile them into charconv.so.

2005-09-06  Shiro Kawai  <shiro@acm.org>

	* lib/dbi.scm, lib/dbd/null.scm: Revised API.  Now dbi-prepare
	  returns a closure that executes the prepared query when invoked.
	  Dropped dbi-execute.  Dropped dbd-prepare and dbd-execute, since
	  the driver can now just overload dbi-prepare.
	  Renamed dbd-make-connection to dbi-make-connection to make
	  every method is called dbi-* now (the legacy dbi-make-connection
	  can be distinguished by the signature).  Sets the default method
	  of legacy dbi-make-query and dbi-execute-query so that the old
	  client code that uses legacy DBI API can work with the new dbi/dbd.

	* libsrc/srfi-13.scm (%string-prefix-int): fix (Patch by
	  Michal Maruška).

2005-09-05  Shiro Kawai  <shiro@acm.org>

	* src/main.c (further_options): comment options for internal use.

2005-09-04  Shiro Kawai  <shiro@acm.org>

	* m4/*, aclocal.m4 : adapetd to the newer autotools convention.
	* acinclude.m4: removed. superseded by m4/gauche.m4.

2005-09-03  Shiro Kawai  <shiro@acm.org>

	* ext/template.configure.ac : renamed configure.in -> configure.ac
	* src/gauche-package.in : ditto
	* examples/mqueue-cpp/configure.ac: ditto
	* examples/spigot/configure.ac: ditto

2005-09-02  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/common-macros.scm (while, until): now these are
	  supported officially, with additional syntax to bind a variable
	  during execution of repetition body.

	* src/class.c (Scm_ForeignPointerAttr etc): added 'attributes' alist
	  to a foreign pointer.  See the comments in gauche.h for its usage.

2005-09-01  Shiro Kawai  <shiro@acm.org>

	* lib/dbi.scm : ensure dbi-parse-dsn always return a string and
	  a list as option-string and option-alist.

2005-08-31  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive/info.scm (viewer): check whether TERM is
	  "dumb", for the newer XEmacs sets it.

	* src/genstub: reverted to tolerate 'void' to be a return type
	  as well as '<void>' (to accept legacy stub files).
	  (define-type): fixed the behavior when #f is specified for
	  predicate/unboxer/boxer names.

	* src/gencomp: adds #include <gauche/macro.h> to the output C code
	  (necessary if a traditional macro is compiled in).
	* lib/gauche/package/util.scm, lib/gauche/package/build.scm: changed
	  to ask password immediately after "gauche-package install" command
	  is invoked with "--install-as" option.  The previous versions asked
	  pass before actual installation, which was annoying when the build
	  process took long.

2005-08-30  Shiro Kawai  <shiro@acm.org>

	* doc/extract : switched to generate Japanese document in utf-8.
	  Partly because the new texi2html uses utf-8 if I specify --lang=jp.
	* lib/text/sql.scm: renamed text.sxql to text.sql, since I keep
	  being confused (was it sqxl or sxql?) and also it's awkward to type.

2005-08-29  Shiro Kawai  <shiro@acm.org>

	* lib/dbi.scm (dbi-escape-sql): changed not to add surrounding quotes.

	* src/module.c (Scm_FindBinding): fixed a problem that export
	  shadowed the binding that should be visible in the module body.
	* src/moplib.stub (%ensure-generic-function): ensure the method
	  definition always inserts the binding of the generic function
	  in the current module.

	* lib/dbi.scm: let the default methods for legacy API raise an
	  error, to catch the case a dbd implentation fails to implement
	  necessary methods.

	* util/relation.scm : changed its name to singular for the consistency
	  of gauche.collection etc.

2005-08-28  Shiro Kawai  <shiro@acm.org>

	* src/gencomp: improved macro handling

	* Reorganized to compile some Scheme libraries as extension modules.
	* libsrc/* : library sources that are compiled as extension modules,
	  _and_ required during compilation, are moved here from lib.
	* src/main.c : when -ftest flag is given, add ../libsrc to the
	  search path as well.
	* lib/gauche/cgen.scm : added regexp literal support.
	* src/stdlib.stub : added regexp-case-fold?
	* lib/gauche/procedure.scm: partial evaluated versions of srfi-1
	  procedures are moved here.

2005-08-27  Shiro Kawai  <shiro@acm.org>

	* src/main.c (main): reversed search priority of 'lib' and 'src'
	  when -ftest option is given.  See the comment for the details.
	* src/gencomp: added -o option to specify the output .c name
	  (experimental).

2005-08-26  Shiro Kawai  <shiro@acm.org>

	* src/Makefile.in: introduced HOSTGOSH macro to be used whenever
	  host gosh is required.

	* gc/configure.in: set LARGE_CONFIG.

2005-08-25  Shiro Kawai  <shiro@acm.org>

	* ext/xlink: removed dependency to the library modules.

2005-08-24  Shiro Kawai  <shiro@acm.org>

	* src/objlib.scm (%expand-define-class): avoid embedding literal
	  closure to the macro output, for it prevents the code using
	  define-class from being pre-compiled by gencomp.  Instead we
	  insert an identifier.

	* src/gauche-init.scm: removed compatibility hack of loading
	  gauche.object for transition of 0.8.3->0.8.4.
	* lib/gauche/object.scm: removed, for it is no longer needed.

	* src/gencomp: Experimentally added --ext-module option to allow
	  gencomp to emit a module interface scm file, so that it can be
	  used to compile extension modules out of Scheme library easily.
	  This is highly experimental; interface and build process may
	  likely change.
	* src/core.c: changed accordingly.
	* ext/sxml/*: using the above change, compile sxml.ssax, sxml.sxpath
	  and sxml.tools into extension modules.
	* ext/uvector/uvseq.scm : added to compile collection & sequence
	  framework stuff into libgauche-uvector.so.
	* ext/srfi-19/*: this is also turned to an extension.

2005-08-23  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen.scm (<cgen-scheme-char-set>): added support for
	  the literal char-set.

2005-08-22  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h (SCM_FOREIGN_POINTER_REF): takes type argument for
	  casting.

	* lib/gauche/logger.scm (log-default-drain): exposed the default
	  drain as a parameter.

	* src/module.c, src/gauche.h, src/symbol.c: put the information
	  of whether a binding is exported or not in gloc, instead of
	  module->exported list.  We keep the exported list only for backward
	  compatibility and the convenience of meta-module utilities.
	  This change makes Scm_FindBinding faster, since it doens't need
	  to scan the exported list.  We also removed the weird convention
	  of putting #t to the exported list to show export-all status---now
	  exported list always keeps the list of exported symbols, even
	  the module is export-all-ed ('define' adds the defined symbol to
	  the exported list).
	  As a side effects, the 'export' syntax is interpreted in more
	  strict way; specifically, you shouldn't export a symbol which you
	  don't define in the module.  It used to be ignored, but now it
	  shadows the earlier binding of the symbol.

2005-08-19  Shiro Kawai  <shiro@acm.org>

	* src/main.c (main): use GC_INIT macro instead of our own #ifdef-ed
	  GC initialization stuff.

2005-08-18  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (Scm_EvalCString): added for convenience.

2005-08-15  Shiro Kawai  <shiro@acm.org>

	* src/number.c (IEXPT10_TABLESIZ): we need to enlarge pre-calculated
	  exp10 table to handle denormalized numbers.

2005-08-12  Shiro Kawai  <shiro@acm.org>

	* src/vm.c, src/vmstat.c: added some code to record instruction
	  and instruction pair frequency (enabled only if vm.c is compiled
	  with COUNT_INSN_FREQUENCY defined).  The collected data will be
	  useful for tuning.

	* src/extlib.stub: the spec of hash-table-update! was broken.  PROC
	  should be called with the default value, when the given key hasn't
	  been in the table.

2005-08-11  Shiro Kawai  <shiro@acm.org>

	* src/vm.c: experimentally added the custom mark procedure for the
	  VM stack under USE_CUSTOM_STACK_MARKER flag.  It doesn't show
	  any improvement, so currently it's turned off.

2005-08-10  Shiro Kawai  <shiro@acm.org>

	* gc/* : upgraded to Boehm GC 6.5.

2005-08-09  Shiro Kawai  <shiro@acm.org>

	* ext/net/netlib.stub, ext/net/net.scm : added sys-htonl, sys-htons,
	  sys-ntohl and sys-ntohs (based on the patch by John Kilburg).
	* src/genstub: fixed a bug in <uint> stub-type handling.

2005-08-07  Shiro Kawai  <shiro@acm.org>

	* lib/Makefile.in: enable installation of dbi.

	* lib/util/queue.scm: added copy-queue.
	* src/genstub: allow 'maybe' type qualifier to have stub-generated
	  code to handle #f <-> NULL conversion.  also supports multiple
	  value return in 'body' spec.
	* *.stub: adapted to the new specs.

2005-08-06  Shiro Kawai  <shiro@acm.org>

	* lib/util/isomorph.scm (object-isomorphic?): was a normal procedure,
	  which should be a generic function.

2005-08-05  Shiro Kawai  <shiro@acm.org>

	* src/hash.c, test/hash.scm: hash-table-type has been broken for
	  a while.  (Patch from Ueyama Rui)

2005-08-04  Shiro Kawai  <shiro@schemearts.com>

	* src/gauche/char_utf_8.h: fixed u_char*/char* pointer confusion.

2005-08-01  Shiro Kawai  <shiro@acm.org>

	* configure.ac: 0.8.6_pre1

	* examples/mqueue-cpp: An example of writing bindings to C++ libraries.

	* src/genstub: rewriting genstub 2nd stage: added new CPROC specs,
	  'body' and 'expr'.  They can make typical cproc body much shorter.
	  The 'return' spec is deprecated, in favor of 'call' spec.
	  Also added C++ exception handling support---with 'catch' spec,
	  the stub body is surrounded by try-catch construct and C++ exceptions
	  raised in the body is converted to Gauche exception.
	* *.stub: adapted to the new CPROC specs.

2005-07-31  Shiro Kawai  <shiro@acm.org>

	* src/genstub: rewriting genstub 1st stage: adopted gauche.cgen
	  framework to generate code.

2005-07-30  Shiro Kawai  <shiro@acm.org>

	* lib/file/util.scm (path-sans-extension): fixed abnormality when
	  passed a pathname without dirname part.

	* lib/gauche/logger.scm (default-lock-policy): select 'file lock
	  policy only for MacOSX 10.2 and before.  10.3 and later supports
	  fcntl (Patch from Tatsuya BIZENN).

	* src/gauche-package.in: add --cc flag in 'compile' command to
	  specify alternative C compiler; handy when you're writing a bridge
	  to C++ library.
	* src/genstub: added <const-cstring> stub type.

	* src/class.c: revised foreign-pointer API to take flags.  supports
	  the mode that keeps one-to-one mapping between foreign pointer and
	  wrapping ScmObj, for easier resource management.

	* src/weak.c: added WeakBox C API.

2005-07-28  Shiro Kawai  <shiro@acm.org>

	* src/hash.c, src/gauche.h, src/*: rehashed hashtable API to allow
	  raw C data in keys and values.

	* src/*: code cleanup: replaced SCM_HASHTABLE -> SCM_HASH_TABLE and
	  SCM_WEAKVECTOR -> SCM_WEAK_VECTOR for naming consistency.
	  SCM_HASHTABLE remains as alias for a while, since it may be used
	  in some extensions, but should go away very soon.

2005-07-24  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (run_loop): Fixed handling of numVals.  Some instructions
	  used not to set numVals so that the previous numVals 'leaked',
	  yielding incorrect result.

2005-07-22  Shiro Kawai  <shiro@acm.org>

	* src/core.c (Scm_AddCleanupHandler, Scm_DeleteCleanupHandler):
	  Added API for C-level handlers that are called before exitting
	  Scheme.
	  (Scm_Exit, Scm_Cleanup): allows the application to call cleanup
	  part separately, for the apps that wants some operation after
	  shutting down Scheme system.
	* src/main.c : rewritten profiler and statistics output using
	  the new cleanup handler API.

2005-07-21  Shiro Kawai  <shiro@acm.org>

	* src/module.c (Scm_FindModule): API CHANGE for consistency.  Now
	  it takes bitflags as the second arg, and returns ScmModule*
	  instead of ScmObj.  Also it signals an error if flags = 0 and
	  named module doesn't exist.
	  This shouldn't affect typical usages, for most of them are either
	  passing TRUE in the second arg (in new API it's the same meaning),
	  and casting the returned value immediately to ScmModule*.
	* src/error.c (Scm_Raise): Make Scm_VMThrowException an internal API,
	  and provide Scm_Raise instead.
	  (Scm_RaiseCondition): A convenience procedure to create a condition
	  and raise it.
	* src/gauche.h, src/vm.c, src/read.c, src/main.c, src/load.c,
	  src/gencomp, src/extlib.stub, src/exclib.stub, ext/* :
	  Changed accordingly.

2005-07-18  Shiro Kawai  <shiro@acm.org>

	* src/class.c, src/gauche.h (ScmForeignPointer): added convenience
	  procedures to wrap foreign pointers.

	* src/syslib.stub (sys-strerror): added.

2005-07-16  Shiro Kawai  <shiro@acm.org>

	* lib/file/util.scm (make-directory*): do not call sys-mkdir if the
	  last component of the path is ".".

	* src/gauche-install.in : added -U (uninstall) option.

	* ext/template.DIST, src/gauche-package.in, examples/spigot/README:
	  Let "gauche-package generate" put DIST script, too.  Changed
	  description in spigot/README to reflect the new way of using
	  gauche-package.

	* lib/util/stream.scm: added srfi-40 and more.

2005-07-15  Shiro Kawai  <shiro@acm.org>

	* src/promise.c, src/gauche.h, src/compile.c, src/extlib.stub,
	  src/vm.c: Adopted srfi-45 semantics of lazy evaluation.  A new
	  primitive syntax 'lazy' is added.  See srfi-45 for the details.

	* lib/util/relations.scm (util.relations): added.  A generic
	  framework of dealing with relations.  This module will grow later.

2005-07-11  Shiro Kawai  <shiro@acm.org>

	* src/error.c, src/exclib.stub, src/scmlib.scm (error, errorf):
	  implement error and errorf in Scheme, allowing to specify
	  condition class to throw.

	* lib/slib.scm.in : additional interface for slib3 (patch from
	  Dai Inukai).

2005-07-10  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub: deprecate symbol-bound?, superceded by
	  global-variable-bound?.  See the manual for the reason.
	  Also added global-variable-ref.
	* src/scmlib.scm (symbol-bound?): implemented here for the backward
	  compatibility; will go away in future.
	* ext/auxsys/auxsys.scm, ext/net/net.scm, ext/net/test.scm,
	  ext/termios/test.scm, lib/gauche/modutil.scm, test/*.scm:
	  replaced symbol-bound? for global-variable-bound?

2005-07-06  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (save_env, save_cont): improved stack-overflow handling
	  performance. (x5.7 compared to 0.8.5).

2005-07-02  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/package/compile.scm : utility to compile & link
	  extension modules.
	* src/gauche-package.in: added 'compile' and 'generate' command
	  to ease extension module building.
	* ext/template.*: template files for extension modules.
	  "gauche-package generate" creates the skeleton from these files.

2005-07-01  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/regexp.scm (regexp-replace*, regexp-replace-all*):
	  useful fns to apply multiple regexp replace on a string.

2005-06-30  Shiro Kawai  <shiro@acm.org>

	* release 0.8.5

	* src/signal.c : fixed a problem that with-signal-handlers reset
	  SIGCHLD handler to SIG_IGN afterwards.

	* src/number.c (double_print): changed notation of infinity to #i1/0
	  to emphasize inexactness.  (this notation might change depending
	  on how srfi-70 comes out).

	* src/port.c, src/system.c : set O_BINARY by default on MinGW.
	  For sys-rename, unlink the destination file before calling rename()
	  on MinGW, since Windows doesn't allow rename over an existing file.
	  (NB: this breaks atomicity of rename operation).
	* src/mingw-exify, src/Makefile.in : to run gauche-* utilities on
	  Windows, we decided to generate .exe files for them.
	* lib/file/util.scm (find-file-in-paths): Adapt MinGW, which uses
	  #\; for PATH directory separator.

2005-06-29  Shiro Kawai  <shiro@acm.org>

	* src/genconfig.in, Makefiles : better MinGW support
	* src/system.c (Scm_Globdirectory): support on MinGW
	* lib/file/util.scm: better MinGW support

2005-06-27  Shiro Kawai  <shiro@acm.org>

	* lib/www/cgi.scm (cgi-default-output): make sure cgi-default-output
	  writes out everthing even if output conversion port is inserted.

2005-06-23  Shiro Kawai  <shiro@acm.org>

	* src/genconfig.in : introduced to make gauche-config a compiled
	  executable.
	* src/gauche-config.in : removed, for a shell script doesn't work
	  well on Windows/MinGW.  Instead, src/genconfig generates a C
	  file gauche-config.c, which is then compiled to gauche-config.

2005-06-22  Shiro Kawai  <shiro@acm.org>

	* src/Gauche.spec : change Copyright: entry to License: for newer
	  version of rpm.
	* src/gauche.h, src/string.c, ext/uvector/uvector.c.tmpl,
	  ext/mt-random/mt-lib.stub, ext/digest/sha1.stub,
	  ext/digest/md5.stub : code cleanup to eliminate warnings.

2005-06-20  Shiro Kawai  <shiro@acm.org>

	* src/vector.c (Scm_VectorCopy): added fill argument to adopt srfi-43.
	* src/extlib.stub (vector-copy): ditto.

2005-06-16  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen.scm (cgen-emit-c): added some kludge to save cygwin.

	* src/number.c : let division by zero yields infinity instead of
	  an error.  Adopted a notation of 1/0 and -1/0 for positive and
	  negative infinity, following the current srfi-70 draft.
	  Treatment of NaN should be considered later.

2005-06-15  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen.scm (cgen-with-output-file): close the port
	  before unlinking or renaming the file, since Win32 doesn't like
	  a unclosed file to be removed.

	* src/compile.scm (inliner/-): There was a bug in constant-folding
	  path that yields a wrong value.  Gosh!

2005-06-08  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (and-let*): fix to handle lone BOUND-VARIABLE
	  case (patch provided by Michael Campbell).

2005-06-05  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm : typo fix (Patch from Hisazumi Kenji).

2005-06-01  Shiro Kawai  <shiro@acm.org>

	* src/system.c (time_nsec_set): fixed a format string bug in the
	  error message that caused double fault.

2005-05-31  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen.scm (cgen-allocate-static-datum): avoid generating
	  cast exprsesion when the value can be used as an lvalue.

2005-05-30  Shiro Kawai  <shiro@acm.org>

	* release 0.8.4

	* src/compile.scm (stmt-context): fixed typo.
	* src/gencomp (compile-toplevel-form): avoid emitting useless toplevel
	  code that only contains CONSTU-RET instruction (such code is
	  sometimes generated as the result of macro expansion).
	* src/code.c : expose codeSize field as size slot.

2005-05-29  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen.scm: revised handling of static C data for Scheme
	  literals to avoid forward-reference problem.
	* src/gencomp: ditto

2005-05-28  Shiro Kawai  <shiro@acm.org>

	* src/macro.c: fixed module handing during syntax-rules compilation
	  (passing current module explicitly instead of relying on
	  CURRENT_MODULE).

	* src/gauche/compaux.c (Scm_MakeIdentifier): API fix.  Removed
	  Scm_MakeIdentifierWithModule.
	* src/gauche/vm.h, src/macro.c, src/intlib.stub, src/gencomp,
	  src/compile.scm: changed accordingly

2005-05-27  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass1 program): added a check for function
	  application syntax being a proper list.

2005-05-26  Shiro Kawai  <shiro@acm.org>

	* configure.ac: added --enable-runtime-pseudo-reloc ld flag for MinGW.

2005-05-25  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/procedure.scm (compose): allow zero or one arguments
	  to compose (Suggested by Ueyama Rui).

2005-05-24  Shiro Kawai  <shiro@acm.org>

	* examples/spigot/Makefile.in : remove rpath link option, for it is
	  not portable and not necessary anyway.

2005-05-23  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-55.scm: added srfi-55.

	* ext/auxsys/auxsys.scm (sys-getloadavg), ext/auxsys/auxsyslib.stub,
	  ext/auxsys/auxsysconf.h.in, configure.ac, src/autoloads.scm:
	  Added sys-getloadavg (based on a patch from John Kilburg).

	* ltmain.sh, configu.guess, config.sub: updated for the latest version.

	* src/gauche/arith_i386.h : Applied patch from NIIBE Yutaka for
	  better register allocation.

	* src/regexp.c, test/regexp.scm, src/builtin-syms.scm : Added
	  support of lookahead assertion (Patch from Ueyama Rui)

2005-05-22  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-42.scm : Added srfi-42 support; it is a port of srfi-42
	  reference implementation.  Contributed by Alex Shinn.
	* lib/Makefile.in : changed accordingly.

2005-05-21  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h (ScmSyntax), src/compaux.c: simplified ScmSyntax
	  handling.  Now syntax handlers are defined in Scheme and called
	  from VM, so we can use Scm_VMApply to call them.
	* src/compile.scm : we don't change vm-current-module during
	  compilation anymore.   VM's current module info is taken at
	  the beginning of COMPILE as the default module, but then the
	  info is kept private throughout the compiler and the constructs
	  such as WITH-MODULE won't affect the VM's current module.
	  This may affect CURRENT-MODULE call in the traditional macro
	  (which used to be the module of the code being compiled).
	  This is a provisional change: we need to consider semantics of
	  SELECT-MODULE.
	  Also various small optimization is done.
	* src/autoloads.scm, src/gauche-init.scm, lib/gauche/modutil.scm:
	  EXTEND, EXPORT-ALL and REQUIRE are now recognized by the compiler.

2005-05-17  Shiro Kawai  <shiro@acm.org>

	* ext/threads/mutex.c (Scm_MutexLock, Scm_MutexUnlock): added
	  protection for the case that mutex can be locked indefinitely
	  by killed thread. (Patch from Michael Campbell).
	* lib/srfi-19/format.scm (tm:locale-long-month->index): fixed
	  incorrect call to find-index (Patch from Michael Campbell).

2005-05-16  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (compile), src/compaux.c (Scm_Compile): API fix.

2005-05-15  Shiro Kawai  <shiro@acm.org>

	* src/gencomp (vectorize-code): fix to make the dumped code work on
	  both 32bit and 64bit architecture.

2005-05-13  Shiro Kawai  <shiro@acm.org>

	* src/load.c (Scm_VMLoadFromPort): Lock port during loading.  This
	  slightly improves script loading performance.

	* src/compile.scm, src/code.c: rewrote instruction emitting & combining
	  routine (pass3/emit!) in C for better compiler performance.
	  (20-25% gain!).  Also optimized pass1/global-call.
	* src/intlib.stub: changed accordingly.

2005-05-11  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (Scm_NewVM): removed redundant 'module' parameter.
	  (Scm_AttachVM): added API.
	* ext/threads/threads.c: changed accordingly.

	* src/regexp.c : added range check of jump offset.

2005-05-10  Shiro Kawai  <shiro@acm.org>

	* ext/dbm/gdbm.scm (dbm-db-copy, dbm-db-rename): didn't work. fixed.
	* ext/uvector/uvlib.stub.tmpl: some linear-updating binop didn't
	  reuse the arg.


2005-05-01  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-1.scm, lib/srfi-1/*.scm: removed some procedures that are
	  already defined in the core.

2005-04-30  Shiro Kawai  <shiro@acm.org>

	* src/objlib.scm: embed gauche/object.scm into the core library.
	* src/gencomp: Fixed handling of identifiers.
	* src/compile.scm: Object system macros (define-class etc) are now
	  handled as syntax, though this should be transient until gencomp
	  properly handles macros.
	* src/gauche-init.scm, src/core.c, src/autoloads.scm:
	  changed accordingly.

2005-04-28  Shiro Kawai  <shiro@acm.org>

	* src/code.c (Scm_CompiledCodeDump): unwrap syntax from the source
	  code info display of the disassembler output.

2005-04-27  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm: fixed a critical bug in the stack handling.

2005-04-26  Shiro Kawai  <shiro@acm.org>

	* src/configure.ac: 0.8.4_pre2
	* src/vm.c, src/compile.scm: changed sematics of LOCAL_ENV_JUMP's
	  parameter to indicate the # of environment frame to discard.
	  It is required to keep the correct frame adjustment.
	  NB: you need working 0.8.4_pre2 to build this version.

2005-04-24  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (define-simple-struct): rewrote the macro for
	  simpler use.
	* lib/gauche/cgen.scm: improved literal registration handling.
	  The time for compiling compile.scm becomes a tenth of the previous
	  version.

2005-04-22  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (run_loop): changed LOCAL-ENV-JUMP, LOCAL-ENV-CALL, and
	  LOCAL-ENV-TAIL-CALL to get the nargs from SP - ARGP, instead of
	  the insn param.  The insn param will be used for other purpose.

2005-04-21  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/vm/debugger.scm, src/autoloads.scm: removed procedures
	  obsoleted by the new VM.

	* src/main.c: changed the profiler option to '-p' from '-fprofiler',
	  to allow future extensions.

2005-04-20  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interpolate.scm (%string-interpolate): insert bare symbols
	  instead of procedures themselves.  Not hygiene, but necessary for
	  the program that reads and writes the forms that containts #`"..."
	  syntax.
	* src/gencomp: allow the filename to have '+'/'-' char.
	* src/compile.scm: fixed a few serious bugs.

2005-04-19  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen.scm: define scm__staticStrings as const.
	* src/gencomp: substitute (current-module) during compilation to
	  avoid the expanded form from containing literal modules, and from
	  exposing temporary anonymous module used in the compilation.
	  In the dumped code, a call to current-module becomes a call to
	  find-module.

2005-04-18  Shiro Kawai  <shiro@acm.org>

	* src/stdlib.stub (real-part, imag-part): moved back here, for there's
	  not much advantage to having these outside the core.
	* lib/gauche/numerical.scm: changed accordingly.
	* src/autoload.scm: changed accordingly.

	* lib/slib.scm.in (*features*): removed slib from *features* list
	  to avoid (use slib) to load srfi-29, which overrides builtin 'format'
	  by the incompatible srfi-29's format.
	* src/gauche.h (SCM_EXTENDED_PAIR_P): fixed a bug that caused SEGV
	  when the macro was applied to statically allocated objects.
	* src/extlib.stub (hash-table-update!): added, based on John Kilburg's
	  patch.
	* test/hash.scm: added test for hash-table-update!, based on
	  John Kilburg's patch.

2005-04-13  Shiro Kawai  <shiro@acm.org>

	* src/prof.c: do not use one-shot timer, for it misses too many
	  samples.

	* src/link-dylib: fix build problem on MacOS X (Patch from
	  Tatsuya BIZENN).

	* src/compile.scm (pass2/local-call-optimizer): fixed a bug that
	  messes up argument list when the lambda node is traversed twice
	  in pass2.

2005-04-11  Shiro Kawai  <shiro@acm.org>

	* joined NVM0_8_3 branch to the trunc.
	* configure.ac: version 0.8.4_pre1

	* src/compile.scm, src/vm.c, src/vminsn.scm : Removed most of
	  the new instructions in the past several days, since it turned
	  out that they don't have much effect on the performance.  Let's
	  keep the VM ISA simple for now; we might find more effective way
	  later.

2005-04-10  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm: emit BNEQC, BNEQVC, BNUMNEF, BNLTF, etc.

	* src/vm.c (Scm_VMDefaultExceptionHandler), src/gauche/vm.h:
	  fixed a bug that may cause SEGV when stack overflow occurs
	  during error handlers.  The 'cont' pointer of currently
	  executing escape point wasn't updated by the continuation
	  frame relocation.

2005-04-05  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm : refactored.
	* src/vminsn.c : added quite a few new instructions.

2005-04-03  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass2): fixed closure optimizer.

2005-04-02  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass3): calculate maximum stack depth.
	  (pass2/$IF): more optimization.
	* src/code.c (Scm_CompiledCodeFinish): take maximum stack depth arg.
	* src/vm.c: now we know how much stack each closure would consume,
	  we need to CHECK_STACK only when we enter a new closure (and some
	  stack-manipulating places at runtime).
	* src/vminsn.scm: renamed from EXTEND-ENV to
	  LOCAL-ENV-CLOSURES, and removed unused insns PRE-TAIL, POP and DUP
	  EXTEND-ENV-POP1 is also dropped for now, since it seems too
	  kludgy (we may be resurrect it, but only after we try other
	  optimization strategies).

2005-04-01  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm (pass2/$IF): optimize to omit redundant jumps.
	* src/vminsn.scm, src/vm.c : added LOCAL-ENV-TAIL-CALL insn.

2005-03-31  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm, src/compaux.scm, src/intlib.stub : implement the
	  most frequently called procedure "cenv-lookup" in C to improve
	  compiler performance.

2005-03-30  Shiro Kawai  <shiro@acm.org>

	* src/compile.scm, src/vminsn.scm, src/vm.c, src/code.c: start adding
	  closure analysis.   Also cleaned up some code.

2005-03-22  Shiro Kawai  <shiro@acm.org>

	* src/comp.scm -> src/compile.scm : renamd
	* src/compile.c -> src/compaux.c : renamed
	* src/core.c, src/Makefile.in : changed accordingly.

	* src/gauche/vm.h, src/comp.scm, src/intlib.stub, src/main.c:
	  splitted COMPILE_NOINLINE flag into three categories for the
	  better debuggability.

2005-03-21  Shiro Kawai  <shiro@acm.org>

	* src/comp.scm: more local closure inlining
	* src/scmlib.scm: some more srfi-1 procedures implemented here
	  to be used in comp.scm.

2005-03-20  Shiro Kawai  <shiro@acm.org>

	* src/comp.scm: eliminate binding of some locally bound closures and
	  inline it.

2005-03-19  Shiro Kawai  <shiro@acm.org>

	* src/comp.scm: enable closure inlining (global inlining of
	  define-inline'd procedures, and local inlining of directly
	  called lambdas).
	  NOTE: With this feature enabled, the compiled code (by gencomp)
	  contains a literal vector of intermediate form.  If we change the
	  IForm definition, make sure to build the bootstrap version of
	  compiler with -fno-inline.
	* src/gauche/code.h (ScmCompiledCode): added intermediateForm slot
	  to keep IForm for later inlining.
	* lib/gauche/cgen.scm : allow literal vectors to be emitted
	  statically.

2005-03-16  Shiro Kawai  <shiro@acm.org>

	* src/comp.scm: tweaked typical patterns of letrec and named let.
	* src/vminsn.scm: added more combined instructions, and removed
	  obsoleted ones.

2005-03-15  Shiro Kawai  <shiro@acm.org>

	* prefix.scm (%string-suffix-int): fixed a bug that returned wrong
	  character count.

2005-03-14  Shiro Kawai  <shiro@acm.org>

	* src/comp.scm: turned on the pass2 optimization.  added some more
	  combined instructions.  selection of specialized instructions
	  (e.g. NUMADDI) is pushed back to pass3/$ASM, instead of in the
	  inliner functions, so that we can take advantage of constant
	  folding and local variable renaming.
	* src/vminsn.scm, src/vm.c: added CONSTx, CONSTx-PUSH, EQVI, BNEQVI,
	  PEEK-CHAR, CURIN, CUROUT, CURERR instructions.

2005-03-13  Shiro Kawai  <shiro@acm.org>

	* src/comp.scm: separate $let and $letrec intermediate forms.  emit
	  EXTEND-ENV-CLOSURES instruction for letrec.
	* src/vminsn.scm, src/vm.c, src/code.c:
	  Support EXTEND-ENV-CLOSURES instruction.  Removed a few obsoleted
	  instructions.  Made Scm_Apply more efficient.

2005-03-12  Shiro Kawai  <shiro@acm.org>

	* src/vminsn.scm, src/vm.c: removed obsoleted LET and TAIL-LET
	  instructions.

2005-03-11  Shiro Kawai  <shiro@acm.org>

	* src/*: removed SCM_VM_INSN stuff.  The compiled code vector is
	  created by compiled code builder API (in code.c), and the VM
	  instruction themselves are no longer distinct Scheme objects.
	  Instead, the VM instructions are dealt with simple integers.
	  By this change, the older-style compiled program representation,
	  i.e. a directed graph of VM instructions, is completely gone.

2005-02-28  Shiro Kawai  <shiro@acm.org>

	* src/code.c, src/gauche/code.h: refactored out compiled-code stuff
	  to separate files.

2005-02-21  Shiro Kawai  <shiro@acm.org>

	* src/comp.scm: improved quasiquote handling so that it generates
	  compile-time constant structure if the unquoted expressions are
	  all constant (including references to the constant variables).
	* test/primsym.scm: added more tests for quasiquotes.

2005-02-19  Shiro Kawai  <shiro@acm.org>

	* src/scmlib.scm: moved some autoloaded built-ins into this, which
	  is compiled into libgauche.
	* src/autoload.scm, src/core.c, src/Makefile.in: changed accordingly.
	* lib/gauche/listutil.scm, lib/gauche/with.scm: removed accordingly.
	* src/gauche-init.scm: moved some definitions to scmlib.scm.

2005-02-17  Shiro Kawai  <shiro@acm.org>

	* src/load.c (Scm_Load): fixed a bug that treats LOAD_QUIET_NOFILE
	  flag incorrectly.

	* src/main.c: added -fprofile option to profile the script.
	* lib/gauche/vm/profiler.scm : fix

2005-02-16  Shiro Kawai  <shiro@acm.org>

	* src/vminsn.scm, src/vm.c : changed LAMBDA insn to CLOSURE insn,
	  dropping arg # parameters (now they're in compiled code).  Also
	  integrated DEFINE-CONST into DEFINE; two are now distinguished
	  by its parameter.
	* src/gauche/vm.h : added evalSituation field to ScmVMRec to support
	  eval-when construct.
	* src/comp.scm: added eval-when construct.

2005-02-13  Shiro Kawai  <shiro@acm.org>

	* src/comp.scm (and-let* form cenv): support and-let* natively.
	  (quasiquote): improved generated code.
	* src/gauche-init.scm, src/load.c : provide srfi-2 by default, for
	  and-let* is now supported natively.
	* lib/srfi-2.scm: removed.

2005-02-12  Shiro Kawai  <shiro@acm.org>

	* src/vm.c: fix positions of SCM_PROF_COUNT_CALL to properly record
	  method invocation.  assign names to the code created internally
	  at runtime (e.g. apply, eval) so that they can be shown in the
	  profiler output.
	* src/builtin-syms.scm: added some symbols for the profiling purpose
	  described above.
	* src/comp.scm: series of performance tuning.

2005-02-09  Shiro Kawai  <shiro@acm.org>

	* src/prof.c, src/gauche/prof.h: moved experimental profiler code
	  from core.c to here, and make the profiler buffer VM-local instead
	  of global.

2005-02-05  Shiro Kawai  <shiro@acm.org>

	* src/comp.scm: changed intermediate structure to use nested vectors.
	  changed define-builtin-inliner to assign inliner function directly
	  to the builtin subrs.

2005-02-04  Shiro Kawai  <shiro@acm.org>

	* src/core.c: added experimental sampling profiler code.  it uses
	  ITIMER_PROF, so it won't be available for all platforms.
	* lib/gauche/vm/profiler.scm: profiler utilities.

2005-02-02  Shiro Kawai  <shiro@acm.org>

	* configure.ac, src/gauche/config.h.in (DOUBLE_ARMENDIAN):
	  added check to support ARM processor.
	* src/number.c (union ieee_double), ext/binary/binary.c (SWAPD):
	  support ARM's mixed endian
	* ext/uvector/uvectorP.h (s8unbox): ensure return type is signed
	  char.

2005-01-25  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/condutil.scm (extract-condition): fixed a bug that
	  error was used where errorf should have been.  Patch from
	  Ueyama Rui.

2005-01-24  Shiro Kawai  <shiro@acm.org>

	* extlib.stub (append!): fixed to allow non-list in the last arg,
	  for consistency of srfi-1.

2005-01-16  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/vm/insn.scm.src, src/gencomp: calculate generated code
	  vector using the target compiler's instruction set, instead of
	  the host compiler's.
	* src/vminsn.scm: rearranged.

2005-01-15  Shiro Kawai  <shiro@acm.org>

	* src/comp.scm: implemented builtin procedure inlining.

2005-01-14  Shiro Kawai  <shiro@acm.org>

	* src/compile.c, src/vm.c, src/comp.scm, etc: snapshot of replacing
	  the legacy compiler for the new compiler.  Legacy code is #ifdef-ed
	  out.  Procedure inlining is not supported, but other functionalities
	  work.

2005-01-09  Shiro Kawai  <shiro@acm.org>

	* src/vm.c, src/gauche/vm.h (ScmSyntacticClosure): Added syntactic
	  closure object.  Although most functionalities that deal with
	  syntactic closures will be written in Scheme, we need a disjoint
	  type for this, and we need it without bootstrapping.

2005-01-08  Shiro Kawai  <shiro@acm.org>

	* src/list.c (Scm_Length): changed API to return distinct values for
	  dotted and circulare lists (SCM_LIST_DOTTED and SCM_LIST_CIRCULAR,
	  respectively).  This shouldn't affect existing code, since they
	  all checks if the return value is negative or not.
	* src/gauche.h : added the enums for above change, and also added
	  three macros, SCM_PROPER_LIST_P, SCM_DOTTED_LIST_P and
	  SCM_CIRCULAR_LIST_P.
	* src/extlib.stub : included srfi-1's proper-list?, dotted-list?
	  and circular-list?.

2005-01-07  Shiro Kawai  <shiro@acm.org>

	* ext/net/net.scm (make-server-socket, make-server-sockets): added
	  :sock-init keyword arguments (Patch from Tatsuya BIZENN).

2005-01-05  Shiro Kawai  <shiro@acm.org>

	* ext/mt-random/mt-random.scm (mt-random-integer): fixed a bug in
	  rarely-executed branch of the code.

2004-12-30  Shiro Kawai  <shiro@acm.org>

	* src/intlib.stub : moved some APIs from extlib which are only intended
	  to be used by Gauche internal routines.

2004-12-27  Shiro Kawai  <shiro@acm.org>

	* src/class.c (Scm_ClassOf, Scm_EOFObjectClass, Scm_UndefinedObjectClass):
	  added classes for singleton immediate object #<eof> and #<undef>.
	* src/vm.c : added some API needed to run pre-compiled code.
	* src/gencomp : added initial version of a script to pre-compile
	  the compiler.
	* src/comp.scm : added a skeleton of the compiler.

2004-12-26  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/condutil.scm, lib/gauche/object.scm (object-apply):
	  moved object-apply of <condition-type> from condutil.scm to
	  object.scm, so that condition-type-as-predicate works without
	  loading condutil.scm.

	* src/compile.c, src/class.c (<identifier>): expose identifier
	  internals to Scheme.  This is temporary solution until the compiler
	  is revised.

	* lib/gauche/cgen.scm : handles static literals more wisely.
	* src/autoloads.scm, src/builtin-syms.scm : changed accordingly.

	* src/gauche.h (SCM_STRING_CONST_INITIALIZER): separated constant
	  string initializer to an individual macro.

2004-12-24  Shiro Kawai  <shiro@acm.org>

	* lib/file/util.scm: added decompose-path, path-extension,
	  path-sans-extension and path-swap-extension.
	* Makefile.in, src/Makefile.in, lib/Makefile.in (pre-package):
	  added a target 'pre-package', which should be run before creating
	  distribution tarball.  It generates some files that requires
	  pre-installed Gauche.
	* lib/gauche/vm/insn.scm.src : added.  It generates insn.scm from
	  src/vminsn.scm.
	* src/compile.c (Scm_Compile): changed API to make Scm_Compile as
	  the default gate to the compiler module.
	* src/vm.c, src/gauche.h: changed accordingly.

2004-12-23  Shiro Kawai  <shiro@acm.org>

	* src/vminsn.scm, src/geninsn: added.  manage VM insn definition
	  in Scheme format instead of *.h and cpp trick.
	* src/gauche/vminsn.h: removed.  Now it is generated from vminsn.scm.
	* src/gauche/vm.h: no longer include vminsn.h.  The C files that needs
	  vminsn symbols must include gauche/vminsn.h explicitly.
	* src/vm.c, src/compile.c, src/macro.c, src/stdlib.stub,
	  src/extlib.stub, src/moplib.stub: changed accordingly.
	* src/Makefile.in: added rules to generate vminsn.[ch].

2004-12-22  Shiro Kawai  <shiro@acm.org>

	* src/vm.c, src/gauche/vm.h,
	  src/compile.c, src/proc.c, src/builtin-syms.scm :
	  Changed VM to use code-vector instead of directed graph.
	  The compiled code is now converted to ScmCompiledCode before
	  executed.  This is the first stage of the new VM/compiler
	  architecture.
	* src/core.c, src/main.c :
	  Added -fcollect-stats option experimentally, to collect and
	  display VM stats info.
	* lib/gauche/vm/disasm.scm : removed.  the functionality is
	  supported by core.
	* lib/gauche/procedure.scm : the 'disasm' function (wrapper
	  of more primitive subrs) are defined here.

2004-12-21  Shiro Kawai  <shiro@acm.org>

	* src/gauche/arith_i386.h (UMULOV, SMULOV): use "g" constraint to
	  avoid gcc from failing to allocate registers in some cases.
	* acinclude.m4, aclocal.m4 (AC_GAUCHE_OPTFLAGS): check $target instead
	  of $host.  Use 'case' to check if the compiler is gcc or not.

2004-12-18  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/sortutil.scm (stable-sort!): fixed a bug when sorting
	  vectors.

2004-12-17  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h, src/gauche/class.h, src/gauche/memory.h,
	  src/list.c, src/compile.c, src/macro.c, src/read.c, src/vm.c,
	  src/error.c, src/builtin-syms.scm:  Changed tagging scheme
	  to make ScmPair 2 words.

2004-12-15  Shiro Kawai  <shiro@acm.org>

	* ext/digest/md5.stub, ext/digest/md5.scm,
	  ext/digest/sha1.stub, ext/digest/sha1.scm,
	  ext/digest/Makeifle.in: modified to use u8vector as a buffer
	  instead of string.  Based on the patch from Michal Maruška.

2004-12-14  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/collection.scm (fold2, fold3, map-accum,
	  group-collection): added these procedures.
	* lib/gauche/sequence.scm (group-sequence): added a procedure.
	* test/colseq.scm, doc/modgauche.texi: updated accordingly.

2004-12-11  Shiro Kawai  <shiro@acm.org>

	* lib/util/queue.scm (queue-push-unique!, enqueue-unique!): added
	  these procedures.
	* test/util.scm, doc/modutil.texi: updated accordingly.

2004-12-03  Shiro Kawai  <shiro@acm.org>

	* src/Makefile.in: changed LDFLAGS to have -L. before the directories
	  given in --with-local=DIR, to avoid conflicts against the existing
	  libgauche in DIRs.

2004-12-02  Shiro Kawai  <shiro@acm.org>

	* release 0.8.3

	* lib/slib.scm.in (software-type): check architecture so that
	  it returns MS-DOS on Windows/MinGW version.
	* src/port.c (look_for_encoding): ignore '-(unix|dos|mac)' suffix
	  of encoding name in the coding magic comment, for Emacs
	  compatibility.
	* src/number.c (Scm_PrintDouble): added API to use Burger&Dybvig
	  algorithm.
	* ext/uvector/uvgen.scm: fixed to print values of f32 and f64 vectors
	  accurately.

2004-12-01  Shiro Kawai  <shiro@acm.org>

	* src/port.c (coding_port_recognize_encoding): fixed a bug that
	  caused misbehavior of coding-aware ports with CRLF line terminators.

2004-11-29  Shiro Kawai  <shiro@acm.org>

	* release 0.8.2

	* src/error.c (porterror_cpl): added missing terminating NULL of CPA.
	  (porterror_allocate): added missing initialization of 'message slot.
	* src/gauche/vm.h (SCM_SIGPENDING): recovered, for some extensions
	  use this macro.  Should be considered deprecated.
	* lib/gauche/exclib.stub (extract-condition): added slot-bound check.

2004-11-28  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/condutil.scm (define-condition-type): extended to
	  allow #f as predicate and omitting accessors.

	* lib/www/cgi.scm: added some condition types to be raised on
	  invalid requests.

2004-11-27  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/array.scm (share-array): fix to support uniform arrays
	  (pointed out by OGURISU Osamu).

2004-11-25  Shiro Kawai  <shiro@acm.org>

	* src/core.c (Scm_Init): setting of GC_finalize_on_demand was
	  reversed.  fixed.

	* lib/rfc/mime.scm (make-mime-port): fixed a bug that incorrectly
	  treated CR-CR-LF sequence just before a boundary.

	* lib/www/cgi.scm (cgi-parse-parameters): use limited-length-port
	  to read POST message body if content-length is specified.  It is
	  necessary when the progam is communicating with persistent
	  connection, which doesn't delimit the message body by EOF.

2004-11-24  Shiro Kawai  <shiro@acm.org>

	* ext/vport/vport.scm (open-input-limited-length-port): added
	  experimentally.

	* lib/www/cgi.scm (cgi-parse-parameters): better API to support
	  POST with multipart/form-data.

2004-11-23  Shiro Kawai  <shiro@acm.org>

	* ext/charconv/charconv.scm (ces-convert): close temporary ports
	  properly to avoid unnecessary finalizer invocation.

2004-11-22  Shiro Kawai  <shiro@acm.org>

	* src/write.c (write_ss): close temporary port to avoid unnecessary
	  finalizer call.
	* src/vm.c (run_loop): fixed a bug that didn't save VM regs before
	  calling Scm_SigCheck, which sometimes caused SEGV after getting
	  signals.  Also changed to check queued finalizer as well.
	  (process_queued_requests): handles queued signal handlers and
	  finalizers properly.
	* src/core.c: implemented finalizer queue.
	* src/signal.c: slightly changed data structure.
	* src/gauche/vm.h: ditto

	* ext/uvector/array.scm (initialize): fixed write-object method
	  to avoid stale shared-structure output.

2004-11-21  Shiro Kawai  <shiro@acm.org>

	* src/core.c (Scm_LibraryDirectory etc): made these API instead of
	  configure-time macro reference, to hide difference in MinGW.
	* src/load.c (Scm__InitLoad): ditto

	* DIST, src/Makefile.in: tweaks to create MinGW binary distribution.

2004-11-20  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/mime.scm (make-mime-port): fixed a bug that didn't
	  consume '\n' following '\r' after the boundary.

	* lib/www/cgi.scm (get-mime-parts): supports file+name handler
	  action.

2004-11-19  Shiro Kawai  <shiro@acm.org>

	* ext/vport/vport.c (Scm_Init_vport): added missing SCM_INIT_EXTENSION

2004-11-13  Shiro Kawai  <shiro@acm.org>

	* ext/binary/test.scm: exclude denormalized 32-bit floating point
	  test on Alpha, since they're not precisely supported on that
	  architecture.
	* src/number.c, ext/uvector/*: various fixed on LP64 architecture.

2004-11-12  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/mime.scm (mime-parse-message etc.):
	  INCOMPATIBLE CHANGE: Re-implemented MIME body parser to use
	  procedural port to recognize MIME boundary.  The previous approach
	  turned not to work if the body contains raw binary data.
	  This change make the 'READER' argument for handlers unnecessary,
	  and the API has been changed accordingly.
	* lib/www/cgi.scm : Adjusted to the above API change.

2004-11-11  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/procedure.scm (let-keywords*): fixed a bug that corrupts
	  expansion when used in r5rs macro.

	* src/builtin-syms.scm: added SCM_SYM_BIG_ENDIAN and
	  SCM_SYM_LITTLE_ENDIAN.
	* ext/binary/binarylib.stub: changed accordingly.

	* ext/uvector: EXPERIMENTAL: added byte-swapping APIs
	  (TAGvector-byte-swap, TAGvector-byte-swap!, uvector-byte-swap,
	  uvector-byte-swap!), and added optional `endian' argument to
	  read-block! and write-block.  Not completely sure if they have to
	  be here, so let's say they're experimental.

	* ext/vport: added open-input-uvector and open-output-uvector,
	  uvector backed-up ports.

2004-11-10  Shiro Kawai  <shiro@acm.org>

	* src/class.c (Scm_DeleteMethod): fixed a bug that caused infinite
	  loop during class redefinition.

	* lib/text/csv.scm (make-csv-reader|writer): made quote-char
	  customizable (Patch from Alex Shinn).

2004-11-09  Shiro Kawai  <shiro@acm.org>

	* lib/binary/pack.scm (read-one-packer): fixed a bug of '@' handling
	  in unpack.

2004-11-04  Shiro Kawai  <shiro@acm.org>

	* src/number.c, src/bignum.c: fixed bugs in boundary cases of
	  integer conversions.  changed API of Scm_GetInteger* to allow
	  more flexible handling of clamping behavior.  See the comment
	  in src/gauche.h (`Converting a Scheme number to a C number'
	  for the details.
	* src/gauche.h: changed accodringly.
	* src/extlib.stub: changed acoodringly.
	* src/test-arith.c : added test for integer conversion APIs.
	* src/gauche/scmconst.h, src/number.c (SCM_2_64_MINUS_1): new constant.

	* ext/uvector/*: replaced the dreaded shell scripts for friendy
	  Scheme scripts (uvgen.scm) to generate C code.  The API is
	  cleaned up a lot, particularly the humble task of conversions
	  and clamping between Scheme integers and 32/64-bit C integers
	  are integrated to the Gauche core.
	- also added string->[su]8vector!
	- also changed the API of TAGvector-copy! to be parallel with
	  srfi-13(string-copy!) and srfi-43(vector-copy!).  The old API
	  is still supported, dispatched by the argument type, but will
	  be deprecated.

	* ext/mt-random/*: changed according to the modification of uvector.

2004-11-03  Shiro Kawai  <shiro@acm.org>

	* src/portapi.c (Scm_Putb, Scm_Putc): size argument of the
	  bufport_flush call was not good, causing excess flusing of
	  buffer to make buffered output inefficient.
	* ext/vport/* : supported bufferd-input|output-port.

2004-11-01  Shiro Kawai  <shiro@acm.org>

	* lib/file/util.scm (directory-list): fix not to include "." and
	  ".." even if :filter-add-path? is #t.

	* lib/srfi-19.scm (date->julian-day): fix a bug to honor tz-offset.

	* configure.ac, ext/Makefile.in : added ext/vport
	* src/gauche.h : removed 'Getline' entry from ScmPortVTableRec; it
	  seems only to add extra complexity.  Also changed the return value
	  of Scm_ClosePort to void, since the return value hasn't used at all.
	* src/port.c : fixed accordingly.
	* ext/vport/* : the first phase of supporting virtual ports.

2004-10-31  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub (byte-ready?): added.

2004-10-21  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h, src/port.c : fixed return type of vtable entries.

2004-10-17  Shiro Kawai  <shiro@acm.org>

	* src/error.c, src/gauche.h, src/gauche/exception.h: added
	  <io-unit-error>.

	* lib/gauche/parseopt.scm (let-args): fixed a bug of 'else' clause
	  formal parameter handling.

2004-10-12  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h: avoid using 'template' as an argument name.

2004-10-10  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/condutil.scm : added.  defines miscellaneous srfi-35
	  compatible APIs.  autoloaded.
	* lib/Makefile.in : added condutil.scm
	* src/error.c : changed the name of 'conditions' slot of
	  <compound-condition> to '%conditions', to avoid name conflict
	  with its members.

2004-10-09  Shiro Kawai  <shiro@acm.org>


	* src/port.c, src/portapi.c : revised to use Scm_PortError instead
	  of Scm_Error when appropriate.
	* src/read.c : replaced some Scm_Error by Scm_ReadError.
	* src/class.c (Scm_InitStaticClassWithMeta): exported for tricky
	  use, if the builtin class wants to control both metaclasses and
	  superclasses.
	  (Scm_ObjectAllocate): expose object_allocate so that
	  other C-defined placeholding "base" class (i.e. classes only
	  introduced for inheritance, but does not introduce C-specific
	  slots) can be used as a a superclass of other C-defined classes.
	* src/error.c (Scm_PortError): added utility function.
	  (Scm_PrintDefaultErrorHeading): use condition's class name to
	  display the error message heading.
	  (Scm_ConditionTypeName): for convenicne.
	* src/exclib.stub : some srfi-35 procedures.
	* src/vm.c (Scm_VMThrowException): changed the non-continuable
	  exception check according to the new condition hierarchy.
	* test/exception.scm : modified according to the recent change.

2004-10-08  Shiro Kawai  <shiro@acm.org>

	* src/class.c: revised class initialization API.  Scm_InitBuiltinClass
	  is obsoleted; use Scm_InitStaticClass instead.
	  Also added Scm_InitStaticClassWithSupers for the builtin class
	  with multiple inheritance (used for condition hierarchy).
	* src/error.c, src/gauche/exception.h : revised to support condition
	  hierarchy.  Renamed ScmException -> ScmCondition, for the consistency
	  with srfi-35.
	* src/gauche-init.scm : make <exception> a synonym of <condition>,
	  for backward compatibility.
	* various files: modified according to the change of class
	  initialization API.

2004-10-05  Shiro Kawai  <shiro@acm.org>

	* ext/charconv/guess.c: fixed initializer type mismatch.

	* lib/rfc/822.scm (rfc822-parse-date) : fix off-by-one error of
	  return value of month.
	* test/rfc.scm : ditto

	* src/gauche.h, src/portapi.c : code clean up

2004-10-03  Shiro Kawai  <shiro@acm.org>

	* src/port.c: removed dead code.
	* test/dynwind.scm: added a few tests (Patch from Ueyama Rui)

2004-09-20  Shiro Kawai  <shiro@acm.org>

	* src/portapi.c, src/gauche.h : changed ScmPortVTable.Ready to take
	  extra arg to distinguish between byte-ready? and char-ready?.

2004-09-19  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h : added missing prototypes of several number-related
	  APIs. (Thanks to OGURISU Osamu for pointing this out).
	* src/number.c (roundeven): fixed a bug.
	  (Scm_PromoteToComplex): fixed a bug (Patch from OGURISU Osamu).

2004-09-17  Shiro Kawai  <shiro@acm.org>

	* src/load.c (Scm_VMLoad): use coding-aware port to load source file
	  by default.  Changed the API to take bitmask flags.
	* src/port.c : changed some API to allow port subclasses.
	* src/gauche.h : changed accordingly.

	* src/gauche.h (ScmPort): supports line counting feature in generic
	  port level, instead of only in buffered ports.
	* src/port.c, src/portapi.c, src/read.c : changed accordingly.

2004-09-16  Shiro Kawai  <shiro@acm.org>

	* src/port.c (Scm_MakeCodingAwarePort): preparation of enabling
	  'coding:' magic comment in the source file.
	* src/gauche.h: ditto
	* src/extlib.stub (open-coding-aware-port): ditto
	* ext/charconv/charconv.c: ditto
	* tests/io.scm, ext/charconv/test.scm: ditto.
	* src/portapi.c (Scm_ByteReady): added
	* src/gauche/char_sjis.h: added some more encoding aliases of sjis.
	* src/char.c (Scm_SupportedCharacterEncodingP): compare the encoding
	  names case-insensitively.

2004-09-14  Shiro Kawai  <shiro@acm.org>

	* ext/charconv/jconv.c (sjis2eucj): fix for sjis 2nd plane convesion
	  (patch from Kimura Fuyuki).

	* lib/www/cgi.scm (cgi-header): put :status first if specified.

2004-09-13  Shiro Kawai  <shiro@acm.org>

	* gc/* : updated to gc6.3
	* src/Makefile.in : ditto

	* ext/uvector/array.scm (gauche.array): added exported symbols.

2004-09-12  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/regexp.scm (regexp-replace-all): detect the case when
	  regexp matched to null string, and raises an error to avoid infinite
	  loop.
	* lib/dbm/fsdbm.scm : allow binary data to be stored.

2004-09-11  Shiro Kawai  <shiro@acm.org>

	* ext/termios/* : Added support of termios.c_cc (Based on the patch
	  from Kogule, Ryo).

2004-09-01  Shiro Kawai  <shiro@acm.org>

	* ext/fcntl/fcntl.c (Scm_SysFcntl): Supports F_GETOWN and F_SETOWN
	  if the system provides them.
	* ext/fcntl/fcntl.scm, ext/fcntl/fcntlib.stub: ditto

2004-08-28  Kimura Fuyuki  <fuyuki@hadaly.org>

	* src/bignum.c (Scm_BignumToUI64): Avoid using `a=a=1' style
	assignment. Newer gcc versions don't like it and say that
	operation "may be undefined".

	* ext/termios/gauche/termios.h, ext/uvector/uvlib.stub.sh,
	src/bignum.c: Include more header files to suppress compiler
	warnings such like "implicit declaration".

2004-08-23  Shiro Kawai  <shiro@acm.org>

	* lib/util/match.scm (validate-pattern): fixed a bug in quasipattern.

2004-08-19  Shiro Kawai  <shiro@acm.org>

	* src/compile.c, src/genstub, src/stlib.stub, src/gauche.h,
	  src/gauche/vm.h: got rid of Scm_CompileInliner.

2004-08-18  Shiro Kawai  <shiro@acm.org>

	* configure.ac (SONAME_FLAG), src/Makefile.in : attach
	  SONAME to libgauche.so when the linker takes --soname flag.

	* src/compile.c, src/stdlib.stub, src/gauche/vm.h:
	  making an inliner into a generic compiler macro, stage 3.
	  Now the inliner is (Sexpr, Env, Context) -> (Sexpr), which is
	  the same as the macro transformer.

2004-08-14  Shiro Kawai  <shiro@acm.org>

	* src/compile.c, src/macro.c, src/genstub, src/gauche.h:
	  making an inliner into a generic compiler macro, stage 2.

2004-08-12  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h (ScmSubr, ScmInliner),
	  src/compile.c (compile_int),
	  src/genstub, src/stdlib.stub: making an inliner into a generic
	  compiler macro, stage 1.

2004-08-04  Shiro Kawai  <shiro@acm.org>

	* lib/Makefile.in (slibcat-in-place): fix.  patch from Kogulé, Ryo.
	* ltmain.sh (EGREP): fix.  patch from Kogulé, Ryo.

2004-08-02  Shiro Kawai  <shiro@acm.org>

	* release 0.8.1

	* ext/net/net.h : moved to ext/net/gauche/net.h, for consistency.
	* ext/net/*.c : adapted to the above change
	* ext/Makefile.ext.in : fixed header installation.

2004-08-01  Shiro Kawai  <shiro@acm.org>

	* configure.ac : disable using -rpath if --with-rpath=no is given.
	  disable using makeverslink on cygwin.

	* Makefile.in (install-pkg): make install under lib/ and ext/ before
	  src/.	 Since "make install" under lib and ext requires gosh, we want
	  to make sure we use just-built libgauche.so; thus we want to run them
	  before relinking with new -rpath.

	* ext/sxml/ssax.scm.in (sxml.ssax): extend srfi-11 and sxml.adaptor,
	  since the macro generated by ssax:make-parser will include references
	  to the symbols defined in them.  This won't be a problem once
	  ssax is rewritten by R5RS macros, so this should be regarded as
	  a temporary fix.

	* src/link-hpux : fixed dynamic link search path problem.
	* src/makeverslink : avoid creating links if they are already created.
	* ext/Makefile.ext.in, src/charconv/Makefile.in, src/sxml/Makefile.in:
	  avoid using GNU make specific feature.

2004-07-31  Shiro Kawai  <shiro@acm.org>

	* src/compile.c (Scm_UnwrapSyntax): expose this as an API.
	* src/extlib.c (unwrap-syntax): made it a subr.
	* lib/gauche/common-macros.scm (unwrap-syntax): made it a subr.
	* src/error.c (Scm_ShowStackTrace): a bit of cleanup.
	* src/gauche/char_euc_jp.h (SCM_CHAR_GET): tighten the rules to
	  accept euc-jp sequence.

2004-07-29  Shiro Kawai  <shiro@acm.org>

	* lib/www/cgi.scm (cgi-add-temporary-file, cgi-main): added capability
	  to clean up temporary files upon exit of cgi-main.

2004-07-28  Shiro Kawai  <shiro@acm.org>

	* lib/util/match.scm (gen) : fixed a bug that reused a temporary
	  variable for intermediate match, which confused the match optimizer.
	  (Pointed out by HIRAUCHI Hideyuki).

2004-07-27  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-0.scm: typo fix
	* src/load.c: typo fix

	* src/system.c (Scm_GlobDirectory): fixed potential memory leak on
	  error of glob() call.

2004-07-26  Shiro Kawai  <shiro@acm.org>

	* lib/www/cgi.scm (cgi-parse-parameters): added support for
	  multipart/form-data posting (e.g. file uploading).
	* lib/file/util.scm (temporary-directory): added.
	* src/module.c (Scm_FindBinding): fixed meaningless if-condition.
	* lib/gauche/package/fetch.scm (gauche-package-ensure): typo fix.

2004-07-25  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-0.scm (cond-expand) : changed to a legacy macro, in order
	  to use different feature ids depending compiler options.
	* src/load.c (Scm__InitLoad) : initialize *cond-features* list
	  with compiler-options specific values.
	* src/buildin-syms.scm : added some symbols for pre-defined feature
	  ids for *cond-features*.
	* test/srfi.scm : added more srfi-0 tests.

2004-07-24  Shiro Kawai  <shiro@acm.org>

	* lib/file/util.scm (make-directory*) : remove trailing '/' if any,
	  for mkdir of some platforms complains on it.

2004-07-20  Shiro Kawai  <shiro@acm.org>

	* src/makeverslink: fixed to follow the convention of symlinks, i.e.
	  it renames the real sofile to libgauche.so.$(VERSION), and make
	  libgauche.so a symlink to it, etc.

	* src/syslib.stub, src/system.c (Scm_SysMkstemp): provides alternative
	  of mkstemp() for platforms that don't have one (e.g. Win32).
	* src/load.c : for MinGW, changed the default load path to look for
	  subdirectories.
	* DIST: preparing MinGW packaging (not quite working yet).

2004-07-20  Kimura Fuyuki  <fuyuki@hadaly.org>

	* ext/charconv/Makefile.in: Add three C files to the GENERATED
	  variable since they should be cleaned out by `make distclean'.

2004-07-18  Shiro Kawai  <shiro@acm.org>

	* src/write.c (write_ss_rec): fixed a bug to avoid numbers from
	  begin written out by srfi-38 notation.

2004-07-17  Kimura Fuyuki  <fuyuki@hadaly.org>

	* ext/dbm/test.scm: Some ndbm implementations create a single file
	  with the suffix .db and it needs to be cleaned up even though
	  that behavior is considered an XPG violation.

2004-07-16  Shiro Kawai  <shiro@acm.org>

	* src/port.c (bufport_fill): somehow it called filler() with
	  minimum buffer size when the buffering mode is PORT_BUFFER_LINE.
	  It should be able to use maximum buffer size---only PORT_BUFFER_NONE
	  need to fetch minimum chunk at a time.

	* src/system.c (pipe): implemented via _pipe().
	  (fork, kill, etc): sets windows error ERROR_CALL_NOT_IMPLEMENTED
	  before returning.

	* src/error.c (Scm_SysError): on MinGW, retrieve error message using
	  FormatMessage instead of strerr; the former covers wider range of
	  Windows errors.
	* ext/net/net.c, ext/net/net.h: adapted to winsock on MinGW.
	  At least TCP connection seems working.

2004-07-15  Shiro Kawai  <shiro@acm.org>

	* src/load.c (Scm__InitLoad): on MinGW, use the program path to resolve
	  library/dll directories, instead of embedding them at make time.

	* src/parameter.c (Scm_ParameterTableInit etc.): fixed a problem that
	  a thread may inadvertently refer to wrong parameter which the thread
	  does not have.
	* lib/gauche/parameter.scm: ditto
	* src/gauche/vm.h: ditto
	* src/core.c: ditto
	* ext/threads/test.scm: ditto

2004-07-14  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-19.scm (tm:time-difference): fixed bad args for error
	  procedure (pointed out by Michal Maruška)

	* src/gauche/mingw-compat.h: added for MinGW port.
	* doc/mingw-memo.txt: added for MinGW port.
	* DIST, configure.ac, src/system.c, src/syslib.stub, src/load.c,
	  src/dl_win.c, src/signal.c, src/main.c, ext/auxsys/auxsys.c,
	  ext/auxsys/auxsyslib.stub, ext/fcntl/fcntl.c, ext/net/net.c
	  ext/net/net.h, ext/termios/termiolib.stub, ext/termios/temios.c,
	  gc/gc.h:
	  added MinGW support (first stage; very rudimentatl).

2004-07-13  Shiro Kawai  <shiro@acm.org>

	* src/compile.c (compile_body): fixed a bug that passes
	  (define (a) 1 (define b 2) b)

2004-07-12  Shiro Kawai  <shiro@acm.org>

	* src/compile.c (compile_body): supports internal defines generated
	  by macro expansion.
	* macro.c, compile.c, gauche.h, class.c : introduced ScmMacro structure
	  apart from ScmSyntax to represent macros.  necessary to separate
	  the transform pass and the compile pass, in order to support
	  internal defines generated as a result of macro expansion.

2004-07-10  Shiro Kawai  <shiro@acm.org>

	* examples/spigot/configure.in: removed AC_PROG_INSTALL and commented
	  out AC_CANONICAL_SYSTEM, since they are not really necessary.

2004-07-09  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/uri.scm (uri-parse): added.
	  (uri-decompose-hierarchical): accept #f as an argument for the
	  convenience.
	  (uri-decompose-authority): ditto.

2004-07-05  Shiro Kawai  <shiro@acm.org>

	* src/load.c (Scm_MakeAutoload): fixed a bug of autoload that
	  fails assertion.  (Reported from SEINO Katsuhiro).
	* src/autoloads.scm : ditto
	* src/gauche.h (Scm_MakeAutoload): ditto
	* src/extlib.stub (%make-autoload): commented out since it isn't
	  (shouldn't) used.

2004-06-27  Shiro Kawai  <shiro@acm.org>

	* src/macro.c (macro_autoload, Scm_MacroExpand): resolve autoloaded
	  macro in macroexpand as well.

	* lib/gauche/interactive.scm (%apropos): search ancestors of imported
	  modules as well.

	* src/gauche-cesconv.in (main): fixed --help.

	* src/number.c (Scm_Divide): fixed a bug when complex numbers
	  appear in more than 2 arg cases.

2004-06-22  Shiro Kawai  <shiro@acm.org>

	* examples/spigot/Makefile.in (*_INSTALL_DIR): there shouldn't
	  be a '/' between $(DESTDIR) and the actual pathname.

2004-06-17  Shiro Kawai  <shiro@acm.org>

	* src/compile.c (unwrap_identifier): fixed a bug when expanded
	  syntax has a quoted vector (patch by teranishi).

	* src/number.c (Scm_Divide): fixed a bug when '/' takes more than
	  two args and involves bignum. (patch by anonymous).

	* src/bignum.c (bignum_gdiv): fixed the problem of bignum division,
	  when the estimated quotient becomes greater than one digit value
	  (e.g. #x10001).  Pointed out by 'hipster'.

2004-06-04  Shiro Kawai  <shiro@acm.org>

	* src/compile.c (compile_cond_int): fixed a bug that 'case' didn't
	  work when it appeared in the macro-expanded form (Pointed out by
	  Grzegorz Chrupała).

2004-05-31  Shiro Kawai  <shiro@acm.org>

	* src/regexp.c: enable regexps to be compared by equal?.

	* ext/net/net.ac: avoid checking getprotobyname_r etc on NetBSD,
	  since these are not supposed to be used by user programs on the
	  current NetBSD.  (Patch from MINOURA Makoto)
	* ext/net/netdb.c (Scm_GetHostByAddr): fix for referring a wrong
	  preprocessor symbol (Patch from MINOURA Makoto)
	* doc/extract (filter pattern-in pattern-out): fix for breaking
	  dirs entry (Patch from MINOURA Makoto).

	* ext/Makefile.ext.in (install-std): use gauche-install to install
	  extension files instead of @INSTALL@.  It can be
	  $(top_srcdir)/install-sh as a fallback, but $(top_srcdir) isn't
	  what we desired.  Besides that, using gauche-install makes rules
	  simpler.

	* ext/net/net.scm (make-sockaddrs): check the return value of
	  sys-getservbyname and sys-gethostbyname for more comprehensive
	  error.

2004-05-22  Shiro Kawai  <shiro@acm.org>

	* release 0.8

	* lib/gauche/package/build.scm (gauche-package-build): clean builddir
	  before untar.
	* src/gauche-cesconv.in: fixed command-line argument handling bug.

2004-05-21  Shiro Kawai  <shiro@acm.org>

	* src/module.c (modules): make sure the global module name map is
	  placed in the data region instead of bss.

	* src/gauche.h, src/gauche/class.h : avoid using C++ reserved words
	  (pointed out by Laurent Marzullo).

	* src/extlib.stub (rxmatch-num-matches): added.

	* lib/gauche/object.scm: added 'ref' method specialized for hash-table.

	* doc/modgauche.texi (Low-level socket interface): added descrption
	  of socket-getsockname, socket-getpeername, socket-send,
	  socket-sendto, socket-recv, and socket-recvfrom.
	  (Array): added description of uniform numeric arrays.

	* src/compile.c (compile_define): added check to prevent non-toplevel
	  use of define family ('internal' defines should be resolved
	  elsewhere).

	* lib/text/html-lite.scm (frameset): added frame-related tags
	  (patch from Nekoie).

	* lib/file/util.scm (build-path): ignore empty string in the components
	  (patch from Grzegorz Chrupała).

2004-05-20  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (run_loop): fixed a problem of application of user-defined
	  <generic> subclass.
	* src/class.c (class_cpl_set): set 'applicable' bit of the class if
	  it inherits applicable base class.
	* lib/gauche/object.scm (define-generic): allow :class keyword argument
	  to specify the class of the generic fn.

	* src/keyword.c, src/extlib.stub :
	  added delete-keyword and delete-keyword!.

	* src/gauche-init.scm (add-load-path): reverted afterp optional
	  argument that was dropped inadvertently.

	* src/portapi.c (port-seek): invalidate ungotten character if
	  port position is moved.  Pointed out by Alex Shinn.

	* src/gauche.h (ScmReadError): added <read-error>
	* src/error.c: ditto
	* src/read.c: ditto

2004-05-19  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/test.scm (write-object): fixed output of display.

	* lib/gauche/common-macro.scm (guard): added srfi-34 guard.
	* src/autoloads.scm (guard): added guard as a autoloaded macro.
	* test/exception.scm: added.

	* src/exclib.stub:
	* src/error.scm: moved the definitions of exception classes from
	  exclib.stub to error.scm.  Needed to allow user-defined error
	  types.

2004-05-16  Shiro Kawai  <shiro@acm.org>

	* src/gauche-package.in: added --reconfigure option for install
	  and build.
	* lib/gauche/package/build.scm (gauche-package-build): fetch older
	  verion's configure options if reconfigure is specified.
	* lib/gauche/package.scm (call-with-iterator): avoid getting duplicate
	  gpd entries; only picks the most recent ones.

2004-05-15  Shiro Kawai  <shiro@acm.org>

	* src/gauche-package.in: added --install-as option for install.
	  use :all-versions to search gpd files for reconfigure and list.

	* lib/gauche/package.scm (gauche-package-description-paths): added
	  :all-versions keyword argument to search library directories
	  of older Gauche versions.

	* lib/gauche/package/build.scm: allow sudo option to specify the
	  username.

2004-05-14  Shiro Kawai  <shiro@acm.org>

	* lib/file/util.scm (file->string, file->string-list, file->ilst,
	  file->sexp-list): added convenience procedures.

	* lib/gauche/ioutil.scm, src/gauche-init.scm: moved contents of
	  ioutil to gauche-init.scm, and removed ioutil.scm.
	* src/autoloads.scm: removed reference to ioutil.  added autoload
	  of values-ref.

2004-05-13  Shiro Kawai  <shiro@acm.org>

	* src/stdlib.stub : moved open-input-file and open-output-file to
	  the autoloaded file lib/gauche/with.scm
	* lib/gauche/with.scm (open-input-file, open-output-file): defined
	  them here, and calls either internal %open-*-file or charconv's
	  %open-*-file/conv depending on :encoding keyword argument.
	* src/extlib.stub (%open-input-file, %open-output-file): implements
	  core part of open-*-file here.
	* ext/charconv/charconv.scm : removed open-input-file etc.  Instead,
	  defines %open-*-file/conv, which is called from the system's
	  open-*-file when :encoding is given.   Handles :if-does-not-exist #f
	  case, according to HIRAUCHI Hideyuki's patch.
	* src/autoloads.scm: added autoloads for open-*-file and
	  %open-*-file/conv.

	* lib/util/match.scm (get-setter, get-getter): cleaned up by using
	  srfi-17 and srfi-26 mechanism.

2004-05-12  Shiro Kawai  <shiro@acm.org>

	* lib/www/cgi.scm: export cgi-get-metavariables (alias of get-meta).

	* lib/util/match.scm: changed object pattern syntax.

2004-05-11  Shiro Kawai  <shiro@acm.org>

	* lib/util/match.scm: added Andrew Wright's match macro, tailored
	  for Gauche.
	* lib/Makefile.in: ditto
	* test/match.scm: test for util.match
	* test/TESTS: ditto

	* src/test.scm : added *test-report-error* variable to control
	  showing stack trace of captured errors.

2004-05-07  Shiro Kawai  <shiro@acm.org>

	* src/Makefile.in : added dependency of symbol.o on builtin-syms.c

2004-05-06  Shiro Kawai  <shiro@acm.org>

	* src/gauche-package.in : cleaned up the source a bit.
	* src/Makefile.in : echo script generation.

2004-05-05  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/sortutil.scm (stable-sort, stable-sort!): added stable
	  sort API.
	* src/autoloads.scm : added stable sort API.

2004-05-04  Kimura Fuyuki  <fuyuki@hadaly.org>

	* doc/gosh.1.in: added the ENVIRONMENT section.

	* src/load.c (break_env_paths): Don't trust environment variables
	  only if setugid'd. This change allows the superuser to set his
	  own GAUCHE_LOAD_PATH or GAUCHE_DYNLOAD_PATH.

2004-04-27  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/process.scm (gauche.process): export process-command.

2004-04-24  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/package/build.scm, src/gauche-package: added --sudo
	  option for 'install' command.

	* src/system.c (Scm_SysExec): display program name as well when
	  failed (Patch from Kouhei Sutou).

2004-04-23  Shiro Kawai  <shiro@acm.org>

	* src/module.c (Scm_FindBinding): avoid using cons and memq in
	  temporary data.  It speeds up loading quite a bit.
	  (other fns): changed to use global lock instead of per-module
	  lock for module operations.  It is faster.
	* src/gauche.h (ScmModule) : dropped mutex according to above change.

	* src/port.c, src/gauche/port.h: added PORT_PRELOCK macro for
	  'pre-owned' private port, i.e. the ports that are known to be
	  used privately in a thread.  It avoids call to pthread_mutex_lock.

	* src/write.c (write_ss_rec): integrated the non-shared-structure
	  writer inner loop and shared-structure write inner loop.

2004-04-22  Shiro Kawai  <shiro@acm.org>

	* src/gauche-package.in, src/gauche-install.in : added.
	* src/gauche-cesconv.in : renamed from cesconv.
	* src/Makefile.in : installs gauche-* scripts to bindir.

	* examples/spigot/configure.in : adapted to the package manager

	* lib/gauche/package/build.scm : added
	* lib/gauche/package/util.scm : added
	* lib/gauche/package/fetch.scm : added
	* acinclude.m4 (AC_GAUCHE_MAKE_GPD): a macro to create PACKAGE.gpd
	  file.

2004-04-21  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/package.scm : added (experiemntal; not completed).

2004-04-20  Kimura Fuyuki  <fuyuki@hadaly.org>

	* config.guess, config.sub, install-sh, mkinstalldirs : updated
	  autotools' scripts.

2004-04-16  Shiro Kawai  <shiro@acm.org>

	* lib/file/util.scm (file-is-symlink?): added.

2004-04-13  Kimura Fuyuki  <fuyuki@hadaly.org>

	* doc/corelib.texi, doc/mapping.texi : enhanced documentation for
	  pathname normalizers.

2004-04-11  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/parseopt.scm (get-optargs, compose-entry): added support
	  for "optional option-argument".

2004-04-10  Kimura Fuyuki  <fuyuki@hadaly.org>

	* configure.ac, ext/auxsys/*, src/autoloads.scm,
	  src/gauche/config.h.in : added sys-lchown and sys-realpath

2004-04-01  Shiro Kawai  <shiro@acm.org>

	* src/read.c (read_internal): added #;expr style commend (a la Chez).

	* lib/gauche/common-macros.scm (let/cc): added let/cc (a la PLT).
	* src/autoloads.scm: ditto.

2004-03-15  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (user_eval_inner): saves signal mask.  it appears that
	  not saving mask here would cause hang on cygwin (Reported by
	  HIRAUCHI Hideyuki).

2004-03-14  Shiro Kawai  <shiro@acm.org>

	* src/genstub (process-setter): fixed typo (Pointed by Michal Maruška)

2004-03-13  Shiro Kawai  <shiro@acm.org>

	* ext/xlink : not to make a link when there's already a desired link.

	* ext/charconv/guess.c (guess_jp): returns IAEA-compliant CES name.

	* lib/srfi-13/searcher.scm (string-contains, string-contains-ci):
	  Return value was wrong when start1 is given (patch from
	  Grzegorz Chrupała).

2004-03-04  Shiro Kawai  <shiro@acm.org>

	* src/gauche/vm.h, src/vm.c and src/regexp.c: make sigsetjmp not
	  to save signal mask.   Those sigsetjmps were introduced around
	  release 0.5 when I implemented the signal stuff.  But I cannot
	  recall why I needed to save a signal mask. (The initial version
	  of Scm_SigCheck did use SCM_UNWIND_PROTECT while it altered
	  signal mask, so it needed some handling.  It is irrelevant for
	  the current version, however).  Since sigsetjmp(_, TRUE) issues
	  a system call every time while sigsetjmp(_, FALSE) doesn't,
	  the latter has significant performance advantage.

2004-02-29  Shiro Kawai  <shiro@acm.org>

	* src/read.c (skipws): fixed a bug that didn't increment line count
	  after comments.

2004-02-26  Shiro Kawai  <shiro@acm.org>

	* release 0.7.4.2

2004-02-25  Shiro Kawai  <shiro@acm.org>

	* src/class.c (Scm_UpdateDirectMethod): updates the new class'
	  direct-method as well.   This bug caused the re-redefined classes
	  to lose original methods.

	* ext/threads/threads.c (thread_entry): displays thread's stack trace
	  when non-handled error is thrown and the thread is about to die
	  (by unhandled-exception).  It will help debugging, and won't be
	  a problem of apps that properly handles errors in threads.

2004-02-24  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-13/revapp.scm (string-concatenate-reverse): optional arg
	  handling was missing.
	* lib/www/cgi.scm (cgi-get-query): fixed a funky behavior when used
	  interactively (Patch from Grzegorz Chrupała).
	* lib/srfi-1/set.scm (lset-xor, lset-xor!): fixed bad call
	  of lset-difference (pointed out by Ueyama Rui).

2004-02-23  Shiro Kawai  <shiro@acm.org>

	* src/read.c (skipws): comment may contain unexpected character
	  encoding, so using getb to skip the comment after semicolon.
	  (We can't do that for srfi-30 nested comment, since the second
	  byte of shift_jis code can be '|', so we can't determine the end
	  of the srfi-30 comment without knowing the encoding.)

2004-02-20  Shiro Kawai  <shiro@acm.org>

	* src/hash.c (delete_entry): fixed a bug that didn't decrement
	  numEntries when an entry was deleted.

2004-02-17  Shiro Kawai  <shiro@acm.org>

	* src/portapi.c (readline_body): fixed a line count problem
	  (Patch from HIRAUCHI Hideyuki).

2004-02-08  Shiro Kawai  <shiro@acm.org>

	* ext/sxml/src/sxpath-ext.scm (sxml:equality-cmp): replaced
	  let-values* for let*-values (latter is srfi-11; the former was
	  used in the original sxml).

2004-02-04  Shiro Kawai  <shiro@acm.org>

	* src/number.c (Scm_GetInteger32Clamp, Scm_GetIntegerU32Clamp):
	  APIs for routines sensitive to integer width.
	* ext/binary/binary.c : adopted the above APIs.

	* release 0.7.4.1

	* lib/dbm/fsdbm.scm (path->hash): avoid using string-hash, since
	  the current implementation doesn't produce a portable hash value.
	  Instead, I use Scheme-implemented version.

2004-02-03  Shiro Kawai  <shiro@acm.org>

	* release 0.7.4

	* src/link-dylib : avoid linking old library to gosh.

	* ext/net/netlib.stub : check existence of definitions of MSG_*
	  symbols.

	* configure.ac, gc/configure.in (LOCAL_INC, LOCAL_LIB): avoid
	  putting newlines in the command line when more than one paths
	  are given to --with-local.
	  (CFLAGS): when the architecture is alpha, add -mieee option to
	  avoid SIGFPE on denormalized/infinity numbers.

	* src/read.c (define-reader-ctor): Experimental feature to process
	  srfi-38 syntax in srfi-10 read-time constructor.  define-reader-ctor
	  takes a optional procedure, which is responsible to fix up the
	  read reference objects.  This API isn't official yet.
	* src/write.c (Scm_Format, Scm_PrintfShared): added features
	  to handle shared structure writing.
	* src/extlib.stub (read-reference? etc.) : added read-reference object
	  related API.  These are not official yet.
	  (%format): now a part of 'format' is handled in Scheme.
	* lib/gauche/ioutil.scm : added.  definition of 'format' API etc.
	* lib/gauche/vm/debugger.scm, lib/gauche/test.scm, src/error.c:
	  adapted to the changes.

2004-02-02  Shiro Kawai  <shiro@acm.org>

	* src/system.c (Scm_SysExec): added a flag argument to enable
	  fork&exec.  It is essential to do fork&exec atomically when
	  multiple thread is running.
	* src/syslib.stub (sys-fork-and-exec): new API that does fork&exec
	  atomically.
	* lib/gauche/process.scm : use sys-fork-and-exec.

2004-02-01  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h, src/port.c, src/write.c, src/gauche-init.scm :
	  first batch of proper srfi-38 support w/ user-defined writers.

2004-01-30  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h, src/port.c, ...: rearranged port structure.
	  dropped open-*-string/private, and used keyword arg :private?
	  instead. (NB: it is still an experimental feature and shouldn't
	  be relied on).  some fixups.

	* lib/gauche/listener.scm (output-port): typo fix.

2004-01-29  Shiro Kawai  <shiro@acm.org>

	* doc/modutil.texi : added text.gettext description.

2004-01-28  Kimura Fuyuki  <fuyuki@nigredo.org>

	* ext/net/* : added socket-getsockname, socket-getpeername,
	  socket-send, socket-sendto, socket-recv, socket-recvfrom.
	  Note that these features aren't officially supported yet.

2004-01-27  Shiro Kawai  <shiro@acm.org>

	* ext/binary/* : implemented primitive binary i/o in C.
	  NOTE: the API is likely to be changed when binary i/o srfi
	  is done.  This module shouldn't be used directly unless you're
	  aware of it.  Use binary.pack whenever possible.
	* lib/binary/io.scm, test/binary.scm : moved to ext/binary.

	* src/read.c (read_escaped_symbol): recognize single escape '\'
	  within multiple escapes '|' while reading symbol name.  This
	  is CL compatible.  I haven't decided how to treat a single escape
	  outside of multipe escapes.

	* src/gauche.h, src/number.c, src/bignum.c, src/gauche/int64.h,
	  src/gauche/scmconst.h : fixup for 64bit integer support.
	* ext/uvector/*, ext/digest/sha.* : changed accordingly.
	  uvector isn't rewritten to use the new API, but just renamed
	  some typedefs to avoid conflict.   it will be revised to use
	  the new API soon.

2004-01-26  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/mime.scm (mime-decode-word): capture the error from
	  ces-convert so that illegal encoded sequence won't stop the
	  processing.

	* src/cesconv : added generally useful CES conversion script.

	* lib/text/gettext.scm : updated to the new version from Alex Shinn.

	* test/gettext.scm, test/data/Makefile, test/gettext.data.utf-8.scm,
	  test/data/locale/* : added test routines for gettext, written by
	  Alex Shinn.

2004-01-25  Shiro Kawai  <shiro@acm.org>

	* lib/math/const.scm : added missing definition of 2pi.

	* lib/www/cgi-test.scm : documented officially.

	* src/gauche.h, src/number.c (Scm_GetIntegerCheck etc), src/bignum.c
	  (Scm_BignumToSICheck etc): added boundary-checking integer
	  extraction primitives.

2004-01-23  Shiro Kawai  <shiro@acm.org>

	* doc/*.texi : reorganized a bit.  Made each index to an individual
	  appendix, so texinfo-multiple-files-update won't mangle the toplevel
	  menu.

	* lib/srfi-7.scm (program) : added srfi-7 support
	* lib/srfi-29.scm, lib/srfi-29/bundle.scm, lib/srfi-29/format.scm:
	  added srfi-29 support
	* above two changes are based on the code form Alex Shinn.
	* lib/srfi-0.scm : updated accordingly.

	* lib/srfi-13/revapp.scm (string-concatenate): made it robust for
	  long list.
	* lib/rfc/mime.scm (mime-retrieve-body): use string-port for
	  intermediate buffer.
	* above two changes are based on the patch from Tatsuya BIZENN.

2004-01-19  Shiro Kawai  <shiro@acm.org>

	* src/read.c, src/gauche.h (Scm_ReadReference) : added support of
	  SRFI-38 reference syntax.  For the time being, circular reference
	  is only supported for lists and vectors.

	* src/compile.c (compile_quote) : added a workaround so that
	  the quoted literal that contains circular reference won't cause
	  circular recursion during unwrap_identifier.

	* src/extlib.stub (hash-table-num-entries) : added.

	* src/hash.c (STRING_HASH, HASH2INDEX) : improved hash function.
	  the previous one isn't optimal for string keys.

2004-01-18  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub (promise?): added promise?.

	* lib/gauche/procedure.scm (case-lambda): added case-lambda.
	* lib/srfi-5.scm : added.
	* lib/srfi-0.scm : updated to support new srfis.

	* doc/*.texi : removed module name from the node names, for the dot
	  in the module names interferes with some info browsers.  Also
	  added detailmenu of index sections in the master menu, so that
	  'i' command works in the emacs info mode.
	  (Suggested by Katsuhiro Seino).

2004-01-17  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/cgen.scm : added experimentally.  An internal utility
	  module for C code generators.

	* src/builtin-syms.scm : This generates the C files that
	  defines and creates builtin symbols.  Replaces gauche/predef-syms.
	* src/gauche/predef-syms.h : removed.
	* src/symbol.c : changed to include C code generated by builtin-syms.
	* src/*.c : includes builtin-syms.h necessary, and replaced the code
	  that creates symbols at init time for static references.

	* src/autoloads.scm : revised using gauche.cgen.

2004-01-16  Shiro Kawai  <shiro@acm.org>

	* src/boolean.c (Scm_EqualP) : loop over list spine instead of
	  recursive call to CDR - it's more robust for very long lists.
	* src/list.c (Scm_Length) : removed redundant code.
	  (Scm_Delete, Scm_AssocDelete) : loop over list spine instead of
	  recursive call to CDR.
	* src/char.c (Scm_CharsetAddRange): removed redundant code.
	* src/string.c (count_size_and_length): fixed a bug that potentially
	  access beyond a terminating char.
	  (Scm_ConstCStringArrayToList, Scm_CStringArrayToList): fixed bugs
	  that doesn't make intended result when size is given.
	* src/system.c (Scm_SysGlob): handles the case when GLOB_NOMATCH
	  isn't defined.
	* test/* : added some more tests.
	* The above changes are based on a patch from Ueyama Rui.

	* src/vm.c (save_env): discarded the old sloppy code that took
	  too much time when recursion gets very deep.  Rewritten with a
	  new code which runs proportional in the amount of stack-allocated
	  activation records, whose upper bound is not large.  This change
	  improves performance of deep recursion code in order of magnitude.

	* src/extlib.stub (read-block) : allow 0 to be passed as nbytes.
	  read-block returns a null string in such a case.

2004-01-12  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/uri.scm (uri-decompose-authority): fixed regexp to exclude
	  the following '@' from userinfo.

2004-01-08  Shiro Kawai  <shiro@acm.org>

	* src/gauche/char_euc_jp.h (Scm_CharBackwardEUC): made the algorithm
	  more permissive, so that it will be more robust when illegal
	  mbstring is passed accidentally.

2004-01-06  Shiro Kawai  <shiro@acm.org>

	* src/syslib.stub (sys-truncate, sys-ftruncate): Added interface
	  to truncate(2) and ftruncate(2).

2004-01-04  Shiro Kawai  <shiro@acm.org>

	* ext/net/netlib.stub (socket-output-port): fixed buffering keyword
	  argument handling.  (Pointed by Yoshiharu Fujisawa).

2004-01-02  Shiro Kawai  <shiro@acm.org>

	* src/main.c (sig_setup): fixed a problem that threads hang on
	  FreeBSD.   SIGUSR[12] is used by GC on FreeBSD!

2003-12-29  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/822.scm (rfc822-header->list): changed to deal with
	  the cases that header field contains illegal character sequences
	  (thus the line reader yields incomplete strings).

2003-12-26  Shiro Kawai  <shiro@acm.org>

	* lib/util/list.scm (util.list): it no longer inherits srfi-1.
	  inheriting srfi-1 causes a problem when this module is imported
	  after gauche.collection---then procedures like 'find' or 'map'
	  are resolved as srfi-1's, which is usually not the intended
	  behavior.
	* src/system.c (Scm_GlobDirectory): fixed return value check
	  for portability (pointed by kou).
	* src/main.c (sig_setup): exclude SIGPROF from Scheme-monitored
	  signals.
	* src/module.c (Scm_ImportModules) : reorder multiply imported
	  modules, so that the last "import" supercedes the previous ones.

2003-12-18  Shiro Kawai  <shiro@acm.org>

	* lib/www/cgi-test.scm : added.
	* test/www.scm : added tests for www.cgi-test.

2003-12-17  Shiro Kawai  <shiro@acm.org>

	* lib/slib.scm.in : let (require 'format) use slib's format.

	* configure.ac, src/link-hpux : fixed compilation problem on
	  HP-UX 11.11.

	* src/port.c (MIN, MAX): #undef before defining.  Some platforms
	  defines them and warns the duplicate definition.

2003-12-16  Shiro Kawai  <shiro@acm.org>

	* release 0.7.3

	* src/boolean.c (Scm_EqualP): Experimentally put code that compares
	  identifiers by name in equal?.  See the comment in the source.

2003-12-15  Shiro Kawai  <shiro@acm.org>

	* Makefile.in (install-pkg): fix aclocal.m4 installation directory;
	  there shouldn't be a slash after $(DESTDIR); it would cause error
	  on cygwin.

	* src/core.c (Scm_Init), src/gauche.h, src/gauche/config.h.in,
	  src/main.c : API Change: Scm_Init now takes const char *signature
	  argument, in order to detect version mismatch between main
	  app and libgauche.so.

	* ext/charconv/jconv.c (jconv_open): conversion to/from "none"
	  should always be allowed, and it should be just pass-through.

	* src/autoloads.scm : added missing #define LIBGAUCHE_BODY --- it
	  matters on cygwin.

	* src/main.c, src/load.c : added ad-hoc support of legacy DOS
	  drive letter under __CYGWIN__.

2003-12-14  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/mime.scm (mime-parse-message, etc): revised API.

2003-12-13  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/redefutil.scm, lib/gauche/object.scm : Oops.
	  Yesterday's support of the optional slot specifier doesn't work
	  well with inheritance.   I remove the feature for now.

	* src/macro.c (compile_rule1): Checks if template ellipsis level
	  matches pattern variables'.  Without catching this error, such
	  erroneous macro would cause infinite loop at expansion time.
	  (add_pvar) : fixed wrong condition to check duplicated pattern
	  variables.
	  (These patches from teranishi)

2003-12-12  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/redefutil.scm (change-object-class): properly support
	  the optional slots argument.  also made the default slot carry-over
	  routine handles class-allocated slots.

	* lib/gauche/mop/propagate.scm (compute-get-n-set): changed to
	  support bound?-protocol, and make it robust for class redefinition.

	* lib/gauche/object.scm (class-slot-bound?): added bound?-protocol
	  to the class slot accessor.

	* lib/slib.scm.in (home-vicinity): make sure it ends with directory
	  separator.
	  (slib:load): adjusted to SCM behavior.

	* lib/rfc/mime.scm : added experimentally.

2003-12-11  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/822.scm : added basic tokenizers.

2003-12-09  Shiro Kawai  <shiro@acm.org>

	* src/autoloads.scm, src/gauche-init.scm, lib/gauche/fileutil.scm,
	  lib/gauche/modutil.scm : Moved autoload settings from gauche-init.scm
	  to autoloads.scm, which is compiled into the binary; this improve
	  start-up time of gosh quite a bit.

	* src/gauche.h, src/load.c (Scm_DefineAutoload), src/extlib.stub:
	  Implemented autoload feature in C.

	* src/gauche-init.scm, src/gauche/interactive.scm : moved the
	  feature to load ~/.gaucherc from gauche-init to gauche.interactive.

2003-12-08  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h (SCM_NEW_ARRAY), src/*.c : replaced most of SCM_NEW2
	  to SCM_NEW_ARRAY for clearity.

	* src/parameter.c (Scm_ParameterTableInit): fixed a bug that corrupts
	  memory.

2003-12-07  Shiro Kawai  <shiro@acm.org>

	* src/list.c (Scm_MonotonicMerge), src/class.c, src/module.c,
	  src/gauche.h, src/extlib.stub : Changed to use C3 linearization
	  instead of Dylan linearization.  C3 is more intuitive.

	* ext/charconv/charconv.c (Scm_MakeInputConversionPort,
	  Scm_MakeOutputConversionPort) : fixed a bug that didn't
	  initialize all the members of ScmPortBuffer.

2003-12-05  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h (SCM_SYSCALL), src/system.c, src/syslib.stub,
	  src/port.c, ext/net/net.c, ext/fcntl/fcntl.c,
	  ext/auxsys/auxsyslib.stub: Wrapped system call by a macro
	  so that signal-interrupted system calls are restarted unless
	  signal handler throws an exception.   The old wrappers,
	  Scm_SysCall and Scm_PreSysCall, which didn't restart syscall,
	  are obsoleted.

2003-12-04  Shiro Kawai  <shiro@acm.org>

	* src/genstub : updated according to Scm_InitBuiltinClass change.
	* lib/text/html-lite.scm (html-doctype):  added missing dtd url.
	  handles XHTML doctypes as well.
	* lib/slib.scm.in : added system -> sys-system alias (Patch from
	  KIMURA Fuyuki).
	* src/error.c (Scm_SError) : allow non-string as a first arg.
	  This is only for supporting third-party code without obscuring
	  where an error occurred.  New code should pass a string there
	  specified SRFI-23.  Suggestion and patch from Kimura Fuyuki.

2003-12-03  Shiro Kawai  <shiro@acm.org>

	* lib/text/tr.scm (build-transliterator) : changed it to
	  use current-i/o ports when the created transliterator is
	  called instead of the ones when the transliterator is created;
	  the former is more useful, since the latter can be achieved
	  by passing :input (current-input-port) etc., to build-transliterator.
	  Patch from Alex Shinn.

	* lib/text/html-lite.scm (html-escape-string): call x->string on
	  the argument so that it can handle non-string argument.
	  (Suggested by Kouhei Sutou).

2003-11-27  Shiro Kawai  <shiro@acm.org>

	* src/class.c : cleaned up internal protocols.  The fourth
	  argument of Scm_InitBuiltinClass is changed to a flag withMeta.
	  Treatment of ScmClass.coreSize is straighten up.

	* lib/gauche/object.scm, lib/gauche/redefutil.scm : splitted
	  class-redefinition implementation into an autoloaded file.
	  Fix instance update protocol so that only instance-allocated
	  slots (in the old instance) will be carried over.

2003-11-24  Shiro Kawai  <shiro@acm.org>

	* lib/dbm.scm : added dbm-db-* to the export list.  (Pointed out
	  by Hosaka Y).

2003-11-22  Shiro Kawai  <shiro@acm.org>

	* src/port.c (Scm_GetRemainingInputString), src/extlib.stub,
	  src/gauche.h, test/string.scm : Added get-remaining-input-string.

2003-11-21  Shiro Kawai  <shiro@acm.org>

	* acinclude.m4, aclocal.m4 : make sure OBJEXT and EXEEXT are
	  substituted.
	* examples/spigot/Makefile.in : parameterize OBJEXT and DSOEXT.

	* src/number.c (read_uint): Now the number reader recognizes
	  '#'-padded numeric literal format.

	* src/portapi.c (Scm_ReadLine):
	* src/extlib.stub (read-line): Added allow-byte-string parameter
	  so that read-line can be used for a port whose character encoding
	  is unknown.

2003-11-20  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-14.scm (ucs-range->char-set!) : this procedure didn't
	  work for large charset if gauche was compiled for other than utf-8.

2003-11-19  Shiro Kawai  <shiro@acm.org>

	* src/hash.c (Scm_EqHash, Scm_EqvHash), src/extlib.stub :
	  experimentally added eq-hash and eqv-hash functions.

2003-11-18  Shiro Kawai  <shiro@acm.org>

	* src/list.c (Scm_Assoc, Scm_AssocDelete, Scm_AssocDeleteX) :
	  added (fixed) checks of 'alist' argument.

2003-11-18  Kimura Fuyuki  <fuyuki@nigredo.org>

	* ext/net/test.scm : Relax checking of (sockaddr-name v6addr).
	  The result string of inet_ntop() varies among implementations.

2003-11-14  Shiro Kawai  <shiro@acm.org>

	* src/class.c (Scm_VMSlotSet) : fix calling slot-missing.

	* src/list.c (Scm_Assq, Scm_Assv) : check 'alist' argument if
	  it's a list.

2003-11-11  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/mop/validator.scm : make slot-bound? work on a slot
	  with validator, using new :slot-bound? protocol of virtual slots.

	* lib/gauche/object.scm (change-class) : exclude builtin slots
	  from processing.  They are copied by %transplant-instance
	  anyway, and sometimes cause problems if we copy them in Scheme
	  level.
	  (compute-slot-accessor) : Changed according to <slot-accessor>
	  class change.  Virtual slot now can have :slot-bound? option.

	* lib/gauche/mop/instance-pool.scm : export some accessors; without
	  them, weird things happen when other modules creates subclasses
	  of <instance-pool-meta>.  This fix is just to dodge the real
	  problem, which is the interaction between generic function and
	  namespaces.

	* src/class.c : added missing delete-method! generic function
	  registration.   Changed Scm_SlotAccessor structure to have
	  Scheme-defined bound? procedure, so that the virtual slot can
	  specify a way to determine whether the slot is bound or not.

2003-11-10  Shiro Kawai  <shiro@acm.org>

	* src/class.c, lib/gauche/object.scm, src/moplib.stub,
	  src/gauche/class.h, src/gauche.h : implemented change-class
	  method, which completes class redefinition protocol.

	* ext/*/test.scm : removed kludge code that allowed to load modules
	  from the testing directory---now 'make' creates links so we
	  no longer need them.

	* lib/srfi-1.scm : added missing autoload fro list=  (Patch from
	  Michal Maruška).

2003-11-09  Shiro Kawai  <shiro@acm.org>

	* ext/sxml/adaptor.scm (make-char-quotator) : the signature didn't
	  match with usage.  Patch from Nobuo YAMASHITA.

2003-11-08  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/process.scm (process-wait-any) : avoid calling
	  sys-waitpid unless there are child processes regsitered in
	  process-list; sys-waitpid raises an error when no child
	  process to wait.

2003-11-07  Shiro Kawai  <shiro@acm.org>

	* example/oointro.scm, doc/object.texi : added "introduction to
	  the object system" section, and the code snippet of the
	  examples.

2003-11-05  Shiro Kawai  <shiro@acm.org>

	* ext/sxml/sxpath.scm.in, ext/sxml/tools.scm.in : added missing
	  APIs to export list (sxml:id-alist, sxml:not-equal?,
	  sxml:string->xml) and corrected misspelling of exported fn
	  (sxml:attr-list-node).   Pointed by Nobuo YAMASHITA.

2003-11-02  Kimura Fuyuki  <fuyuki@nigredo.org>

	* aclocal.m4, acinclude.m4 : Add a description for GAUCHE_VERSION
	  to make autoheader happy.

2003-10-30  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/selector.scm (selector-delete!): fixed an error when
	  only procedure is specified.  Also added unit test for selector.

2003-10-29  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/process.scm (process-wait, process-wait-any) : added
	  nohang optional arg to process-wait, so the user can just check
	  the exit status without suspending.  Also added process-wait-any
	  for convenience.

2003-10-28  Shiro Kawai  <shiro@acm.org>

	* lib/util/queue.scm (remove-from-queue!): fixed a bug that raises
	  an error when the only element in the queue is removed.

2003-10-28  Kimura Fuyuki  <fuyuki@nigredo.org>

	* ext/mt-random/mt-random.c (genrand_int_small): Add a special
	  case for n==1. Now (random-integer 1) correctly returns 0.

2003-10-27  Kimura Fuyuki  <fuyuki@nigredo.org>

	* configure.ac : Add a missing comma.

2003-10-25  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h, src/class.c, src/gauche/class.h, src/moplib.stub,
	  lib/gauche/object.scm : snapshot of class redefinition logic.
	  Not enabled yet, but closer to the final structure.

	* lib/dbm/fsdbm.scm (dbm-fold): fixed a bug that dbm-fold passes
	  a bogus key to the iteratee procedure.

2003-10-25  Kimura Fuyuki  <fuyuki@nigredo.org>

	* examples/spigot/Makefile.in : Respect DESTDIR.

2003-10-24  Shiro Kawai  <shiro@acm.org>

	* src/regexp.c : added non-greedy match (*?, +?, ??, {n,[m]}?).

2003-10-24  Kimura Fuyuki  <fuyuki@nigredo.org>

	* Makefile.in, examples/spigot/Makefile.in : Add configure.lineno
	  to CONFIG_GENERATED. That file is automatically generated by the
	  configure script if /bin/sh does not support the LINENO
	  environment variable. (i.e. most Linux users never see it.)

2003-10-23  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub (bufport_flusher): updated according to the
	  protocol change on 2003-10-20.  Note that the Scheme buffered port
	  API itself is not final, and will probably be replaced.

	* src/gauche.h, src/class.c, src/genstub, src/moplib.stub,
	  src/gauche/class.h : fixed low-level mechanism for class
	  redefinition, still a snapshot.  Cleaned up the meaning of
	  "flags" of class---now the role of class categories are well
	  defined and commented in gauche.h, and the class category is
	  visible from Scheme as well.

	* lib/gauche/object.scm : a snapshot of skeleton code for
	  class redefinition stuff.  Not active yet.

2003-10-22  Shiro Kawai  <shiro@acm.org>

	* ext/charconv/charconv.scm (with-input-conversion,
	  with-output-conversion): added.  Manual entry is also created
	  accordingly.

2003-10-23  Kimura Fuyuki  <fuyuki@nigredo.org>

	* ext/dbm/gdbm.scm, ext/dbm/ndbm.scm, ext/dbm/odbm.scm,
	  lib/dbm/fsdbm.scm, lib/rfc/cookie.scm, lib/srfi-19/format.scm :
	  Use "error" rather than "errorf" if not needed.

2003-10-21  Shiro Kawai  <shiro@acm.org>

	* Makefile.in, Gauche.spec : installs acinclude.m4 as gauche.m4 under
	  $(datadir)/aclocal.  Patch from Kimura Fuyuki.

	* src/Makefile.in : make uninstall remove libgauche.so.  Patch from
	  Kimura Fuyuki.

	* src/gauche-init.scm : evaluates "~/.gaucherc" in the user module.
	  NB: this is still not an official feature, and might be moved to
	  gauche.interactive in future.

2003-10-20  Shiro Kawai  <shiro@acm.org>

	* src/port.c, src/portapi.c, ext/charconv/charconv.c : changed the
	  internal protocol of flush routine of buffered port, so that it
	  can behave differently when the flush request is a final one or not.
	  See the comment at buffererd port implementation of port.c for
	  the detailed discussion.

2003-10-20  Kimura Fuyuki  <fuyuki@nigredo.org>

	* ext/net/*, doc/modgauche.texi : added sockaddr-addr and
	  sockaddr-port.

	* lib/srfi-37.scm : Fixed a typo in the export list. We seem to
	  need some sort of "duplication checker".

2003-10-18  Shiro Kawai  <shiro@acm.org>

	* ext/charconv/jconv.c : fixed a bug in utf8->eucjp conversion routine
	  that incorrectly rejected 2-byte utf8 sequences which end with 0xbf
	  (Thanks to Kimura Fuyuki for identifying the problem).

2003-10-17  Shiro Kawai  <shiro@acm.org>

	* src/class.c, src/gauche.h, src/moplib.stub, lib/gauche/object.scm :
	  Checked in the preparation of class-redefinition support.
	  Instance slots are now stored in an array separately allocated
	  from the object itself (so the number of instance slots can be
	  changed).  Some bookkeeping routines are added to the ScmClass.
	  Class flags has been changed, but not fixed its meanings.

	* src/vm.c, src/gauche/vminsn.h : added some code to support
	  instruction vectorization.   Not yet finalized.

	* lib/dbm.scm (dbm-open): fixed a bug when a custom accessor
	  specification is given (Patch from Grzegorz Chrupała).

2003-10-08  Shiro Kawai  <shiro@acm.org>

	* lib/Makefile.in (slibcat-in-place): use $(top_builddir)
	  instead of $(exec_prefix), since at this moment gosh isn't
	  installed there yet.

2003-10-07  Shiro Kawai  <shiro@acm.org>

	* src/regexp.c (is_distinct): fixed a bug in the optimizer, which
	  makes a regexp that contains "a repeat of complemented charset
	  followed by something except a char or a charset" fails.

2003-10-07  Kimura Fuyuki  <fuyuki@nigredo.org>

	* lib/dbm/fsdbm.scm: typo fix

2003-10-05  Shiro Kawai  <shiro@acm.org>

	* configure.ac, ext/auxsys/auxsys.scm, ext/auxsys/auxsyslib.stub :
	  added sys-setenv and sys-unsetenv (Patch from Kimura Fuyuki).

	* src/gauche/config.h.in, ext/auxsys/auxsysconf.h.in : moved
	  #defines that only used in auxsys into auxsysconf.h.in.

	* lib/util/lcs.scm (lcs-with-positions) : fixed an error in
	  the edge case, when both sequences are empty.

2003-10-04  Shiro Kawai  <shiro@acm.org>

	* release 0.7.2

	* src/gauche-config.in : records OBJEXT and EXEEXT.

	* aclocal.m4, acinclude.m4 : added adjustment of OBJEXT, EXEEXT,
	  SOEXT and DYLIBEXT in AC_GAUCHE_CC macro.

	* ext/Makefile.ext.in : expose BIN_INSTALL_DIR etc.

2003-10-03  Shiro Kawai  <shiro@acm.org>

	* ext/fcntl/fcntl.scm: added missing F_SETFD to the export list
	  (patch from Kimura Fuyuki).

	* src/compare.c, lib/gauche/sortutil.scm, src/extlib.stub,
	  src/gauche.h :
	  use the internal sort function when a compare fn is not given.

	* lib/gauche/stringutil.scm (string-split) : raises an error when
	  splitter matches a null string.

2003-10-02  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/process.scm (run-process): make sure the fds opened for
	  redirection are closed in the parent process side.

	* src/gauche/extend.h (SCM_INIT_EXTENSION): under __CYGWIN__, add
	  a region between _bss_start__ and _bss_end__ to the root set,
	  instead of Scm__bssstart/end.  The new ld reorders bss area,
	  so the latter doesn't work.   (It may be the case with other
	  lds.  Need to investigate).

2003-09-29  Shiro Kawai  <shiro@acm.org>

	* ext/net/net.scm, example/scheme-server.scm : added 'proto' optional
	  argument to make-sockaddrs, and refactored make-server|client-socket
	  using make-sockaddrs (Patch provided by Kimura Fuyuki).

2003-09-28  Shiro Kawai  <shiro@acm.org>

	* ext/mt-random/mt-random.c : fixed a bug that
	  (random-integer (expt 2 16)) generates a value larger than 2^16.
	  Patch provided by Alex Shinn.

2003-09-27  Shiro Kawai  <shiro@acm.org>

	* ext/net/net.scm : added make-server-sockets and make-sockaddrs
	  in order to open multiple server sockets (esp., when the host
	  has both ipv4 and ipv6 interface).  Patch provided by Kimura Fuyuki.

	* ext/charconv/charconv.scm : added call-with-input|output-conversion.

	* src/macro.c (compile_rule1): fixed the problem of macro-defining
	  macro.

	* ext/net/net.c (Scm_SocketClose) : do not shutdown the connection
	  when a socket is closed; other forked process may still be using
	  it.  Also fixed a socket's finalizer not to refer to the ports
	  (it is not guaranteed that they are valid when the finalizer is
	  called).

2003-09-24  Shiro Kawai  <shiro@acm.org>

	* ext/sxml/sxpath.scm.in : fixed typo in the export list (pointed out
	  by Makoto Satoh).

2003-09-22  Shiro Kawai  <shiro@acm.org>

	* src/srfi-1/filter.scm : fixed typo, and changed (not (pair? ...))
	  to (null-list? ...).  The latter change makes the code check an
	  improper list more strictly, and the original srfi-1 reference
	  implmentation uses null-list? consistently, but "not pair?" sneaked
	  in when I tuned some procedures.  (Patch from Grzegorz Chrupała).

2003-09-18  Shiro Kawai  <shiro@acm.org>

	* src/number.c (Scm_Quotient, Scm_Modulo): fixed a bug that yielded
	  wrong error message when the first arg wasn't a number.

2003-09-15  Shiro Kawai  <shiro@acm.org>

	* lib/dbm/fsdbm.scm : added.

2003-09-14  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub : added gauche-dso-suffix to query dlopen()-able
	  suffix of the system.

	* src/compare.c, lib/gauche/sortutil.scm, src/extlib.stub :
	  replaced sort and sort! implementation with Scheme version
	  (by Richard A. O'Keefe, based on the code by D.H.D.Warren).
	  The C version performs terribly when compare function is
	  provided from Scheme; more than 15 times slower than Scheme
	  version.
	* src/gauche-init.scm : sets autoload to sort and sort!.

2003-09-13  Shiro Kawai  <shiro@acm.org>

	* ext/*/Makefile.in : added missing $(LIBS) in the link rule.
	  This caused hang in the test of ext/threads during pthrad_cond_wait
	  (see http://sources.redhat.com/ml/libc-hacker/2003-09/msg00002.html)

	* lib/gauche/libutil.scm, lib/gauche/reload.scm : added libutuil.
	* src/gauche-init.scm : set autoloads for gauche.libutil.

2003-09-12  Shiro Kawai  <shiro@acm.org>

	* ext/charconv/jconv.c : fixed a bug that caused buffer overflow
	  and/or premature conversion output under certain condition.
	  Also added test cases (jp4.*) that particularly tests the condition.

	* lib/gauche/interactive.scm : added autoloads for gauche.reload,
	  so that `reload' would be available in interactive development
	  by default.  It's useful enough to do so.

2003-09-08  Shiro Kawai  <shiro@acm.org>

	* src/hash.c, src/class.c, src/gauche.h, src/extlib.stub : Exposed
	  hash procedure to Scheme.  Added object-hash generic function
	  so that the user-defined class can be used in hash table with
	  its own hash function.

2003-09-07  Shiro Kawai  <shiro@acm.org>

	* lib/dbm.scm, lib/dbm/* : moved abstract dbm implementation under lib.

2003-09-06  Shiro Kawai  <shiro@acm.org>

	* src/module.c, src/gauche-init.scm : incorporate module-name->path
	  in the core binary, so that the future extension can add
	  nontrivial translations between module names and pathnames.
	  From now on, any interface that needs to translate module name
	  to pathname or vice versa must go through this API (they shouldn't
	  assume replacing '.' to '/' is enough).

	* lib/gauche/common-macros.scm : moved check-arg and get-keyword*
	  to here from gauche-init.scm, as autoloaded macros.

2003-09-04  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/process.scm : Added various keyword arguments to
	  process ports to allow redirection and character encoding conversion.
	  Also extended the command syntax so that it can take a list of
	  argv and call exec directly.
	  (INCOMPATIBLE CHANGE) open-{input|output}-process-port now return
	  two values, the port and the process object.  I found they are pretty
	  useless without getting process object.

2003-09-03  Shiro Kawai  <shiro@acm.org>

	* lib/util/lcs.scm (lcs-with-positions) : rewrote to use Eugene Myers'
	  O(ND) algorithm which performs much better in typical case,
	  then the previous DP algorithm that requires O(NM).

2003-09-01  Shiro Kawai  <shiro@acm.org>

	* lib/www/cgi.scm (cgi-parse-parameters) : accept ';' as well as '&'
	  as a parameter separator.  (Support of ';' is recommended in the
	  B.2.2 of HTML4.01 specification).

2003-08-30  Shiro Kawai  <shiro@acm.org>

	* src/list.c (Scm_ListTail): fixed error message when arg is out
	  of range.

2003-08-29  Shiro Kawai  <shiro@acm.org>

	* ext/sxml/sxpath.scm.in: added missing txpath.scm (Patch from
	  Hisazumi Kenji).

2003-08-25  Shiro Kawai  <shiro@acm.org>

	* ext/Makefile.ext.in, ext/xlink : let each 'make' in exit/$dir
	  to create appropriate links in the source tree, so that the
	  newly built gosh can run without installation.

2003-08-17  Shiro Kawai  <shiro@acm.org>

	* src/compile.c (Scm__InitCompiler): moved with-module and
	  select-module from 'null' module to gauche module.  This makes
	  'null' and 'scheme' module pure R5RS.  Side-effect: once
	  you enter these modules, there will be no way to get out from them.

2003-08-16  Shiro Kawai  <shiro@acm.org>

	* ext/net/test.scm : adapted to ipv6

2003-08-09  Shiro Kawai  <shiro@acm.org>

	* src/portapi.c (Scm_ReadLine): removed the big overhead of
	  read-line related to port locking.

2003-08-08  Shiro Kawai  <shiro@acm.org>

	* ext/fcntl/fcntl.c, ext/net/addr.c, ext/termios/termios.c :
	  corrected usage of memset() (Pointed by NISHIO Yasuhiro)

	* ext/charconv/Makefile.in : changed LDFLAGS so that @ICONV_LDFLAGS@
	  will be added before $LDFLAGS.  Patch from Kogule, Ryo.

2003-08-07  Shiro Kawai  <shiro@acm.org>

	* lib/slib.scm.in : provides substitute of slib's "byte" module---
	  the original one uses a string for a byte-string, which doesn't
	  work on Gauche.

	* aclocal.m4, ext/net/net.ac, src/gauche/config.h : added test for
	  socklen_t, which appears to be necessary on MacOS X when using
	  ipv6.  (Patch from Hisazumi Kenji).

	* Makefile.in, lib/Makefile.in, lib/mklibcat : added 'slibcat-in-place'
	  make target which creates 'slibcat' within the source tree before
	  installing gauche.  This is useful to make a package of the
	  system that doesn't allow to run a postinstall script.

2003-08-05  Shiro Kawai  <shiro@acm.org>

	* lib/util/record.scm : added SCM compatible make-record-type
	  and other stuff, built on top of srfi-9.  This is derived from
	  the patch provided by Alex Shinn.

2003-07-23  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/uri.scm (uri-decode): handle gracefully the case that
	  input string ends with '%'.

	* release 0.7.1

2003-07-22  Shiro Kawai  <shiro@acm.org>

	* configure.ac, src/Makefile.in, src/link-dylib, src/makeverslink:
	  fixed link and installation process.  Introduced a couple of
	  helper script to keep configure.ac and Makefile.in simple.

	* ext/sxml/adaptor.scm : added cerr, cout and nl for sxml-tools
	* ext/sxml/sxpath.scm.in : use srfi-2 and srfi-11.

2003-07-21  Shiro Kawai  <shiro@acm.org>

	* src/Makefile.in : On Cygwin, installs libgauche.dll to bindir
	  as well as libdir, or it won't be found by the shell.

	* doc/Makefile.in : honors DESTDIR for installation.

	* ext/sxml : updated SXPath to the newer version in sxml-tools
	  by Kirill Lisovsky and Dmitry Lizorkin.  Also added sxml.tools.

2003-07-20  Shiro Kawai  <shiro@acm.org>

	* ext/sxml/sxpath.scm, ext/sxml/trans.scm : incorporated Alex Shinn's
	  patch for sxpath support, and Kiyoka Nishiyama's patch on it.

	* ext/sxml/src/SSAX.scm : updated to the newest CVS version of SSAX.scm

2003-07-19  Shiro Kawai  <shiro@acm.org>

	* ext/dbm/dbmconf.h.in : splitted dbm-specific configure settings
	  to this file from the main config.h.in.

	* configure.ac, src/Makefile.in : run relink before installing
	  gosh with --relink option, so that the installed gosh dynamically
	  links the proper libgauche.so.

2003-07-18  Shiro Kawai  <shiro@acm.org>

	* configure.ac, src/gauche-config.in, ext/Makefile.ext.in :
	  revised some compiler options.  removed spurious -lgauche-uvector
	  flag from gauche-config.

2003-07-16  Shiro Kawai  <shiro@acm.org>

	* ext/sxml : integrated Oleg Kiselyov's SXML.  Just incorporated
	  sxml-gauche 0.9 sources with minor modifications; need to catch
	  up the current SXML versions.

2003-07-15  Shiro Kawai  <shiro@acm.org>

	* gc/*, src/gauche/memory.h : upgraded to Boehm GC 6.2

2003-07-14  Shiro Kawai  <shiro@acm.org>

	* ext/Makefile.ext.in : Added $(DESTDIR) to the install
	  destination (Thanks to Kogule Ryo for a patch).

2003-07-09  Shiro Kawai  <shiro@acm.org>

	* src/gauche/char_none.h (SCM_CHAR_GET): make sure retrieval of
	  char is not sign-extended.

2003-07-08  Shiro Kawai  <shiro@acm.org>

	* configure.in, configure.ac, ext/charconv/charconv.ac,
	  ext/dbm/dbm.ac, ext/net/net.ac : renamed configure.in to
	  configure.ac.  Splitted out the extension-specific tests
	  into ext/*/*.ac files.

	* src/main.c (main): changed to set up *program-name* and *argv*
	  before evaluating -u, -l, and -e options, so that the files
	  loaded by these options can refer to the proper *program-name*
	  and *argv*.

	* ext/dbm/gdbm.scm (dbm-fold): fixed to use %dbm-s2v to convert
	  value field (it was %dbm-s2k).  Thanks to Alex Shinn for pointing
	  this out.

2003-07-05  Shiro Kawai  <shiro@acm.org>

	* lib/www/cgi.scm : allow cgi-header to accept arbitrary keyword
	  argument to add extra headers.  :location argument no longer
	  suppresses set-cookie header.

2003-07-04  Shiro Kawai  <shiro@acm.org>

	* lib/text/html-lite.scm : generate "<tag />" for empty element.

2003-06-25  Shiro Kawai  <shiro@acm.org>

	* configure.in, Makefiles : de-libtool-ized.  Tested on Cygwin,
	  possibly breaking build process on other platforms.
	  On cygwin, you need to add $(libdir) to PATH in order to
	  run gosh after installation.

2003-06-20  Shiro Kawai  <shiro@acm.org>

	* doc/extract : fixed a problem of @include when Gauche is compiled
	  other than euc-jp as a native encoding.

2003-06-19  Shiro Kawai  <shiro@acm.org>

	* src/stdlib.stub (char-ready?) : made char-ready?'s argument optional
	  to comply R5RS.

2003-06-16  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/http.scm (receive-body) : added fallback case when neither
	  content-length nor transfer-encoding is provided by the server.

2003-06-11  Shiro Kawai  <shiro@acm.org>

	* doc/gauche-ref.texi : splitted chapters into separate texi files.

2003-06-10  Shiro Kawai  <shiro@acm.org>

	* example/spigot/* : added example of an extension module.

2003-06-08  Shiro Kawai  <shiro@acm.org>

	* src/gauche-init.scm, lib/gauche/common-macros.scm : added fluid-let
	  macro provided by Dorai Sitaram.

2003-06-04  Shiro Kawai  <shiro@acm.org>

	* Makefile.in, lib/Makefile.in : recover the rule to create slibcat
	  after installation; it was inadvertently dropped sometime
	  since 0.6.8.

2003-06-03  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h (ScmPortRec): renamed a member 'private' to 'priv',
	  to be C++ friendly.

2003-05-31  Shiro Kawai  <shiro@acm.org>

	* src/number.c (read_number), src/stdlib.stub (make-polar): changed
	  to use a common function Scm_MakeComplexPolar, to avoid the
	  difference of the result due to compiler's optimization.

2003-05-30  Shiro Kawai  <shiro@acm.org>

	* release 0.7

	* src/gauche.h (SCM_CHAR_MAX), src/extlib.stub (%char-set-add-range!):
	  fixed the range check bug that prevents
	  (char-set-delete char-set:full #\;) from running.

	* src/syslib.stub (sys-access): the last change didn't work.
	  Reverted to the original code, but kept the check if we're
	  running suid/sgid code.

	* ext/uvector/Makefile.in : changed again the name of the DSO to
	  libgauche-uvector.la; some extension modules depended on the name.

2003-05-29  Shiro Kawai  <shiro@acm.org>

	* src/syslib.stub (sys-access): let it signal an error if real
	  uid/gid differs from effective uid/gid.  Sys-access should never
	  be used in suid/sgid program anyway.  And if we exclude that,
	  there's no difference between access() and stat(), so I changed
	  it to use stat() on all platforms.

	* src/Makefile.in (install): avoid using -m 444 to install
	  libgauche.la, for on some platforms libtool tries to run ranlib
	  on the installed libgauche.a and fails if it is not writable.
	  libtool then changes its permission to 644; it is hardcoded in
	  the AC_PROG_LIBTOOL macro.

	* mkinstalldirs, src/Makefile.in, ext/Makefile.ext.in, lib/Makefile.in,
	  doc/Makefile.in : changed to use mkinstalldirs instead of
	  "install -d", for some system's install doesn't understand -d option.

	* ext/*/Makefile.in : added explicit dependency between *.stub and *.c
	  files, for some 'make' can't infer how to make .lo from .stub
	  only by the inference rules.

	* ext/syslog/syslog.scm : exported LOG_* constants only when they
	  are defined.

	* configure.in : bypasses the test for select(2) on HP-UX; it doesn't
	  like the way autoconf tests the select's existence.  Also replaced
	  reference of $host for $target, for better support of
	  cross-compiling.

2003-05-28  Shiro Kawai  <shiro@acm.org>

	* src/syslib.stub : exclude sys-fdset and sys-select if select(2) is
	  not available on the system.

	* Makefile.in, src/Makefile.in, ext/Makefile.in, ext/Makefile.ext.in,
	  test/*, ext/*/test.scm : created install-check target, which runs
	  tests with installed gosh.

	* src/load.c (Scm_DynLoad): reports dynamic loading if -fload-verbose
	  flag is set.

2003-05-27  Shiro Kawai  <shiro@acm.org>

	* ext/net/net.scm : made make-client-socket and make-server-socket
	  take a <sockaddr> instance as well.

	* lib/text/diff.scm : changed API.

	* INSTALL.esc : added description of --enable-ipv6

	* ext/uvector/ : changed to create libuvector.la instead of uvector.la,
	  for linking by -luvector is required by ext/mt-random.

2003-05-25  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/vm/debugger.scm : removed dependency on gauche.thread

	* lib/util/lcs.scm : added lcs-fold and lcs-edit-list.

2003-05-23  Shiro Kawai  <shiro@acm.org>

	* ext/threads/thrlib.stub, src/extlib.stub : moved current-thread
	  back to the main library.  It is handy to have it even if we're
	  not using threads.

2003-05-20  Shiro Kawai  <shiro@acm.org>

	* lib/binary/pack.scm, lib/binary/io.scm, test/binary.scm :
	  incorporated Alex Shinn's binary.pack module.

2003-05-18  Shiro Kawai  <shiro@acm.org>

	* configure.in, */Makefile.in's : tweaks to make them work on Cygwin.

2003-05-17  Shiro Kawai  <shiro@acm.org>

	* ext/net/net.scm : export some constants of socket options
	  conditionally by export-if-defined.

2003-05-16  Shiro Kawai  <shiro@acm.org>

	* configure.in, ext/Makefile.ext.in, ext/mt-random/Makefile.in,
	  src/Makefile.in : more support for compiling on MacOSX

2003-05-15  Shiro Kawai  <shiro@acm.org>

	* gc/include/private/gcconfig.h: undef MPROTECT_VDB on MACOSX, for
	  it caused 'make check' to stall.  This flag is undefined in newer
	  boehm gc anyway.

	* src/dl_darwin.c: include <mach-o/dyld.h>

	* src/load.c : changed DynLoad stuff so that the platform-dependent
	  code are in separate files and #included in src/load.c conditionally.
	* src/dl_dlopen.c, src/dl_dummy.c, src/dl_win.c, src/dl_darwin.c :
	  platform-dependent dynload stubs.   Not tested yet except dl_dlopen.

2003-05-10  Shiro Kawai  <shiro@acm.org>

	* lib/util/lcs.scm, lib/text/diff.scm, lib/Makefile.in : added
	  Alex Shinn's LCS finding utility.

	* lib/net/netlib.stub, lib/net/net.scm : made 'flags' argument of
	  sys-getnameinfo optional, and export a bunch of IPPROTO_* enums.
	  (Patch from Kimura Fuyuki)

	* lib/util/list.scm : incorporated Alex Shinn's associative list
	  library.

	* src/bignum.c (Scm_BignumCmp3U): fixed a bug that caused the last
	  digit of certain floating point numbers to be printed incorrectly.
	  (Thanks to OGURISU Osamu for finding this bug).

2003-05-02  Shiro Kawai  <shiro@acm.org>

	* ext/net/addr.c, ext/net/net.scm, ext/net/netdb.c,
	  ext/net/netlib.stub: added seamless ipv6 support in
	  make-{server|client}-socket, and sys-getnameinfo support.
	  (Patch from Kimura Fuyuki).

	* configure.in, src/gauche/config.h.in : checks if sin_len is in
	  sockaddr_in (and sin6_len in sockaddr_in6).  It is reported that
	  FreeBSD has them, and needs them to be set up for getnameinfo
	  to work correctly.

	* src/Makefile: ensure BIN_INSTALL_DIR's existence at the installation
	  time.

2003-05-01  Shiro Kawai  <shiro@acm.org>

	* src/configure.in, src/gauche/config.h.in (HAVE_IPV6),
	  ext/net/addr.c, ext/net/net.scm, ext/net/netdb.c,
	  ext/net/netlib.stub, ext/net/net.h : applied experimental IPv6
	  support patch from Kimura Fuyuki.  The support can be turned on
	  by giving --enable-ipv6 to configure (and your OS supports it,
	  of course).

2003-04-30  Shiro Kawai  <shiro@acm.org>

	* src/gauche-init.scm (export-if-defined): added.  This macro
	  is to overcome the difficulty to keep exported symbol list
	  consistent when some of module's external APIs are defined
	  conditionally.  The implementation is a kludge, though.
	  Should be used with care.

	* src/genstub (define-cclass): fixed a bug that #if directive was
	  ineffective for define-cclass.

	* src/*.c: avoid having uninitialized variables.  On some platforms,
	  gc doesn't scan bss area of DSO modules, which causes a problem
	  when libgauche is used as a DSO.   (Note that in dlopen-ed
	  extensions gc is properly informed to scan bss area, by
	  SCM_INIT_EXTENSION).

	* src/load.c (Scm_DynLoad): use requested library name to derive
	  init function name, instead of the one given in libtool .la library
	  when the requested name is libtool library.  On some platforms
	  (e.g. cygwin) a different name is used for actual DLL and
	  libtool library).

	* ext/mt-random/* : enabled functinality that uses uvector on cygwin,
	  which has been disabled because of link problem on cygwin.

2003-04-29  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/Makefile.in, ext/mt-random/Makefile.in : avoid
	  making separate libgauche-uvector - this causes libtool
	  to issue warning, but the separate library doesn't work well
	  on cygwin.

	* configure.in: fixes to support cygwin and darwin

	* gc/configure.in: let the toplevel --with-local argument propagate
	  to gc compilation.   Define GC_PTHREADS to 1 on darwin to make
	  it parallel with toplevel config.h.

2003-04-25  Shiro Kawai  <shiro@acm.org>

	* ext/Makefile.ext.in (check): make 'check' depend on 'all' (Patch
	  from Kimura Fuyuki)

2003-04-24  Shiro Kawai  <shiro@acm.org>

	* src/system.c, doc/gauche-ref.texi: typo fix
	 (Patch from Kimura Fuyuki)

2003-04-21  Shiro Kawai  <shiro@acm.org>

	* Makefile.in, acinclude.m4, aclocal.m4, configure.in,
	  gc/configure.in, ltmain.sh, gc/Makefile.am, src/Makefile.in,
	  src/core.c : snapshot to make things work on cygwin (not quite, yet).

	* doc/gauche-ref.texi : fix in srfi-37 description
	  (patch from Grzegorz Chrupała).

	* Makefile.am's, Makefile.in's, ext/Makefile.ext.in, DIST:
	  Removed automake dependency.
	* ltmain.sh, config.guess, config.sub, aclocal.m4 : added to
	  CVS, so that the developer can build from CVS without having
	  the same version of libtool on his/her machine.  Requires
	  autoconf 2.54 or higher, though.
	* src/load.c : removed libltdl dependency.  libltdl is nice,
	  but it has a subtle problem when libgauche is linked with other
	  libraries that embeds libltdl.
	* src/gauche-config.in : added -lgauche-uvector -lgauche to
	  "gauche-config -l" output.

2003-04-16  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/parseopt.scm (let-args): added Alex Shinn's let-args
	  macro.

2003-04-14  Shiro Kawai  <shiro@acm.org>

	* various Makefile.am's and configure.in: made "make install" work.

	* various files: revised build process of built-in extensions (ext/*).
	  They no longer have separate configure.in; the toplevel configure.in
	  takes care of all the Makefiles.  All of them uses Makefile.am now.
	  Removed ext/example, for the example of extension must be shown
	  elsewhere.   This check-in passes "make check", but not tested
	  for installation.
	* Replace src/gauche/config.h for src/gauche-config.h, because
	  automake adds -I flag for config.h.in location automatically
	  even I don't want that.
	* In ext/uvector, arranged the Makefile so that libuvector.so is
	  created as a shared library which is used by a dlopen module
	  uvector.so.  This should help to solve the DLL problem on cygwin
	  but not tested.

2003-04-11  Shiro Kawai  <shiro@acm.org>

	* various files: automake+libtoolized, based on a patch from
	  Yokota Hiroshi.
	  The building process from CVS tree has been siginificantly changed;
	  see HACKING file for the details.
	  This check-in is a kind of working snapshot; it builds and passes
	  tests, but haven't yet checked if it can be properly packaged and
	  installed.

2003-03-31  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/array.scm (tabulate-array): referred to non-existent
	  procedure.  (Patch from Alex Shinn).

2003-03-30  Shiro Kawai  <shiro@acm.org>

	* release 0.6.8

2003-03-29  Shiro Kawai  <shiro@acm.org>

	* src/char.c, src/regexp.c : #[\w] to include underscore (following
	  the convention of Perl's).

2003-03-28  Shiro Kawai  <shiro@acm.org>

	* configure.in, gc/configure.in, gc/include/gc.h,
	  gc/include/private/gc_priv.h, gc/linux_threads.c,
	  src/gauche/config.h.in : applied a patch from HISAZUMI Kenji
	  to make pthreads work on Darwin.

2003-03-23  Shiro Kawai  <shiro@acm.org>

	* src/charset.c (Scm_CharSetLE): implemented two-arg char-set<= in C,
	  for it is used in regexp optimizer.  Available as %char-set<=?
	  from Scheme.
	* lib/srfi-14.scm (char-set<=): revised to use the native %char-set<=?.
	* src/regexp.c (Scm_RegOptimizeAST, rex_rec): added regexp optimizer
	  that works on AST.   Added regexp byte-code instructions that
	  works on the special optimized paths.
	* lib/slib.scm : provided object->string and object->limited-string.

2003-03-22  Shiro Kawai  <shiro@acm.org>
	* src/regexp.c : Total rewrite.  The compilation paths are divided
	  more clearly.  Pass 1 and pass 2 are available individually from
	  Scheme, as regexp-parse and regexp-compile.  Added bounded repetition
	  "{n,m}", non-capturing group "(?:...)", scoped case sensitivity
	  control "(?i:...)" and "(?-i:...)".

2003-03-03  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/822.scm (rfc822-parse-date): fixed behavior to conform
	  RFC2822 more closely (Patch provided from OGURISU Osamu).

2003-03-01  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h, src/bignum.c: takes more bits for bignum size,
	  and checks vailidity of bignum size in make_bignum.

2003-02-28  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (Scm_VMEval): resets numVals before evaluating the
	  compiled code, in order to prevent wrong numVals from propagating.

2003-02-27  Shiro Kawai  <shiro@acm.org>

	* lib/util/list.scm : extends srfi-1, instead of uses it.
	* src/regexp.c (Scm_RegExec): fixed a bug regarding multibyte
	  regexp match.
	* src/char.c (Scm_CharSetCaseFold): fixed a bug that case folding
	  charset didn't consider 'z' and 'Z'.

2003-02-26  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/common-macros.scm (values-ref): added values-ref
	  experimentally.
	* lib/util/list.scm (intersperse): added intersperse

2003-02-17  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-19.scm (make-time): Fix the order of argument to match
	  SRFI specification.  This whould break existing code that depends
	  on the wrong definition of make-time.

2003-02-15  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h (SCM_CHECK_START_END): pass through start==end case.
	* src/load.c, src/gauche.h : made autoload MT-safe.
	* src/vm.c, src/gauche/vm.h : renamed PCTYPE to SCM_PCTYPE to avoid
	  namespace pollution.

2003-02-14  Shiro Kawai  <shiro@acm.org>

	* ext/net/netdb.c (Scm_GetHostByName etc.): made the fallback code
	  (when no reentrant version of gethostbyaddr_r etc. are found)
	  thread-safe, using global lock.
	* ext/net/addr.c (sockaddr_in_allocate): made address lookup
	  thread-safe.

2003-02-10  Shiro Kawai  <shiro@acm.org>

	* lib/text/parse.scm (next-token) : fixed error message handling
	  (Patch from Grzegorz Chrupała).

2003-02-09  Shiro Kawai  <shiro@acm.org>

	* src/compile.c (compile_define): check the module existence in
	  define-in-module (Patch from Kimura Fuyuki).
	* lib/gauche/collection.scm : fixed hash table's call-with-iterator
	  which wasn't updated for the new hash table iterator.
	  (Patch from Kimura Fuyuki).

2003-02-08  Shiro Kawai  <shiro@acm.org>

	* src/gauche/char_euc_jp.h (Scm_CharBackwardEUC): made string pointer
	  backward operation work more precisely so that it won't be confused
	  with ASCII/Kanji mixed situation.

2003-02-07  Shiro Kawai  <shiro@acm.org>

	* release 0.6.7.1
	* lib/gauche/portutil.scm : fixed typo (%do-copy/limitN).
	* ext/charconv/charconv.c : fixed a bug that caused ces-convert
	  returns null string when it tried to convert one kanji character
	  string in EUCJP or SJIS to UTF8.  The cause was that the allocated
	  buffer was too small in that case.  I set minimum size of buffer.

2003-02-06  Shiro Kawai  <shiro@acm.org>

	* release 0.6.7
	* lib/charconv/charconv.scm : fixed bug in wrap-* (keyword typo)
	* doc/extract : fixed extract script so that it can deal with the
	  euc-jp document under gosh with any internal encodings.
	* src/gauche/char_none.h : add "NONE" to the compatible encoding names.
	* src/compile.c, src/macro.c : added some code to support NVM (not
	  yet completed).
	* lib/text/html-lite.scm : inserting newlines before closing tags
	  instead of after, to prevent extra whitespaces appear in the rendered
	  output.

2003-02-05  Shiro Kawai  <shiro@acm.org>

	* lib/www/cgi.scm : allow character encoding conversion of CGI output
	  via cgi-output-character-encoding parameter.  Added output-proc
	  keyword arg to cgi-main.
	* ext/charconv/charconv.c : allows a symbol as a CES name, as well
	  as a string.   Supports a special CES name "none".
	  Also added ces-equivalent?, ces-upper-compatible?,
	  wrap-with-{input|output}-conversion.
	* lib/file/util.scm (directory-list) : added :filter-add-path?
	  keyword argument.  refactored using cond-list and every-pred.

2003-02-04  Shiro Kawai  <shiro@acm.org>

	* src/port.c : added privatep flag to Scm_MakeInputStringPort and
	  Scm_MakeOutputStringPort, which pre-locks the created string port
	  so that mutex will be omitted.  Various files that uses those
	  functions are revised.
	* src/portapi.c, src/stdlib.stub, src/extlib.stub : added peek-byte,
	  and incorporated Scm_Peek* functions into the core from stub files.
	* lib/util/combinations.scm : revised to support duplicated entries.
	* lib/util/list.scm : added.  additional list library.
	* lib/gauche/sequence.scm : added fold-with-index, map-with-index,
	  map-to-with-index, for-each-with-index, find-index,
	  and find-with-index.

2003-02-03  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub (sort, sort!): allowed sorting vectors as well.

2003-01-31  Shiro Kawai  <shiro@acm.org>

	* ext/charconv/charconv.scm: adjust semantics of replaced call-with*
	  and with-*-file functions to close ports only when escaping
	  condition occurs.

2003-01-30  Shiro Kawai  <shiro@acm.org>

	* src/portapi.c, src/extlib.stub, lib/gauche/portutil.scm :
	  formerly supported with-port-locking.  made I/O primitives
	  skip port locking if the port is already locked by the calling
	  thread (this eliminates the need of undocumented %-unsafe version
	  of I/O primitives).
	* src/error.c : clear ERROR_BEING_REPORTED flag after normal exit
	  of Scm_ReportError.
	* ext/net/net.c : keep a back reference to the socket in its
	  input/output stream, so that the socket won't be GCed when
	  the application only grabs the reference of the streams.

2003-01-29  Shiro Kawai  <shiro@acm.org>

	* lib/text/gettext.scm : updated to Alex's new version.
	* lib/util/combinations.scm : added.

2003-01-20  Shiro Kawai  <shiro@acm.org>

	* src/class.c (Scm__InitClass) : initialization of <boolean> and
	  <character> to follow standard convention, i.e. defines
	  <boolean-meta> and <character-meta>.

2003-01-16  Shiro Kawai  <shiro@acm.org>

	* ext/auxsys/auxsyslib.stub (sys-putenv) : use system malloc to
	  allocate string to be passed to putenv(), to avoid the string
	  from being GCed.

2003-01-15  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-37.scm : added.

2003-01-14  Shiro Kawai  <shiro@acm.org>

	* lib/text/gettext.scm : added text.gettext contributed from
	  Alex Shinn.
	* src/genstub : fix in :base qualified define-cclass, which used
	  to pass wrong C type to calculate C object size.
	* src/gauche/class.h : fixed a bug in the default value of
	  slotNumber of static slot accessors, which created invalid
	  setter access when the slot is read-only.

2003-01-11  Shiro Kawai  <shiro@acm.org>

	* src/vm.c : added experimental runtime flag that disables mutation
	  of binding from outside of the definining module.

2003-01-10  Shiro Kawai  <shiro@acm.org>

	* src/module.c, src/extlib.stub : added make-module, and allow
	  anonymous modules.

2003-01-08  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-13.scm : fixed autoload typos.  Patch from Kimura Fuyuki.
	* lib/gauche/test.scm : added test-module procedure, which tests
	  autoloads and exported symbol bindings of the module, hopefully
	  to catch careless typos.

2003-01-07  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-1.scm : added some missing autoloads.  Patch provided
	  by Kimura Fuyuki.

2003-01-06  Shiro Kawai  <shiro@acm.org>

	* src/gauche/test.scm : Made default 'test' procedure catch an error.
	  The *test-error* variable is introduced to hold the "error value".
	  Introduced test* macro.  The original primitive 'test' is renamed
	  to 'prim-test', and used to test primitive syntaxes before
	  error handler is tested.

2003-01-05  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub, lib/gauche/hashutil.scm : fixed the problem that
	  #<eof> in hash key stopped iteration.  Also added hash-table
	  and hash-table-fold.

2003-01-04  Shiro Kawai  <shiro@acm.org>

	* ext/net/net.[ch]: applied a patch from John Kilburg to support
	  datagram socket.

2003-01-03  Shiro Kawai  <shiro@acm.org>

	* src/boolean.c (Scm_EqualP): check eq?-ness first.
	* lib/gauche/mop/instance-pool.scm : renamed *-remove methods to
	  *-remove!.  added map fns.

2003-01-01  Shiro Kawai  <shiro@acm.org>

	* src/vm.c : fixed Scm_VMEval to set the module to the specified
	  one during _executing_ the code, not only _compiling_ the code.
	  It involves dynamic-wind to restore the original module when
	  and error occurs.  If the given module is the current module,
	  however, we skip the dynamic-wind (the previous version pushed
	  extra continuation, but it seems we don't need it).
	* src/load.c : added :environment keyword argument to load and
	  load-from-port; this is necessary to force a specific file to
	  be loaded in the environment specified by the caller.  (Since
	  'load' form itself is evaluated at run time, even
	  (eval '(load "foo") module) doesn't work, for the module
	  given to 'eval' is only effective during compiling the form
	  (load "foo").)

2002-12-29  Shiro Kawai  <shiro@acm.org>

	* src/load.c, src/read.c, ext/uvector/uvector.c.sh : added
	  read-context flag to control whether literal structure should
	  be immutable or not.   The default ScmRead reads as mutable
	  object, while ScmLoad reads as immutable object.
	  Currently this only affects literal uvectors.  (It's debatable
	  that string should obey this flag).

2002-12-26  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/uri.scm (uri-encode): process byte-wise, instead of
	  character-wise, to avoid complexity of different character
	  encodings.  Suggested by Fumitoshi UKAI.

2002-12-25  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/* : added immutability check for all destructive ops.
	  made literal uvectors immutable.
	* doc/gauche-ref.texi : added japanese translation of rfc.http etc.
	  provided by Makoto Satoh.

2002-12-24  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/uvector.[ch].sh : added immutable and owner field
	  to uvector (preparation of immutable uvectors, and uvectors
	  pointing to somebody else's memory).

2002-12-23  Shiro Kawai  <shiro@acm.org>

	* ext/digest/sha.h : removed dependency on sys/cdefs.h
	* src/genstub : added support of direct-supers specifier in
	  define-cclass.  NB: this is an ad hoc kludge.  Define-cclass
	  need to be redesigned.

2002-12-22  Shiro Kawai  <shiro@acm.org>

	* src/string.c : made string equality be tested by separate function
	  from comparison, so that a complete string and incomplete string
	  can be tested.
	* src/class.c, src/gauche/class.h : made generic allocation macro
	  SCM_ALLOCATE to call Scm_AllocateInstance, which initializes
	  Scheme-slots defined in Scheme subclasses safely.  The task used
	  to be a responsibility of *_allocate method, which was error-prone.

2002-12-21  Shiro Kawai  <shiro@acm.org>

	* src/genstub : supports :base qualifier in define-cclass to allow
	  to define base class in stub file.
	* lib/text/csv.scm : provisional fix for the problem that the
	  consecutive tabs are ignored even if the separator is a tab.
	  The real fix should be to add the flag to csv-reader to
	  tell whether the reader should strip whitespaces surrounding
	  field data.
	* ext/mt-random/mt-lib.stub : fixed a bug the mt-set-random-seed!
	  always sets the same value if a bignum is given.

2002-12-19  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/regexp.scm (rxmatch-case): catch the case that caused
	  infinite loop (patch from Kimura Fuyuki)

2002-12-17  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-0.scm : added srfi-31 and some missing feature ids.

2002-12-14  Shiro Kawai  <shiro@acm.org>

	* release 0.6.6
	* ext/digest/{configure.in,md5.h,sha.h} : slight fix for portability.
	* src/vm.c : added Scm_VMApply3

2002-12-13  Shiro Kawai  <shiro@acm.org>

	* ext/auxsys/* : moved sys-getgroups, sys-getlogin and sys-localeconv
	  here.
	* src/genstub : have been generating a redundant type checking code
	  for scheme object.  fixed.

2002-12-12  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/test.scm, test/* : added test-error API, and rewrote
	  some tests with it.
	* src/port.c, src/portapi.c : added Scm_PortSeek() API.
	* src/stdlib.stub : allow :if-exists :overwrite option in
	  open-output-file.

2002-12-11  Shiro Kawai  <shiro@acm.org>

	* ext/digest/*.scm, lib/util/digest.scm : define digest-string
	  in util.digest (patch from Kimura Fuyuki).
	* src/list.c, src/stdlib.stub, lib/gauche/listutil.scm : made
	  caar..cddr be inlined.  got rid of less-frequently used
	  caaar...cddddr from gosh core and defines them in autoloaded
	  Scheme file.

2002-12-10  Shiro Kawai  <shiro@acm.org>

	* src/regexp.c : made regexp printed as #/.../
	* lib/gauche/collection.scm (call-with-iterator): fixed a bug
	  (patch provided from Kimura Fuyuki).
	* ext/digest/*, lib/util/digest.scm : revise some APIs.

2002-12-09  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/hook.scm : added gauche.hook.
	* src/port.c, src/vm.c, src/extlib.stub : allow with-*-to-port and
	  dynamic-wind to take non-procedure objects, enables object-apply
	  hook.
	* src/gauche/vm.h, src/vm.c, src/parameter.c : added per-thread
	  parameter support.

2002-12-08  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/mop/validator.scm (compute-get-n-set): added
	  :post-validator slot option.

2002-12-06  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-14.scm : made ucs-range->char-set work on non-ASCII chars.
	* src/string.c : added string-pointer-ref.
	* lib/gauche/stringutil.scm, src/extlib.stub, src/gauche-init.scm:
	  now string-split can accept not only a character but also a char-set,
	  a string, a regexp or a predicate.  The character case is handled
	  by built-in (Scm_StringSplitByChar, %string-split-by-char), and
	  the other cases are handled by autoloaded module gauche.stringutil.
	* src/extlib.stub :added make-byte-string.
	* lib/util/digest.scm, lib/rfc/hmac.scm, ext/digest/* : renamed
	  *-update and *-final for *-update! and *-final!, respectively.
	* lib/srfi-31.scm : added srfi-31.
	* src/object.scm : fixed the default method of slot-unbound and
	  slot-missin to avoid infinite loop in formatting the error message
	  via write-object.

2002-12-05  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/regexp.c (regexp-quote): added regexp-quote,
	  contributed by Alex Shinn
	* src/regexp.c : fixed a bug that didn't treat escaped '$' at
	  the end of expr as a literal character.
	* lib/gauche/time.scm : fixed misspelling of slot name (patch from
	  Kimura Fuyuki).

2002-12-04  Shiro Kawai  <shiro@acm.org>

	* src/proc.c, src/extlib.stub : added has-setter?
	* lib/gauche/mop/propagate.scm : added <propagate-mixin>.

2002-12-03  Shiro Kawai  <shiro@acm.org>

	* src/gauche/arith_i386.h (UADD): modified to avoid a "register
	  spilling error" on some processors.
	* lib/gauche/procedure.scm (let-keywords*): take care of syntactic
	  unwrapping in case when let-keywords* appear in the expanded
	  form of R5RS macro.
	* src/list.c : let <list> inherit <sequence> for clearity.

2002-12-02  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-19/format.scm : fixed a bug in locale-dependent date
	  reader (Thanks to Shin-ichi Hirata for a patch).
	* ext/digest/*, lib/util/digest.scm, lib/rfc/hmac.scm : integrated
	  Kimura Fuyuki's message digesting packages.

2002-12-01  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/logger.scm : added lock-policy slot to <log-drain>
	  class to specify the file lock policy.  This allows logger to
	  be used in MacOSX.
	* lib/file/util.scm (define-time-comparer): fixed a bug that caused
	  file-mtime<? etc. to fail if filename is given.

2002-11-29  Shiro Kawai  <shiro@acm.org>

	* ext/net/addr.c (Scm_MakeSockAddr): fixed a nasty bug that
	  potentially clobbers heap area.  (Thanks to KIMURA Shigenobu
	  for helping to identify the bug).
	* doc/Makefile.in : put a sed line in generating html docs to fix
	  LANG attribute, as suggested by Kimura Fuyuki.

2002-11-28  Shiro Kawai  <shiro@acm.org>

	* src/read.c : fixed SRFI-30 syntax reader (Thanks to KIMURA
	  Shigenobu for pointing out this bug).
	* src/compile.c, src/vm.c : dropped TAILBIND instruction, for it
	  doesn't work when the constructing argument frame is moved
	  to the heap by call/cc.  I can't come up a nice way to fix that
	  without performance penalty.  Instead, the do form is expanded
	  into letrec form in the compiler.  And believe it or not, the
	  performance is actually better.
	  The compiler is also modified to keep hygienity on some
	  compiler-inserted symbols.
	* src/regexp.c (re_exec_rec): fixed a bug in matching multibyte
	  char against RE_NSET1.  (Thanks to Alex Shinn for reporting this).

2002-11-25  Shiro Kawai  <shiro@acm.org>

	* doc/gauche-ref.texi : applied patch from Kimura Fuyuki and
	  Jiro KANAYAMA.  Added descriptions about SRFI-10 syntax as well.

2002-11-24  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/cookie.scm, doc/gauche-ref.texi : applied patch from
	  KIMURA Shigenobu.

2002-11-20  Shiro Kawai  <shiro@acm.org>

	* src/read.c, src/gauche-init.scm, lib/gauche/interpolate.scm :
	  made string interpolation syntax is expanded in reader instead
	  of in macro; if it is done in macro, the read symbols do not
	  properly "see" their surrounding environment, and fail to work
	  if the referenced symbols are introduced by R5RS macro.
	  For example: (define-syntax foo (syntax-rules () ((_ a) #`",a")))
	  fails in the previous version.
	* src/main.c : removed the special treatment of argv[0]=="./gosh"
	  for in-place test; instead, added -ftest option to do the job.

2002-11-19  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/822.scm : deal with empty header (patch from Kimura
	  Shigenobu)

2002-11-17  Shiro Kawai  <shiro@acm.org>

	* src/string.c (Scm_MakeFillString): added arg range check (pointed
	  out by Kimura Fuyuki).

2002-11-15  Shiro Kawai  <shiro@acm.org>

	* release 0.6.5

2002-11-15  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/reload.scm : updated to the Alex's newest version.

2002-11-13  Shiro Kawai  <shiro@acm.org>

	* lib/port/* -> lib/compat/* : moved.  port.* is obsoleted.
	* lib/japanize-euc.scm : moved to test/japanize-euc.scm
	* lib/rfc/http.scm : added

2002-11-12  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/uri.scm (uri-compose) : added uri-compose.
	* src/read.c (read_internal): Finally, make old incomplete syntax
	  #"..." obsolete.  The reader signals an error.
	* lib/gauche/portutil.scm, src/gauche/extlib.stub : Renamed
	  gauche/port.scm to gauche/portutil.scm.  Implemented copy-port
	  in Scheme instead of C (actually, it became faster by
	  locking the port during copying).

2002-11-10  Shiro Kawai  <shiro@acm.org>

	* ext/charconv/charconv.c (conv_input_filler): fixed a bug
	  of attempting to read from closed remote port.  (pointed out
	  by Kimura Fuyuki).
	* lib/srfi-19.scm : added missing exports (pointed out by
	  Kimura Fuyuki).

2002-11-09  Shiro Kawai  <shiro@acm.org>

	* gc/* : updated to Boehm GC 6.1
	* lib/gauche/reload.scm : added module reloading utility
	  contributed by Alex Shinn.

2002-11-08  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (Scm_VMApply): check if the length of argument list is
	  smaller than the VM stack size; otherwise VM can't handle it.
	  This fixes SEGV problem reported in bug #634598.
	* src/genstub : typo fix (patch from Kimura Fuyuki).
	* various files: started nvm-experiment branch for next VM
	  experiments.

2002-11-01  Shiro Kawai  <shiro@acm.org>

	* src/string.c (Scm_DStringAdd): fixed a bug that didn't handle
	  complete-string addition to DString.
	* src/write.c : fixed a format problem that counts # of characters
	  incorrectly when maxcol argument is given to the ~a or ~s directive
	  (a bug pointed out by Kimura Shigenobu).  Test cases for this is
	  also added.

2002-10-30  Shiro Kawai  <shiro@acm.org>

	* src/vm.c, src/gauche/vm.h : start adding experimental new VM
	  code under USE_NVM cpp flag.  not working yet.

2002-10-25  Shiro Kawai  <shiro@acm.org>

	* various files: removed obsoleted macro l_ and reference to
	  gauche.get-opt.  rewrote some procedures using new macros.
	* lib/gauche/procedure.scm : moved let-optionals* here, with new
	  macros get-optional and let-keyword*.  These are "official"
	  autoloaded macros now.   Also added procedures any-pred and
	  every-pred.
	* src/gauche-init.scm : added get-keyword* macro

2002-10-24  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/listener.scm : fixed a bug around error handling.
	  The read buffer is cleared on error, and make prompt printed
	  correctly.

2002-10-23  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interactive/info.scm : use gauche.config module to
	  get info file path.
	* lib/gauche/config.scm : added

2002-10-21  Shiro Kawai  <shiro@acm.org>

	* src/exclib.stub (report-error): exposed Scm_ReportError to Scheme.
	* lib/gauche/mop/* : added <singleton-mixin> and <validator-mixin>
	  classes, to use the features of <singleton-meta> and
	  <validator-meta> conveniently.
	* lib/gauche/listener.scm : added.  working, but error handling
	  is not completed.

2002-10-20  Shiro Kawai  <shiro@acm.org>

	* src/genstub : renamed ulong -> u_long etc. in the generated
	  code.  (a bug pointed out by Kimura Fuyuki)

2002-10-19  Shiro Kawai  <shiro@acm.org>

	* src/class.c (method_initialize): allow methods without required
	  arguments.  (a bug pointed out by Kimura Fuyuki)

2002-10-17  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/procedure.scm (arity-at-least-value): fixed a bug
	  (Thanks to Kimura Fuyuki).
	* ext/auxsys/auxsyslib.stub (sys-times): fixed a bug that caused
	  sys-times fails on some platforms (Thanks to Kimura Fuyuki).

2002-10-16  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/uvlib.stub.sh : fixed a bug that prevents uvlib.c
	  from compiling under some platforms.
	* doc/gauche-ref.texi : applied a patch to fix many of erroneous
	  examples.  (Thanks to Kimura Fuyuki for providing the patch).
	* src/gauche-config.in : added --mandir and --infodir

2002-10-14  Shiro Kawai  <shiro@acm.org>

	* release 0.6.4
	* doc/Makefile.in : reverted to use autoconf's default mandir and
	  infodir.  For rpm files, let spec file override them.  (Suggested
	  by MINOURA Makoto).
	* ext/uvector/* : added read-block!, write-block, and uvector-alias.
	* lib/gauche/singleton.scm : moved to lib/gauche/mop/singleton,
	  keeping the old file for compatibility.
	* lib/gauche/propagated-slot.scm : renamed to propagate.scm.

2002-10-13  Shiro Kawai  <shiro@acm.org>

	* src/bignum.c (Scm_MakeBignumFromUIArray): accepts 2's complement
	  representation if sign == 0.
	* ext/uvector/* : store true 64bit integer in s64 and u64 vector
	  on 32-bit architecture.
	* lib/file/util.scm : added home-directory
	* src/main.c : added -A and -E option.  makes -A, -I, -E, -e, -l, -u
	  options be processed in the order of appearance.
	* doc/gauche.ref.texi : added @direntry (suggested by MINOURA Makoto).

2002-10-12  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-1/* : replaced several non-tail-recursive calls for
	  tail-recursive calls, since tail-recursion + reverse! is faster
	  in Gauche than simple non-tail-recursive calls.
	* lib/gauche/time.scm : added

2002-10-11  Shiro Kawai  <shiro@acm.org>

	* src/port.c, lib/gauche/port.scm, src/extlib.stub : exposed 'unsafe'
	  port operations as well as %with-port-locking, for efficient port
	  handling.  Removed redundant C-version of port->string (it hasn't
	  been used anyway).

2002-10-06  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/mop/propagate-slot.scm : added
	* lib/gauche/validator.scm, lib/gauche/mop/validator.scm :
	  moved gauche.validator to gauche.mop.validator.
	  keep gauche.validator as an alias of gauche.mop.validator.
	* test/logger.scm ("log-open"): fixed test case that failed when
	  the day of month was between 1 and 9.

2002-09-26  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/uvlib.stub.sh : added conversion routines between
	  string and uvectors (u8, s8, u32, s32).  These are convenient to
	  manipulate strings in low-level.
	* ext/uvector/uvector.[ch].sh : changed uvector struture to have
	  separate data area from the object header.  This increases the
	  cost of allocation, but enables the future extensions to share
	  the vector storage.
	* ext/charconv/jconv.c : use internal conversion routine for
	  "iso-2022-jp" as well.

2002-09-25  Shiro Kawai  <shiro@acm.org>

	* ext/charconv/jconv.c (jconv_iconv_reset): fixed a bug that caused
	  infinite loop when iconv is used and the output encoding is
	  stateful.   A bug reported by Satoru Takabayashi.

2002-09-24  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/sequence.scm : make gauche.sequence inherit
	  gauche.collection.   Added (setter subseq).

2002-09-21  Shiro Kawai  <shiro@acm.org>

	* release 0.6.3
	* ext/syslog/* : added syslog(3) interface.
	* lib/gauche/logger.scm : allow a procedure for log prefix generator.
	  Also integrated to the syslog feature.

2002-09-20  Shiro Kawai  <shiro@acm.org>

	* src/read.c, src/string.c : changed incomplete string syntax
	  from #"..." to #*"...".  The old syntax is still recognized,
	  but the written representation is switched to the new syntax.
	  This is a preparation for string interpolation to take #"..." syntax.
	* lib/gauche/object.scm : added object-apply definitions for
	  <regexp> and <regmatch>.
	* src/char.c (Scm_CharSetRead): support POSIX character class
	  notation such as '[:alpha:]'.
	* src/regexp.c, src/char.c, src/read.c, src/extlib.stub : added
	  case-fold regexp match.  New syntax #/.../i for it.

2002-09-19  Shiro Kawai  <shiro@acm.org>

	* src/vm.c, src/compile.c, src/gauche/vminsn.h : implemented
	 "combined push" instructions, like LREF-PUSH and PUSHI.
	* src/compile.c : fixed a bug that didn't add bind-info of
	  internal defines properly.

2002-09-18  Shiro Kawai  <shiro@acm.org>

	* src/proc.c, src/vm.c, src/class.c : extend object-apply mechanism
	  to setter, i.e. defining (setter object-apply) allows non-procedural
	  object to be used as (set! (obj arg ...) arg ...).
	* ext/mt-random/mt-random.scm, ext/threads/threads.scm : make symbols
	  in *.so exported.  (Based on the discussion in gauche-devel).

2002-09-17  Shiro Kawai  <shiro@acm.org>

	* src/vm.c, src/compile.c, src/proc.c : changed VM_LAMBDA instruction
	  as well, to keep binding information in 'bind-info' pair attribute.
	  cleaned up stack dump and debug code to use the new bind-info
	  attribute.

2002-09-16  Shiro Kawai  <shiro@acm.org>

	* src/vm.c, src/compile.c : changed VM_LET, VM_VALUES_BIND and
	  VM_TAILBIND not to take extra debug info word after the instruction.
	  This shortens instruction stream and makes execution slightly faster.
	  The debug information is kept in the pair attribute 'bind-info'
	  of the instruction stream.
	* src/vm.c : fixed a problem of inlined procedures being confused
	  if they passed multiple values.

2002-09-15  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/quoted-printable.scm : fixed several bugs using test cases.

2002-09-12  Shiro Kawai  <shiro@acm.org>

	* lib/file/util.scm : fixed a problem in directory-fold etc. that
	  failed when there was a dangling symlink.
	* src/promise.c : fixed a bug in force.
	* src/core.c : added Scm_RegisterFinalizer
	* configure.in, src/gauche/config.h.in : added GAUCHE_MAJOR_VERSION et al.
	* src/gauche.h : added SCM_DECL_{BEGIN|END} macro

2002-09-11  Shiro Kawai  <shiro@acm.org>

	* src/compile.c, src/gauche/vm.h : changed the compiler to
	  generate local frame referencer and modifier counting from the end
	  of the frame, and modified ENV_DATA macro accordingly.
	* src/vm.c : further optimization, and fixed a bug in the last change
	  that left env ptr invalid after tail call argument shifting.
	* src/compile.c, src/vm.c : further optimization of omitting an empty
	  environment frames.

2002-09-10  Shiro Kawai  <shiro@acm.org>

	* src/stdlib.stub, src/proc.c : let map and for-each accept non-procedure
	  object as the 1st arg so that object-apply hook can work.
	* src/vm.c : optimized subr call by omitting environment frame header.
	* src/vm.c, src/class.c : added object-apply hook.  If non-procedure
	  object is applied, like ("abc" 1), a method object-apply is
	  called as (object-apply "abc" 1).

2002-09-09  Shiro Kawai  <shiro@acm.org>

	* src/vm.c, src/gauche/vm.h : changed environment frame layout.  see
	  the comment of vm.h.
	* src/vm.c, src/gauche/vminsn.h, src/stdlib.stub : inline apply to
	  use SCM_VM_APPLY instruction.

2002-09-08  Shiro Kawai  <shiro@acm.org>

	* src/genstub (get-c-name): changed to preserve case of the input
	  scheme name.
	* src/gauche/arith_i386.h, configure.in, src/gauche/config.h.in :
	  use some inline asm for primitive ops of bignum arithmetic.

2002-09-07  Shiro Kawai  <shiro@acm.org>

	* configure.in, doc/Makefile.in : changed autoconf variable GZIP to
	  GZIP_PROGRAM, for it interferes gzip's operation.

2002-09-06  Shiro Kawai  <shiro@acm.org>

	* src/genstub : fixed a bug that generates bad C predicate for <uint32>
	  stub type.

2002-09-02  Shiro Kawai  <shiro@acm.org>

	* release 0.6.2
	* src/module.c : fixed for cygwin.
	* src/syslib.stub : dropped sys-usleep, for the prototype of usleep(3)
	  doesn't agree among BSD and SysV, and it's obsolete anyway.
	  Instead, added sys-nanosleep.

2002-09-01  Shiro Kawai  <shiro@acm.org>

	* src/regexp.c : fixed a bug that compiled a regexp like #/a|(b)|c/
	  incorrectly.  (Thanks to Alex Shinn for pointing it out).
	* src/repl.c : changed API of read-eval-print-loop.
	* src/main.c (usage): added explanation of -l and -e options.

2002-08-29  Shiro Kawai  <shiro@acm.org>

	* src/module.c (Scm_FindBinding): searches parent modules of imported
	  modules as well.
	* src/gauche-init.scm (extend) : if specified module is not found,
	  try %require.
	* src/repl.c (repl_proc): fixed a bug that didn't treat arguments
	  correctly.

2002-08-28  Shiro Kawai  <shiro@acm.org>

	* genstub : renamed the stub directive define-const to define-constant
	  for consistency, and allow boolean value for it.
	* src/signal.c : changed the default handler behavior for SIGHUP,
	  SIGQUIT and SIGTERM to call Scm_Exit() instead of raise an error.
	  (This fixes the problem of remaining process under Emacs).
	* src/write.c (Scm_Vprintf): added check if argument for %s is NULL.

2002-08-27  Shiro Kawai  <shiro@acm.org>

	* src/class.c (initialize_builtin_class) : made it recognize inherited
	  slots properly.
	* ext/threads/thrlib.stub : adapted to the above fix of class.c.
	* lib/gauche/mop/instance-pool.scm : added expreimentally.

2002-08-26  Shiro Kawai  <shiro@acm.org>

	* lib/util/queue.scm : added queue-length, list->queue, queue->list,
	  find-in-queue, remove-from-queue!.
	* src/genstub : fixed a bug in string literal handling.

2002-08-25  Shiro Kawai  <shiro@acm.org>

	* src/genstub : snapshot of new architecture.  Old syntax of
	  define-symbol (with initialization) is obsoleted and replaced by
	  define-variable.
	* src/extlib.stub : added keyword->string

2002-08-24  Shiro Kawai  <shiro@acm.org>

	* src/genstub : reorganizing code.
	* lib/gauche/interactive.scm (apropos): adapted to the new module
	  inheitance mechanism.

2002-08-23  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub : added fixnum? and bignum?
	* src/string.c, src/extlib.stub : added string-pointer-copy,
	  string-pointer-byte-index and string-pointer-dump (under
	  SCM_DEBUG_HELPER), as suggested by Alex Shinn.

2002-08-22  Shiro Kawai  <shiro@acm.org>

	* src/gauche-init.scm, src/module.c : made them more robust for
	  invalid arguments.
	* ext/uvector/srfi-4.scm : adapted to extend syntax.

2002-08-20  Shiro Kawai  <shiro@acm.org>

	* src/module.c, src/extlib.stub, src/gauche-init.scm : implements
	  module inheritance by extend syntax.

2002-08-19  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h : added SCM_SIGPENDING macro (needed in gauche-gtk)

2002-08-18  Shiro Kawai  <shiro@acm.org>

	* src/read.c : added SRFI-30 nested multiline comment (#|...|#).

2002-08-17  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/vm/debugger.scm : fixed an error in enable-debug
	  (was using obsolete 'current-vm' procedure).
	* src/genstub : recognize <short>, <ushort> as stub types.

2002-08-16  Shiro Kawai  <shiro@acm.org>

	* src/module.c (Scm_DefineConst): don't issue warning if the redefined
	  constant has the same value (in the sense of equal?) to the old one.
	* src/port.c (file_filler): fixed a bug that file_filler returned 0
	  when read(2) was interrupted by a signal, causing Scm_Read to
	  return EOF in such case.  (Thanks to Julian Fondren for pointing
	  out the bug.)

2002-08-10  Shiro Kawai  <shiro@acm.org>

	* src/read.c: protect read ctor table by mutex.

2002-08-08  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/uvector.scm : defines object-[+-*/] methods for uvectors.
	* src/number.c : adding generic arithmetic mechanism: operations such
	  as '+' calls a generic function (object-+ for '+') when the
	  argument is not a built-in numeric type.

2002-07-31  Shiro Kawai  <shiro@acm.org>

	* release 0.6.1
	* src/main.c : warn if pre-0.5 compatible mode is used.
	* src/gauche/vm.h, src/error.c, src/vm.c : prevent an infinite loop
	  when an uncaptured erorr occurs inside the error reporter.
	  Introduced SCM_ERROR_BEING_REPORTED runtime flag to keep the
	  dynamic context of error handling; see the comment of Scm_ReportError
	  and Scm_VMWithErrorHandler.

2002-07-30  Shiro Kawai  <shiro@acm.org>

	* src/genstub : changed suffixes of autogenerated auxiliary C
	  variable names to avoid potential name collision.   For example,
	  "__NAME" was used for C variable to keep the name of symbols,
	  instead of "_NAME".
	* ext/dbm/gdbm.stub, ext/dbm/ndbm.stub : changed C predicate name
	  to follow the convention (SCM_GDBM_P -> SCM_GDBMP, etc).

2002-07-28  Shiro Kawai  <shiro@acm.org>

	* src/vm.c (Scm_VMDefaultExceptionHandler): fix the problem that
	  user-defined error handler can't get a proper stack trace.
	* gc/configure.in: enable DONT_ADD_BYTE_AT_END option.  Otherwise,
	  pair attribute field of cons wasn't scanned properly, losing
	  source-code information after GC.

2002-07-23  Shiro Kawai  <shiro@acm.org>

	* src/genstub : obsoleted 'assert' form, replacing it for bigloo-like
	  argument type annotations.  revised stub type system management.
	* various *.stub : rewrote according to the above change.

2002-07-22  Shiro Kawai  <shiro@acm.org>

	* src/genstub : added include, define-const, define-enum and return
	  forms.
	* various *.stub : rewrote C-enum stuff by define-enum form,
	  and many SCM_RETURNs by return form.

2002-07-21  Shiro Kawai  <shiro@acm.org>

	* src/Makefile (INSTALL_SUBHEADERS): gauche/class.h to be installed.

2002-07-18  Shiro Kawai  <shiro@acm.org>

	* release 0.6
	* DIST : includes pre-extracted info files in the distribution;
	  'extract' script doesn't work unless gosh is compiled with euc-jp
	  support.
	* doc/Makefile.in : fixed info file installation when info directory
	  doesn't exist.
	* aclocal.m4, configure.in, src/gauche-config.in : save the default
	  CFLAGS in gauche-config.  includes AC_GAUCHE_OPTFLAGS in
	  AC_GAUCHE_FLAGS.

2002-07-17  Shiro Kawai  <shiro@acm.org>

	* src/main.c (main): fixed a bug that didn't flush buffered ports
	  after Scheme main procedure returns.  (Thanks to Fujii-san for
	  pointing this out).
	* all configure.in's and Makefile.in's : set OPTFLAGS on some
	  platforms by default.  propagates it to submodules.
	* src/port.c, src/write.c, src/gauche/port.h : inlined port lock
	  primitives in write.c.
	* gc/configure.in: disabled THREAD_LOCAL_ALLOC for now, since it
	  caused significant performance loss on Linux/x86 when gosh is
	  compiled with pthreads but not using threads.  The difference
	  of GC lock implementation may be the cause.  Disabling local alloc
	  may damage multithreaded app, but at least on gosh, MT is more
	  for asynchronous event handling than performance benefit, I think.

2002-07-16  Shiro Kawai  <shiro@acm.org>

	* src/load.c (break_env_paths): fixed a bug (thanks to Alex Shinn).
	* configure.in, src/gauche/config.h.in : check existence of sched_yield
	  and the library that includes it.
	* src/core.c : refer to GC_pthread_create so that the GC thread
	  module will be linked in the gosh body.
	* src/syslib.stub : avoid calling pause() from sys-pause; it won't
	  work in race conditions.  sys-pause now uses sigsuspend instead.
	  also added sys-sigsuspend.
	* src/signal.c, src/main.c : fixed a bug that messed up threads'
	  signal mask.  Also add Scheme level support of sigsuspend.

2002-07-15  Shiro Kawai  <shiro@acm.org>

	* src/exclib.stub, src/extlib.stub, ext/threads/thrlib.stub : moved
	  the thread-exception stuff from core interpreter to ext/threads.
	  moved back the vm debugging support procs from ext/threads to
	  src/extlib.

2002-07-14  Shiro Kawai  <shiro@acm.org>

	* src/write.c (Scm_Vprintf): fixed to retrieve varargs before calling
	  a closure function, so that we can avoid fiddling va_list around.
	* src/gauche.h, ext/threads/* : fixed some declarations for cygwin.

2002-07-13  Shiro Kawai  <shiro@acm.org>

	* src/thread.c, src/mutex.c, ext/threads/* : moved Scheme-level
	  thread support to ext/threads (module gauche.threads).  This keeps
	  gosh core small, and also explicitly specifying (use gauche.threads)
	  may be a good idea for readers to be aware of the use of threads.
	* src/read.c, src/write.c : let Scm_Read and Scm_Write (and likes)
	  to hold the port lock so that they can call faster version of
	  port primitives.
	* src/port.c (PORT_UNLOCK): fixed a bug that didn't unlock mutex
	  properly inside recursive lock.

2002-07-12  Shiro Kawai  <shiro@acm.org>

	* gc/configure.in : undefine GC_GCJ_SUPPORT.
	* ext/net/net.c (Scm_SocketGetOpt): fixed a bug that may returned
	  smaller data.
	* ext/uvector/uvector.c.sh, ext/uvector/uvectorP.h : fixed a bug
	  that caused s64/u64 vector code crash.  SCM_NEW2 should be used
	  instead of SCM_NEW_ATOMIC2 for these vectors on ILP32 architecture.
	* configure.in, src/gauche/config.h.in : set proper thread-supporting
	  #defines accodring to the platform.

2002-07-11  Shiro Kawai  <shiro@acm.org>

	* src/port.c : added error flag to ScmPort and mark the port that
	  raised an error.  Avoid calling flush to close such ports.
	* lib/gauche/process.cm (call-with-input-process) : avoid sending
	  SIGTERM in call-with-input-process, for it may not succeed.
	  Instead, it counts on that closing pipe causes termination of
	  the source process.
	* configure.in : check -lpthread by AC_CHECK_LIB.  For FreeBSD,
	  check -lc_r as well.
	* doc/Makefile.in :
	* lib/gauche/interactive/info.scm : added gauche.interactive.info,
	  on-line info viewer (experimental).
	* lib/file/util.scm (find-file-in-paths) : fixed keyword argument
	  spec to match the document.

2002-07-10  Shiro Kawai  <shiro@acm.org>

	* doc/Makefile.in : added rule to create gzipped info files
	* src/main.c (version): the output of gosh -V shows pthreads
	  availability.
	* lib/text/info.scm : added text.info module that can read and
	  parse info files.
	* lib/gauche/interpolate.scm (%string-interpolate): fixed a bug
	  that doesn't interpolate variables starting with 'f' properly.

2002-07-09  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h, src/char.c, src/regexp.c, src/read.c : consolidated
	  \x, \u and \U escape sequence reader of literal string, regexp and
	  char-set.
	* various files: changed macro GAUCHE_USE_PTHREAD to
	  GAUCHE_USE_PTHREADS.

2002-07-08  Shiro Kawai  <shiro@acm.org>

	* src/thread.c (Scm_ThreadStart): made all signals blocked for newly
	  created thread by default.
	* src/main.c (sig_setup): enable SIGCHLD and SIGWINCH to be handled
	  in Scheme.  They are ignored by default, but a handler can be set.
	* src/signal.c, src/syslib.stub : added get-signal-handlers,
	  sys-sigset-fill!, sys-sigset-empty!, sys-sigmask.
	* lib/gauche/signal.scm : made with-signal-handlers work with the
	  new signal handling mechanism

2002-07-07  Shiro Kawai  <shiro@acm.org>

	* src/signal.c, src/gauche.h, src/vm.c, src/extlib.stub: revised
	  signal handling mechanism.  Now the signal handler vector is
	  shared by all threads.  This check-in breaks backward compatibility
	  of the signal handling mechanism---the compatible
	  with-signal-handlers interface should be written later.

2002-07-06  Shiro Kawai  <shiro@acm.org>

	* src/exclib.stub : fix slot name of uncaught-exception.
	* ext/net/net.c (Scm_SocketBind): call getsockaddr to get the actual
	  address after binding.  (Thanks to ODA Hideo for a patch).
	* src/vm.c, src/thread.c : separated Scheme thread API-related
	  routines from vm.c to thread.c.  Fixed thread cleanup routine;
	  now it's called by pthread_cleanup_push mechanism.
	  Scm_ThreadTerminate is implemented.

2002-07-05  Shiro Kawai  <shiro@acm.org>

	* src/port.c: added mutex protection to getc, getz and readline.
	  separated duplicated code of 'safe' and 'unsafe' version of
	  generic interface into portapi.c, and include it twice.

2002-07-04  Shiro Kawai  <shiro@acm.org>

	* src/repl.c : rewrote to use trampoline instead of C-level loop.
	  This avoids extra C-stack overhead, and makes captured toplevel
	  continuation valid throughout the entire session.
	* src/error.c : added Scm_ReportError() formerly defined in vm.c as
	  report_error.
	* src/vm.c : fixed a bug that caused run_loop() to return prematurely.

2002-07-02  Shiro Kawai  <shiro@acm.org>

	* src/port.c, src/gauche.h : first attempt of protecting port access
	  in threaded env.  Finished for putb, putc, puts and putz.
	* src/vm.c (Scm_VMCallCC): fixed to take a procedure with variable-
	  length arguments.
	* configure.in: changed thread option from --with-thread to
	  --enable-threads to match the same configuration option in GC.

2002-07-01  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/test.scm : fixed test cases accodring to the fix
	  of eqv? and equal?
	* src/boolean.c (Scm_EqvP, Scm_EqualP): fixed a bug that made
	  (eqv? 1 1.0) ==> #t and (equal? 1 1.0) ==> #t, which
	  should return #f.

2002-06-30  Shiro Kawai  <shiro@acm.org>

	* src/class.c, src/boolean.c, src/compare.c, src/extlib.stub : added
	  compare procedure and object-compare generic function.  Changed
	  the signature of ScmClass.compare so that it can be called both
	  equality test (delegates to object-equal?) and comparison (object-
	  compare).

	* release 0.5.7
	* src/class.c : added object-equal? generic function to extend equal?.
	* ext/uvector/array.scm (generate-amap): fixed a bug in the boundary
	  check that passes an index equal to the array-end.

2002-06-28  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/array.scm : more array utils, and array reader/write
	  method.

2002-06-27  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/array.scm : moved to ext/uvector.  added some more
	  array utilities.
	* ext/uvector/*, src/read.c : uniform vector is now supported in
	  gauche.uvector module instead of srfi-4.  srfi-4 module is kept
	  for compatibility.

2002-06-26  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-26.scm, test/srfi.scm, src/gauche-init.scm : added SRFI-26
	  and its test, and set cut and cute to be autoloaded.
	* src/extlib.stub (format): allow to omit the port argument, so that
	  it conforms SRFI-28 (basic format strings).

2002-06-25  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/* : allow a list and a vector as the second operand
	  of most vector arithmetic procedures.

2002-06-24  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/* : added TAGvector-range-check, TAGvector-clamp,
	  and TAGvector-clamp!.
	* src/vector.c, src/extlib.stub : added start/end optional argument
	  for vector->list (consistency with SRFI-13 string->list), and
	  added vector-copy.

2002-06-23  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/array.scm : added.  right now, it is just a prototype.

2002-06-22  Shiro Kawai  <shiro@acm.org>

	* src/gauche/arith.h : added macros that checks integer arithmetic
	  overflow.
	* ext/uvector/uvutil.c.sh : added TAGvector-dot, dot product operator.

2002-06-21  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/uvectorP.h : fixed bugs on LP64 architecture
	* missing, ltmain.sh : moved from gc/* to here, so that other
	  autoconf scripts (config.sub, config.guess and install-sh) can
	  be shared by gc and libgauche.

2002-06-20  Shiro Kawai  <shiro@acm.org>

	* gc/* : upgraded to BoehmGC 6.1alpha5.
	* src/core.c : moved GC registration code for dynamic-loadable
	  extensions (used to be GC_register_dlopen_data) here, renaming to
	  Scm_RegisterDL, so that I don't need to touch gc sources.
	* configure.in, Makefile.in, src/Makefile.in : changed for new
	  gc build process.

2002-06-19  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/* : revised macro strategy of uvutil.c.  Adding tests
	  for arithmetic functions.

2002-06-18  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/* : finishing uniform vector utility functions.

2002-06-17  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/* : adding uniform vector utility functions (not
	  finished yet)
	* src/bignum.c, src/gauche/arith.h, src/test-arith.c : separated
	  basic integer arithmetic macros to arith.h, for there will be
	  machine-dependent optimizations.  Added C test program for
	  arith.h macros.
	* src/read.c : added reader syntax for UCS characters: #\uXXXX
	  for character literal,  and \uXXXX escape sequence in string literal.

2002-06-16  Shiro Kawai  <shiro@acm.org>

	* src/char.c, src/extlib.stub : added ucs<->char conversion routine
	  scheme: ucs->char, char->ucs, c: Scm_UcsToChar, Scm_CharToUcs.
	* ext/charconv/cvt.scm (generate-utf8->eucj): bug fix: the table for
	  utf8 [d0 xx] and [d1 xx] sequence was missing in utf8->eucjp table.
	* ext/xlink : avoid calling sys-symlink when there's already a link.
	* src/read.c (maybe_uvector): use Scm_Require instead of Scm_Load
	  to initialize Scm_ReadUvectorHook.

2002-06-14  Shiro Kawai  <shiro@acm.org>

	* release 0.5.6

2002-06-13  Shiro Kawai  <shiro@acm.org>

	* ext/charconv.c : fixed int* and size_t* discrepancy
	* src/port.c (Scm_Getc): fixed a bug that getc didn't work when
	  the size of character was bigger than the size of the buffer
	  (pretty rare case, but bug is bug).
	* src/error.c, src/extlib.stub : fixed a bug in Scm_Warn.  Added
	  Scheme-level interface (warn).

2002-06-12  Shiro Kawai  <shiro@acm.org>

	* lib/file/util.scm : experimentally added file->string, file->list,
	  file->string-list and file->sexp-list.
	* src/gauche/char_euc_jp.h: adapted to 3-byte sequence (8F xx xx).
	* ext/charconv/guess.scm, ext/charconv/guess.c : improved automatic
	  character encoding detection, by using probabilistic DFA.

2002-06-11  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/object.scm : insert the binding of |setter of ref| into
	  gauche module, or it doesn't work well with gauche.sequence module.
	* src/moplib.stub (slot-ref): set setter of slot-ref to slot-set!.

2002-06-10  Shiro Kawai  <shiro@acm.org>

	* src/module.c: fixed a bug that Scm_Import added imported module
	  to the imported list multiple times.  Also added proper mutex for
	  module access.
	* src/core.c (Scm_Warn) : added Scm_Warn.
	* src/vector.c (Scm_VectorFill), src/extlib.stub (vector-fill!) :
	  allow to take optional start and end argument (parallel to
	  SRFI-13 string-fill!).

2002-06-09  Shiro Kawai  <shiro@acm.org>

	* gc/dyn_load.c (GC_register_dlopen_data), src/gauche/extend.h,
	  aclocal.m4 : fixed a GC problem that the bss data in the dlopened
	  module was not added to the GC root.  This caused memory fault
	  on Cygwin etc.
	* ext/charconv/jconv.c : added #ifdef's to compile without iconv.

2002-06-08  Shiro Kawai  <shiro@acm.org>

	* src/main.c : fixed usage message.  disabled SIGWINCH by default.
	* ext/charconv/jconv.c : added iso2022jp support and cleanup routine.
	  added more tests.

2002-06-07  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h, src/string.c : fixed a problem of signed/unsigned
	  char inconsistency (bug pointed out by Sven Hartrumpf).

2002-06-05  Shiro Kawai  <shiro@acm.org>

	* ext/charconv/jconv.c : wrapping up.  passes the current tests.
	* lib/srfi-27.scm : added srfi-27 support.
	* src/vm.c (report_error): limit the depth of stack dump of the
	  default error reporter.

2002-06-04  Shiro Kawai  <shiro@acm.org>

	* ext/charconv/* : reorganized to make jconv intercept iconv (but
	  jconv itself is inactivated yet).

2002-06-03  Shiro Kawai  <shiro@acm.org>

	* src/gauche-init.scm, lib/gauche/common-macros.scm : added dolist
	* src/write.c (Scm_Format): fixed a problem that raises a "too many
	  argument" error when ~:* is used.

2002-05-28  Shiro Kawai  <shiro@acm.org>

	* ext/charconv/jconv.c, ext/charconv/cvt.scm : added for japanese
	  characte encoding conversions.

2002-05-27  Shiro Kawai  <shiro@acm.org>

	* release 0.5.5
	* ext/mt-random : more fix for cygwin.  right now, some procedures that
	  refer to uvector don't work on cygwin, because of DLL problem.
	* src/compare.c : further improvement.

2002-05-26  Shiro Kawai  <shiro@acm.org>

	* ext/mt-random : fixed missing initialization code.
	* src/compare.c : changed sort algorithm from simple quicksort to
	  the hybrid of quicksort and heapsort.

2002-05-25  Shiro Kawai  <shiro@acm.org>

	* ext/mt-random/mt-random.c (genrand_int_small): fixed a bug in LP64
	  architecture.
	* src/number.c (Scm_InexactToExact): fixed a bug in 64bit architecture

2002-05-24  Shiro Kawai  <shiro@acm.org>

	* src/load.c : finished the routine to detect require dependency loop.
	* lib/srfi-1* : added partial-application version of some list
	  procedures: count$, fold$, fold-right$, reduce$, reduce-right$,
	  filter$, partition$, remove$, member$, find$, find-tail$,
	  any$, every$, delete$, assoc$.
	* src/gauche.h : fixed a bug of uninitialized ScmProcedure field.
	* lib/gauche/procedure.scm, lib/gauche/collection.scm : added map$,
	  for-each$, apply$.
	* lib/math/const.scm : added.

2002-05-23  Shiro Kawai  <shiro@acm.org>

	* src/srfi-19.scm, src/srfi-19/format.scm : fixes bugs.
	* test/srfi.scm : added tests for srfi-19.
	* src/system.c : allowed negative value in Scm_Time slots; required
	  to represent negative time duration.
	* src/proc.c (proc_print): prints closure info.

2002-05-22  Shiro Kawai  <shiro@acm.org>

	* ext/auxsys/auxsyslib.stub (sys-times): fixed the way to find out
	  clock ticks.
	* ext/charconv/configure.in : add proper include path when --with-iconv
	  is specified.

2002-05-21  Shiro Kawai  <shiro@acm.org>

	* src/load.c : protecting some system-wide static states by mutexes.
	* src/stdlib.stub, src/extlib.stub : moved definitions of Scheme
	  subrs load and load-from-port to load.c.

2002-05-20  Shiro Kawai  <shiro@acm.org>

	* src/genstub : define-cclass starts working.  The interface may
	  change.
	* src/exclib.stub, src/error.c : moved exception class hierarchy
	  definition to exclib.stub from error.c
	* src/thrlib.stub, src/mutex.c, lib/gauche/thread.scm : made basic
	  thread primitives as builtin classes, and autoload SRFI-18
	  procedural APIs.

2002-05-19  Shiro Kawai  <shiro@acm.org>

	* src/write.c (Scm_Format): added ~* directive.
	* src/genstub : reorganized <type> class to handle types more
	  generally.

2002-05-18  Shiro Kawai  <shiro@acm.org>

	* src/genstub : removed obsolete definition of print and println, and
	  rewrote to use new print.  some code to support define-cclass is
	  added, but not finished.
	* src/gauche/exception.h : added
	* src/error.c : adding exception hieararchy support; not finished yet.

2002-05-17  Shiro Kawai  <shiro@acm.org>

	* src/write.c (Scm_Vprintf): the precision parameter of %S directive
	  now specifies the minimum padding width; e.g. %50.20S prints at
	  least 20 chars and at most 50 chars.

2002-05-16  Shiro Kawai  <shiro@acm.org>

	* src/mutex.c (Scm_GetTimeSpec): fixed according to SRFI-18 spec
	  (real number for relative time from now).
	* src/system.c : moved Scm_GetTimeSpec here.
	* src/vm.c : more thread interface.  made Scm_ThreadJoin take
	  timeout arg.
	* test/thread.scm : more tests.

2002-05-15  Shiro Kawai  <shiro@acm.org>

	* src/mutex.c : fixed mutex-unlock! to handle timeout and condition
	  variable.

2002-05-14  Shiro Kawai  <shiro@acm.org>

	* src/mutex.c : fixed mutex-lock! to handle timeout and owner-thread
	  properly.  Added condition variable.
	* ext/mt-random/test.scm : make test work without installing srfi-4
	* configure.in, src/gauche/config.h.in : moved check of gettimeofday
	  here
	* src/gauche.h, src/system.c, src/syslib.stub : added <time> object
	* lib/gauche/time.scm, lib/srfi-19.scm : removed time.scm

2002-05-13  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h, src/mutex.c, etc. : rewriting Scheme-level mutex
	* test/thread.scm : added basic thread API tests

2002-05-12  Shiro Kawai  <shiro@acm.org>

	* ext/mt-random/test.scm : added some tests

2002-05-11  Shiro Kawai  <shiro@acm.org>

	* ext/mt-random/* : added mt-random-real0
	* src/symbol.c, src/module.c, src/vm.c, etc. : added setter/getter
	  hook to gloc.  added define-constant syntax.
	* src/compile.c : inline constant reference defined by define-constant.

2002-05-10  Shiro Kawai  <shiro@acm.org>

	* lib/file/util.scm : added find-file-in-paths and move-file.
	* ext/mt-random/* : added mt-random-integer with arbitrary range.

2002-05-09  Shiro Kawai  <shiro@acm.org>

	* ext/mt-random/* : added math.mt-random.

2002-05-08  Shiro Kawai  <shiro@acm.org>

	* lib/file/util.scm : added touch-file and copy-file.
	* lib/gauche/defvalues.scm : moved define-values here, and added
	  set!-values.
	* ext/auxsys/auxsyslib.stub : added sys-utime.

2002-05-06  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/procedure.scm : added.
	* src/proc.c : exposed procedure information as slots of <procecure>
	  object.
	* lib/gauche/object.scm : added default ref and (setter ref) method
	  for slot reference.

2002-05-04  Shiro Kawai  <shiro@acm.org>

	* release 0.5.4
	* src/gauche.h, src/system.c : rename some tokens to avoid name
	  conflicts to macros in Darwin.
	* lib/file/util.scm : more procedures.

2002-05-02  Shiro Kawai  <shiro@acm.org>

	* src/repl.c : clears VM val0 register after evaluating prompt
	  string; it showed up when (begin) was evaluated at the toplevel
	  and was ugly.
	* src/gauche-init.scm : added compose
	* lib/file/util.scm : more procedures.

2002-05-01  Shiro Kawai  <shiro@acm.org>

	* src/port.c : fixed a memory-overwriting bug in bufport_read.
	* lib/file/util.scm : more procedures.

2002-04-30  Shiro Kawai  <shiro@acm.org>

	* lib/file/util.scm : added.

2002-04-29  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub : added open-input-fd-port and open-output-fd-port.
	* src/port.c, src/stdlib.stub, src/extlib.stub : refactored port
	  buffering mode check routine.
	* ext/termios/* : added pty interface (openpty and forkpty).
	* src/system.c, ext/extlib.stub : made system object information
	  accessible as slots.

2002-04-28  Shiro Kawai  <shiro@acm.org>

	* src/port.c, src/extlib.stub : added buffering mode keyword argument
	  to open-input-port and open-output-port.  added Scheme-level API
	  to get/set port buffering mode.
	* ext/net/* : adapted to the new port buffering mode API.

2002-04-27  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/common-macros.scm, src/gauche-init.scm : experimentally
	  added utility macros let1, pa, let_, l_, if_, when_ and while_.
	  See how it's useful.

2002-04-26  Shiro Kawai  <shiro@acm.org>

	* src/port.c, src/extlib.stub : getc, getb and getz can now work
	  interchangebly on the same port.

2002-04-25  Shiro Kawai  <shiro@acm.org>

	* src/port.c, src/gauche.h, src/extlib.stub, ext/charconv/charconv.c,
	  ext/net/net.c : Changed file port API.
	* src/stdlib.stub : added port?
	* src/extlib.stub : added weak-vector-length
	* lib/gauche/collection.scm, lib/gauche/sequence.scm : added a
	  weak vector to the collection and sequence framework.

2002-04-24  Shiro Kawai  <shiro@acm.org>

	* ext/charconv/charconv.c : adapted to the new port API.
	* src/port.c, src/gauche.h, src/extlib.stub : completely rewritten
	  the file I/O code; now Gauche does its own buffering instead of
	  using FILE*.   Implemented proper char-ready?.

2002-04-23  Shiro Kawai  <shiro@acm.org>

	* src/weak.c, src/gauche.h, src/class.c, src/extlib.stub : added
	  weak vector which is needed for Gauche's own buffering port
	  implementation.

2002-04-21  Shiro Kawai  <shiro@acm.org>

	* src/compile.c : eliminated the "merger" NOP instruction at the
	  tail position; that prevented proper tail recursion in some cases.
	* src/gauche-init.scm (define-values):  added define-values.
	* lib/www.cgi.scm : checks CONTENT_TYPE and CONTENT_LENGTH.
	  Introduced cgi-metavariables parameter for better customizability.

2002-04-19  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/parameter.scm : added.
	* src/genstub, *.stub : changed the way to handle C preprocessor
	  symbols; instead of read C headers and parse them, genstub just
	  emits cpp directives to the C source and let cpp handle them.
	  Stub files are modified accordingly.
	* src/gauche.h src/bignum.c, src/string.c, src/regexp.c, src/char.c :
	  Introduced SCM_DEBUG_HELPER cpp symbol to exclude debug-only
	  routines from the release code.

2002-04-17  Shiro Kawai  <shiro@acm.org>

	* src/class.c (scheme_slot_index) : damn it!  this routine has
	  returned bogus index that causes illegal memory access.  It's
	  a wonder that it hasn't revealed until now.  This was the reason
	  of the bug described in the entry below.
	* src/string.c, src/gauche.h: a snapshot of improving dynamic string
	  handling by avoiding realloc.   NB: this version contains a nasty
	  memory bug.

2002-04-16  Shiro Kawai  <shiro@acm.org>

	* src/main.c : adds "." and "../lib" to the *load-path* if gosh is
	  invoked from the source tree, for the convenience of testing.
	  Checks are performed to see if we're really in the source tree.
	* Makefile.in, ext/xlink, ext/*/Makefile.in: added make target to
	  create some symlinks for the convenience of development.

2002-04-15  Shiro Kawai  <shiro@acm.org>

	* release 0.5.3
	* various files : fixes to LP64 architecture.
	* Makefile.in, lib/Makefile.in : run slib initialization routine after
	  installation to generate slibcat.
	* Gauche.spec : added post script to generate slibcat.

2002-04-14  Shiro Kawai  <shiro@acm.org>

	* src/compile.c (lookup_env): fixed the variable reference algorithm
	  so that it can handle the case when a frame contains more than
	  one variable with the same name, in the case like
	  '(let* ((x 1) (x 2)) ...)'.  A bug pointed out by Paul Stodghill.
	* src/bignum.c : further optimization.

2002-04-13  Shiro Kawai  <shiro@acm.org>

	* src/number.c (double_print): switched back to the MP version
	  of Burger&Dybvig, for it was difficult to get the consistent
	  result by flonum version on multiple platforms.
	* src/bignum.c : fixed a bug in bignum_gdiv that missed a carry
	  in some occasion.

2002-04-12  Shiro Kawai  <shiro@acm.org>

	* configure.in, src/gauche/config.h.in : added a test for alloca().
	* src/bignum.c, src/number.c : adding denormalized bignum APIs.
	* src/number.c : changed Scm_MinMax interface.  canonicalize
	  complex return (imag==0.0 coerced to flonum).
	* src/extlib.stub : added min&max.

2002-04-10  Shiro Kawai  <shiro@acm.org>

	* src/number.c : number reader/writer passes r4rstest.

2002-04-08  Shiro Kawai  <shiro@acm.org>

	* src/write.c: fixed a bug that produced bogus output for
	  (write* '#()).   Thanks for HAbe to point this out.

2002-04-07  Shiro Kawai  <shiro@acm.org>

	* src/number.c : modified Burger&Dybvig algorithm to use floating-
	  point arithmetic instead of multiple-precision integer arithmetic.
	  The routine doesn't work for very small numbers yet.

2002-04-05  Shiro Kawai  <shiro@acm.org>

	* src/number.c : naively implemented Burger&Dybvig printing algorithm.
	  This is just an experiment to see how it works.

2002-04-04  Shiro Kawai  <shiro@acm.org>

	* src/number.c : fixed read_real to avoid underflow of reading
	  very small numbers.  still needs to work on denormalized flonum
	  case.
	* src/number.c, src/bignum.c, src/extlib.stub : added floating
	  number decode routine.

2002-04-03  Shiro Kawai  <shiro@acm.org>

	* src/number.c : improved integer reader to do bignum calculation
	  with chunk of digits, instead of every digits.
	* src/number.c, src/stdlib.stub : integrated Scm_Min and Scm_Max.

2002-04-02  Shiro Kawai  <shiro@acm.org>

	* src/number.c, src/read.c : rewrote number reader to handle
	  properly exactness, rational representation, and "#e#x" etc.
	* lib/gauche/numerical.scm, src/gauche-init.scm, src/stlib.stub :
	  changed 'make-polar' to a subr from a Scheme-defined function,
	  since the result of make-polar didn't exactly match the
	  result of polar representation (<real>@<real>) on x86, because of
	  the Intel's 80-bit floating-point arithmetic, and which was
	  confusing.

2002-04-01  Shiro Kawai  <shiro@acm.org>

	* configure.in : search slib from /usr/share/slib first, for
	  it appears to be the default location of slib installation.
	* lib/slib.scm.in : incorporated the changes of the slib2d3's
	  Template.scm

2002-03-30  Shiro Kawai  <shiro@acm.org>

	* src/gauche-init.scm, lib/slib.scm.in : fixed a problem with
	  slib2d3 which was caused because cond-expand in slib's
	  require.scm expanded to a form that referred slib's require
	  instead of gauche's.

2002-03-27  Shiro Kawai  <shiro@acm.org>

	* src/vm.c, src/vm.h : adding more thread support.
	* src/mutex.c : added.
	* configure.in, Makefile.in, gc/Makefile.in : compile GC with
	  pthred support when requested.   It was the cause of hang
	  problem found in 3/13.

2002-03-13  Shiro Kawai  <shiro@acm.org>

	* src/vm.c, src/vm.h : added initial code for make-thread and
	  thread-start!.  There's a problem that main thread hangs at
	  sigsuspend in exit().

2002-03-12  Shiro Kawai  <shiro@acm.org>

	* configure.in, src/gauche/config.h.in : added --with-pthread.
	* src/vm.c, src/vm.h : adding pthread support.

2002-03-10  Shiro Kawai  <shiro@acm.org>

	* aclocal.m4 (AC_GAUCHE_INIT_EXT) : substitute GAUCHE_VERSION as well.
	* src/gauche-init.scm : added print.
	* Gauche.spec : ensure the build install destination is clean.

2002-03-09  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-19.scm, lib/srfi-19/* : added srfi-19 support (not
	  finished yet).
	* lib/gauche/common-macros.scm : added update! (experimentally).

2002-03-08  Shiro Kawai  <shiro@acm.org>

	* src/number.c (read_integer): allow ratinal number syntax (when read,
	  it is converted to real number).  Still it doesn't accept
	  complex number with rational coefficients.

2002-03-07  Shiro Kawai  <shiro@acm.org>

	* release 0.5.2
	* Gauche.spec : added.
	* src/Makefile.in, src/gauche-config.in : changed the installaion
	  directory of header files from share to lib --- header files contain
	  configured information that may be architecture specific.
	* aclocal.m4: further workaround for cygwin.
	  "rm -f foo; echo ... > foo" still sometimes failed, so removed rm.

2002-03-06  Shiro Kawai  <shiro@acm.org>

	* ext/auxsyslib.stub : removed sys-setpgrp, for the function
	  prototype differs among platforms.  it is redundant anyways.
	* Makefile.in, doc/Makefile.in : makes realclean really clean.
	* doc/gosh.1.in, doc/gauche-config.1.in : added manpages.

2002-03-05  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub, src/gauche/predef-syms.h : changed macro-expand
	  -> macroexpand etc.
	* ext/auxsys: added sys-gettimeofday.  moved sys-ctermid here.
	* lib/gauche/time.scm : added <time> class, commonly used by
	  SRFI-18 and SRFI-19.

2002-03-03  Shiro Kawai  <shiro@acm.org>

	* ext/auxsys: added wrappters for functions that are not POSIx.
	* src/gauche-init.scm : added autoload for auxsys functions
	* src/gauche.h, src/gauche/pthread.h, src/gauche/uthread.h :
	  start adding thread-related structures.

2002-03-01  Shiro Kawai  <shiro@acm.org>

	* lib/text/html-lite.scm (make-html-element): fixed a bug that escapes
	  backslash in parameters illegaly.

2002-02-25  Shiro Kawai  <shiro@acm.org>

	* src/compile.c (compile_define): added define-in-module syntax.
	* src/gauche-init.scm, lib/gauche/with.scm, lib/gauche/numerical.scm :
	  adapted to define-in-module.
	* lib/gauche/with.scm : fixed semantics of closing file ports.
	* lib/port/stk.scm: added posix-* compatibility functions.

2002-02-22  Shiro Kawai  <shiro@acm.org>

	* src/compile.c : it turned out select-module has to be visible
	  from the scheme module for autoload to work.
	* lib/Makefile.in : fixed installation of file/filter.scm and
	  gauche/interpolate.scm.

2002-02-21  Shiro Kawai  <shiro@acm.org>

	* lib/file/filter.scm : added.
	* src/syslib.stub : fixed sys-mkstemp that wasn't working.

2002-02-20  Shiro Kawai  <shiro@acm.org>

	* ext/auxsys/*, src/syslib.stub : added auxiliary system function
	  extension.  sys-putenv, sys-uname and sys-times are moved from
	  gosh body to auxsys.so.

2002-02-18  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/interpolate.scm : fixed the interpolation syntax.
	* src/ldwrap.sh.in : fix for cygwin (remove -lsomething from command
	  line for dlltool).
	* src/macro.c, src/extlib.stub : added procedure version of
	  macro-expand and macro-expand-1.

2002-02-17  Shiro Kawai  <shiro@acm.org>

	* src/macro.c (compile_macro_expand) : bug fix for expanding
	  traditional macros.
	* src/read.c, lib/gauche/interpolate.scm  : added special syntax
	  #`"..." for string interpolation.
	* src/extlib.stub : added read-list.

2002-02-16  Shiro Kawai  <shiro@acm.org>

	* gc/dyn_load.c, src/core.c : fix required to link dyn_load.o
	  on MacOS X.
	* src/syslib.stub : use stat(2) for sys-access on MacOS X as well.

2002-02-15  Shiro Kawai  <shiro@acm.org>

	* aclocal.m4 : the rule to generate *_head.c and *_tail.c in
	  configure sometimes fails on cygwin, where the timing of
	  "rm" and following "echo" seems to create a race condition.
	  Fixed to guarantee "rm" is executed before "echo".

2002-02-14  Shiro Kawai  <shiro@acm.org>

	* release 0.5.1

2002-02-13  Shiro Kawai  <shiro@acm.org>

	* src/gauche-init.scm : fixed the definition of use to accept
	  identifier; needed to make cond-expand work.
	* lib/srfi-0.scm : added SRFI-22 to the feature set, and fixed
	  a bug that prevents cond-expand from working.
	* src/main.c : INCOMPATIBLE CHANGE - fix the convention to pass
	  the list of arguments to 'main' according to the final SRFI-22.
	  Now the argument list includes the script name itself.  For
	  backward compatibility, -fcompat-0.5 command-line option is
	  added.
	* src/genstub : adapted to the change of main.c
	* lib/gauche/test.scm (test-end) : reports descrepancies in the
	  order of tests (instead of reverse order).
	* lib/gauche/version.scm : added.

2002-02-12  Shiro Kawai  <shiro@acm.org>

	* ext/net/test.scm : allow sys-stat->file-type to return 'fifo
	  instead of 'socket, for some OSes doesn't distinguish them.
	* src/read.c : change debug-print shorthand syntax from #? to #?=
	* src/vm.c (arrange_application), src/gauche/vminsn.h : fix a bug
	  that confused Scm_VMApply when VM instruction is given to arguments.
	  (patch from Abe Hiroshi).
	* src/load.c : patch to compile on FreeBSD 2.x (from Abe Hiroshi)
	* src/gauche/portmacros.h (SCM__ISTR_GETB): fixed a bug that returned
	  EOF  on some platforms when read-byte reads char > 0x80.
	  (patch from Abe Hiroshi).
	* gc/dyn_load.c : the previous fix isn't enough for the platforms
	  such as FreeBSD 2.x.

2002-02-11  Shiro Kawai  <shiro@acm.org>

	* src/number.c (Scm_InexactToExact): fixed the case when an inexact
	  number is passed.
	* src/main.c (main): if the script file name is given in relative
	  path, search it from the current directory even "." is not in the
	  load path.
	* configure.in : recovered GOSH_USE_SHLIB substitution that was
	  accidentally dropped.
	* lib/rfc/cookie.scm : avoid using %T in strftime, for it's not POSIX.

2002-02-10  Shiro Kawai  <shiro@acm.org>

	* aclocal.m4 (AC_GAUCHE_EXT_FIXUP): allow optional second arg.
	* Makefile.in, src/gauche-config.in : install aclocal.m4.
	* src/read.c : fixed a bug in the character reader so that it
	  recognizes character name in case-insensitive way.
	* src/syslib.stub : for freebsd, sys-access uses stat(2) instead
	  of somewhat unreliable access(2).
	* src/gauche-config.h : autoloads srfi-0 (cond-expand).
	* ext/net/configure.in, ext/net/netconfig.h.in, ext/net/net.h :
	  includes rpc/types.h if the system has it.  (Suggested by
	  Abe Hiroshi).
	* src/number.c, src/bignum.c, ext/uvector/uvectorP.h : applied
	  patch from Abe Hiroshi to make it work on HP_UX.

2002-02-09  Shiro Kawai  <shiro@acm.org>

	* ext/*/configure.in : modified to use aclocal.m4
	* aclocal.m4, gc/dyn_load.c, src/gauche/extend.c: for the platforms
	  that GC doesn't support dlopened object, added the way of explicit
	  registration of the data section. (Thanks for this idea from
	  Abe Hiroshi).

2002-02-08  Shiro Kawai  <shiro@acm.org>

	* src/genstub, src/class.c : fixed to compile extensions under cygwin.
	* aclocal.m4 : added

2002-02-07  Shiro Kawai  <shiro@acm.org>

	* various files: snapshot of further modification for cygwin.
	  the core part is working.   works on other platforms.
	  need more work for extensions.

2002-02-06  Shiro Kawai  <shiro@acm.org>

	* various files: snapshot of further modification for cygwin.
	  not finished yet.  this check-in doesn't work for other
	  platforms, since gosh fails to load libgauche.so.

2002-02-02  Shiro Kawai  <shiro@acm.org>

	* various files: added support for cygwin (not finished yet).
	  gosh is now built using libgauche.so, instead of statically
	  linking libgauche.a.  The link is done in a shell script
	  src/ldwrap.sh.

2002-01-30  Shiro Kawai  <shiro@acm.org>

	* release 0.5

2002-01-29  Shiro Kawai  <shiro@acm.org>

	* src/core.c : unwind dynamic handlers upon exit().  this is a
	  temporary solution and has to be rewritten for MT support.

2002-01-28  Shiro Kawai  <shiro@acm.org>

	* src/read.c : added support for back-reference reader syntax
	  (#digit= and #digit#).  It doesn't work well yet for recursive
	  structures.

2002-01-24  Shiro Kawai  <shiro@acm.org>

	* configure.in, gc/include/private/gc_priv.h : applied patch from
	  ABE Hiroshi to fix configuration under FreeBSD 2.x and HP-UX.
	* src/signal.c, src/syslib.stub : fix signal masking (temporary).
	  added sys-signal-name.

2002-01-23  Shiro Kawai  <shiro@acm.org>

	* configure.in, src/gauche-config.in : experimentally added
	  --reconfigure option to gauche-config script.
	* src/syslib.stub : added sys-alarm
	* src/*.c : added checks for interrupted system calls.

2002-01-22  Shiro Kawai  <shiro@acm.org>

	* src/signal.c : added default signal handler, and make signal queue
	  calling routine work
	* lib/gauche/signal.scm : added with-signal-handlers.

2002-01-21  Shiro Kawai  <shiro@acm.org>

	* src/vm.c, src/regexp.c, src/gauche/vm.h : use sig{set|long}jmp
	  instead of {set|long}jmp.
	* src/signal.c : added master signal handling mechanism.

2002-01-20  Shiro Kawai  <shiro@acm.org>

	* src/stdlib.stub : fix a bug in the code generator of
	  immediate_integer_inliner (thanks for Nobuo YAMASHITA to
	  point this out).

2002-01-15  Shiro Kawai  <shiro@acm.org>

	* src/signal.c : added sys-sigset class.

2002-01-14  Shiro Kawai  <shiro@acm.org>

	* src/load.c : make Scm_Load() return a boolean value as
	  Scheme's load.

2002-01-13  Shiro Kawai  <shiro@acm.org>

	* src/load.c, src/extlib.stub : added paths keyword arg to load.
	  fix load_next feature.
	* lib/gauche/with.scm : fixed a bug in call-with-*-file and
	  with-*-file when used with :if-does-not-exist #f.

2002-01-11  Shiro Kawai  <shiro@acm.org>

	* src/number.c (Scm_Sign): fixed to conform its comment (thanks for
	  Iwao KIMURA).
	* src/gauche-config.in : -l option includes -lgauche (thanks for
	  Iwao KIMURA).
	* ext/charconv/charconv.scm : experimentally overloaded open-*-file
	  functions to accept :encoding keyword argument.
	* src/write.c, src/symbol.c : support writer in case-sensitive mode
	* src/Makefile.in, test/symcase.scm : added tests for
	  case (in)sensitive mode

2002-01-10  Shiro Kawai  <shiro@acm.org>

	* src/read.c : implemented case-sensitive reader.
	* src/main.c : added -fcase-fold flag to turn on the case-insensitive
	  (R5RS-comformant) reader.  The default is case-sensitive.

2002-01-09  Shiro Kawai  <shiro@acm.org>

	* src/Makefile.in : fixed install action on creating
	  {BIN|LIB}_INSTALL_DIR when they don't exist (Thanks for Mr. Ogawa
	  to point this out).


2002-01-07  Shiro Kawai  <shiro@acm.org>

	* release 0.4.12
	* ext/charconv/* : made the name of iconv.h header file configurable
	  as well as the library name through --with-iconv-lib
	  configuration option.
	  charconv.h is now generated from charconv.h.in.
	* src/main.c : display internal encoding name for gosh -V
	* INSTALL.esc : added notes on FreeBSD iconv problem.

2002-01-06  Shiro Kawai  <shiro@acm.org>

	* src/vm.c, src/repl.c : fixed the bug of VM stack rewinding problem.
	* src/extlib.stub : added port-type
	* lib/srfi-0.scm : added module stuff

2002-01-05  Shiro Kawai  <shiro@acm.org>

	* src/macro.c : fixed the traditional macro transformer spec.
	  In the form like (define-macro foo (lambda args ...)), args was
	  bound to the entire form (including foo) but it was
	  inconsisntent with tranditional Scheme implementation and also
	  with (define-macro (foo . args) ...) form.   Now args receives
	  the arguments of foo, as expected.

2002-01-04  Shiro Kawai  <shiro@acm.org>

	* src/read.c : made Scm_ReadError public.  improve the error message
	  of "EOF inside list" error.
	* lib/gauche/vm/debugger.scm : avoid error on the form that doesn't
	  have source-info.

2002-01-03  Shiro Kawai  <shiro@acm.org>

	* src/signal.c : added.

2002-01-02  Shiro Kawai  <shiro@acm.org>

	* src/gauche/class.h, src/class.c, src/error.c, src/system.c :
	  defined SCM_ALLOCATE macro for cliche in the *_allocate methods.
	* ext/charconv/configure.in : fixed a bug that didn't find iconv.h
	  even --with-iconv is given.
	* test/TESTS, src/Makefile.in : list tests in a separate file.

2002-01-01  Shiro Kawai  <shiro@acm.org>

	* src/error.c : added some error classes.

2001-12-22  Shiro Kawai  <shiro@acm.org>

	* src/compile.c, src/macro.c : intern syntactic bindings to the
	  appropriate modules (either null or gauche).
	* src/vm.c : added code to honor the second argument of eval
	* src/extlib.stub : fix a bug that null-environment didn't take
	  version argument.
	* src/gauche/char_sjis.h : fixed broken Shift-JIS support.
	* src/gauche/char_utf_8.h : fixed a bug.
	* src/string.c : fixed count_length that works incorrectly on
	  the encodings other than EUC-JP.
	* ext/charconv : fixed bugs that appears in the encodings
	  other than EUC-JP.

2001-12-21  Shiro Kawai  <shiro@acm.org>

	* src/repl.c : quick bug fix for the problem of VM stack rewinding
	  on error.
	* INSTALL.esc : added note for ISO8859 encoding users

2001-12-20  Shiro Kawai  <shiro@acm.org>

	* release 0.4.11
	* src/vm.c : make the default exception handler not capture
	  non-fatal exception when user-defined exception handler is
	  active.  Tests are added accordingly.
	* gc/dyn_load.c, gc/include/private/gcconfig.h : enabled
	  DYNAMIC_LOADING for FREEBSD.  I'm not sure it is the right
	  thing and work on all cases, though.

2001-12-19  Shiro Kawai  <shiro@acm.org>

	* src/vm.c : dynamic-wind properly returns multiple values.
	  Fixed bad continuation frame handling in user_eval_inner and
	  Scm_VMDefaultErrorHandler.  Fixed bad order of thunk to be
	  called in the nested dynamic wind.

2001-12-18  Shiro Kawai  <shiro@acm.org>

	* src/vm.c : reorganized exception handling scheme.  merged SRFI-18
	  compatible with-exception-handler.

2001-12-15  Shiro Kawai  <shiro@acm.org>

	* src/read.c : added convenience function Scm_ReadFromString and
	  Scm_ReadFromCString.
	* src/main.c : added command line options -l (load) and -e (eval).

2001-12-14  Shiro Kawai  <shiro@acm.org>

	* src/vm.c : improved default stack trace display to include source
	  file info.
	* src/load.c, src/gauche-init.scm, src/extlib.stub : made autoloading
	  modules work.
	* lib/gauche/vm/debugger.scm : added further features.

2001-12-13  Shiro Kawai  <shiro@acm.org>

	* src/write.c : added maxcol parameter to ~A and ~S format directive
	  to limit the length of formatted string
	* src/Makefile.in : ensure the binary installation directory
	  (pointed out by Bengt Kleberg).

2001-12-09  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub: added GC interface, gc and gc-stat (experimentally)
	* src/vm.c, src/load.c : made loading program info (*load-history*
	  etc.) VM-local.

2001-12-08  Shiro Kawai  <shiro@acm.org>

	* src/read.c, src/gauche.h : added the read context to the internal
	  reader, although it doesn't do anything now.

2001-12-07  Shiro Kawai  <shiro@acm.org>

	* src/main.c : removed -fin-place option, for its usage is very
	  limited.

2001-12-06  Shiro Kawai  <shiro@acm.org>

	* src/macro.c : enable autoloading macros.  define-macro can now
	  take either transformer or autoload object.  fixed define-macro
	  to check valid transformer.
	* src/gauche-init.scm : made common-macros.scm be autoloaded.
	* src/load.c, src/main.c, src/gauche/vm.h : added LOAD_VERBOSE flag.
	* src/main.c, various Makefile.in's : INCOMPATIBLE CHANGE: excluded
	  the current directory from the load-path by default.  changed
	  test target of Makefiles to include the current dir explicitly.

2001-12-04  Shiro Kawai  <shiro@acm.org>

	* src/macro.c : fixed a bug that didn't expand a template (x ... . y)
	  when x ... is empty.

2001-12-02  Shiro Kawai  <shiro@acm.org>

	* release 0.4.10

2001-12-01  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/common-macros.scm (dotimes): fixed a bug that sneaked
	  in by the last change.
	* src/class.c, lib/gauche/object.scm : cleaned up the SlotAccessor
	  initialization code.  Added initializable flag to SlotAccessor
	  to indicate whether :init-value/:init-keyword should be honored
	  or not; this allows procedural slot to be initialized.
	* src/gauche/sequence.scm : finalizing API of sequence framework.
	* src/module.c (Scm_ImportModules): fixed the order of imported
	  modules.  The last imported module should be searched first.
	* ext/uvector/srfi-4.scm : added collection and sequence API.

2001-11-30  Shiro Kawai  <shiro@acm.org>

	* src/class.c : Correctly initialize implicit metaclass hierarchy
	  when the builtin class has hierarchy.
	* lib/gauche/common-macros.scm : added while and until experimentally
	  to see how usable they are.
	* lib/gauche/collection.scm : finalizing API of collection framework.

2001-11-28  Shiro Kawai  <shiro@acm.org>

	* src/list.c (Scm_ListRef) : fixed a bug that caused SEGV.
	* src/class.c : experimentally added a feature that inserts
	  implicit metaclass for builtin classes, which allows to define
	  ``class-method''.
	* src/moplib.stub : fixed a bug in is-a? that rejects a descendant
	  of <class> in the second argument.

2001-11-23  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-1.scm : fixed a bug in alist-delete!

2001-11-22  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/object.scm : added a customizable method
	  compute-slot-accessor
	* lib/gauche/validator.scm : added

2001-11-21  Shiro Kawai  <shiro@acm.org>

	* lib/www/cgi.scm : fixed a bug in the default error method of
	  cgi-main that used old interface of text.html-lite.

2001-11-20  Shiro Kawai  <shiro@acm.org>

	* lib/port/jfilter.scm : fixed a bug in cv-file.
	* lib/gauche/object.scm : changed the protocol of compute-get-n-set
	  so that it returns a _list_ of getter and setter procedure (as
	  opposed to a cons).  The new behavior is compatible to STklos.

2001-11-19  Shiro Kawai  <shiro@acm.org>

	* src/write.c : write 'a instead of (quote a), etc.
	* lib/text/tree.scm : handles dotted list as well.
	* ext/charconv.c : fixed a bug that didn't allow to open an empty
	  port for automatic conversion.

2001-11-18  Shiro Kawai  <shiro@acm.org>

	* src/hash.c : fixed a bug in MakeHashTable that sets incorrect type
	  for eqv? hash.  removed smallint_hash stuff, for eqv?-hash covers it.
	* src/extlib.stub: added hash-table-type

2001-11-16  Shiro Kawai  <shiro@acm.org>

	* ext/dbm/bsddb.[ch] : added (not quite finished).

2001-11-15  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/logical.scm : made bit-field and copy-bit-field
	  work even if start >= end.
	* src/extlib.stub : added hash-table-delete!
	* src/main.c : fixed typo (thanks for Sven Hartrumpf).

2001-11-14  Shiro Kawai  <shiro@acm.org>

	* release 0.4.9
	* src/syslib.stub (sys-symlink) : typo fix
	* lib/gauche/logical.scm, src/gauche-init.scm : added a bunch of
	  bitwise operations.

2001-11-13  Shiro Kawai  <shiro@acm.org>

	* configure.in : fixed the support of --with-local.  added support
	  for Darwin1.3 and later.
	* lib/gauche/object.scm : allow '(setter foo)' style method definition
	* src/extlib.stub, src/gauche-init.scm : moved hash table mappers
	  to the Scheme code.

2001-11-12  Shiro Kawai  <shiro@scm.org>

	* ext/dbm/configure.in : more robust support on the systems that
	  has both gdbm and ndbm.

2001-11-11  Shiro Kawai  <shiro@scm.org>

	* lib/www/cgi.scm : fixed more bugs.
	* lib/text/html-lite.stm : changed tag procedure names from
	  html-<element> to html:<element>
	* src/port.c : read-line recognizes various line terminators
	  (\r, \n, and \r\n)

2001-11-10  Shiro Kawai  <shiro@acm.org>

	* ext/dbm/dbm.scm : introduced <dbm-meta>, metaclass for all <dbm>
	  instances.
	* lib/www/cgi.scm : fixed a bug in cgi-parse-parameters that returned
	  a redundant result for a null query string.  added cgi-main.

2001-11-09  Shiro Kawai  <shiro@acm.org>

	* src/regexp.c : fixed a bug that estimated the bytecode size
	  incorrectly for the patterns like #/(x|y)+/.
	* lib/www/cgi.scm : added cgi-header
	* lib/text/html-lite.scm : changed passing convention of the
	  parameters.   added html-doctype.

2001-11-08  Shiro Kawai  <shiro@acm.org>

	* lib/text/html-lite.scm : experimentally added.
	* configure.in : added --with-local flag to allow to use site-local
	  libraries throught the compilation process.
	* src/extlib.stub : added hash-table-push! and hash-table-pop!

2001-11-07  Shiro Kawai  <shiro@acm.org>

	* lib/slib.scm.in : fixed a bug that made building a new catalog
	  fail.  Thanks to Hiroshi INAMURA for the patch.
	* lib/gauche/singleton.scm : experimentally added.

2001-11-06  Shiro Kawai  <shiro@acm.org>

	* various files : fixed a bug that didn't instantiate metaobjects
	  correctly when defined in Scheme sublassing a C-defined class.
	  This fix changed the interface of Scm_InitBuiltinClass, and
	  several files were updated accordingly.

2001-11-05  Shiro Kawai  <shiro@acm.org>

	* ext/fcntl : added some test methods.

2001-11-03  Shiro Kawai  <shiro@acm.org>

	* src/load.c : guaranteed to return #t on successful load
	* src/char.c, src/read.c, src/regexp.c : fixed charset reader.
	  #[] is read an empty charset.   In regexp, however, the closing
	  bracket at the beginning of charset is interpreted as the character
	  itself, for compatibility to the POSIX regexp.  That is,
	  #/[]]/ is valid.

2001-11-02  Shiro Kawai  <shiro@acm.org>

	* lib/util/queue.scm : added dequeue-all!
	* src/io.c, src/port.c, src/gauche-init.scm, lib/gauche/with.scm :
	  defined call-with-*-file and with-*-file procedures in Scheme
	  instead of C.  io.c is removed.

2001-11-01  Shiro Kawai  <shiro@acm.org>

	* lib/util/queue.scm : added

2001-10-31  Shiro Kawai  <shiro@acm.org>

	* release 0.4.8
	* doc/gauche-ref.texi : wrapping up the document.

2001-10-29  Shiro Kawai  <shiro@acm.org>

	* various files: adapted to LP64 architecture.

2001-10-28  Shiro Kawai  <shiro@acm.org>

	* configure.in's and Makefile.in's : made it work on more
	  configurations.
	* src/string.c, lib/srfi-13/* : fixed the buf of string-index with
	  start/end args.  added make-string-pointer start/end optional
	  args, and optimized srfi-13 functions to it.
	* src/string.c (string_substitute) : fixed an evil bug that
	  overwritten the out-of-range memory area.
	* src/load.c, src/vm.c : fixed autoload bug that doesn't load
	  the file when autoload symbol is referenced as a variable.
	* ext/dbm/* : made it pass through the test.

2001-10-27  Shiro Kawai  <shiro@acm.org>

	* gc : upgraded Boehm GC package from 5.3 to 6.0.
	* ext/dbm : made the basic functions work.

2001-10-26  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/with.scm : added read-from-string and write-to-string
	  to be autoloaded.

2001-10-23  Shiro Kawai  <shiro@acm.org>

	* lib/text/tree.scm : added.  fast concatenation and rendering of text.
	* lib/gauche/object.scm : packaged in gauche.object, hiding auxiliary
	  procedures in it.  This change prevents genstub from running with
	  gosh 0.4.7; compile.c has to be rev 1.66.
	* src/compile.c : fixed with-module to work when generated by macros.
	* src/class.c, src/gauche/class.h, src/moplib.stub : overhauled
	  slot accessing protocol.  Slot accessor object becomes more robust,
	  and can be utilized in metaprogram easily.  Several internal
	  functions are exposed for metaprograming.

2001-10-22  Shiro Kawai  <shiro@acm.org>

	* test/algorithm.scm : testing algorithm.* modules.
	* src/gauche-init.scm : added use-version macro.  removed compatibility
	  stuff for r_ok etc.

2001-10-21  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub : added clamp
	* lib/gauche/object.scm : made coercion functions work for characters.

2001-10-20  Shiro Kawai  <shiro@acm.org>

	* src/genstub : prevent generated code from calling SCM_MAKE_KEYWORD
	  at the subr application time; keywords are now created at setup time.
	  Also added initcode form.
	* ext/dbm : made it compile.

2001-10-19  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/object.scm : added generic coercion methods,
	  x->string, x->integer and x->number.
	* ext/dbm : added.  not working yet.

2001-10-18  Shiro Kawai  <shiro@acm.org>

	* lib/algorithm/isomorph.scm : added
	* lib/algorithm/toposort.scm : added

2001-10-17  Shiro Kawai  <shiro@acm.org>

	* lib/w3c/cgi.scm : renamed to lib/www/cgi.scm

2001-10-16  Shiro Kawai  <shiro@acm.org>

	* lib/port/stk.scm : added.
	* lib/rfc/quoted-printable.scm : added quoted-printable-encode
	* DIST : fixed `doc' target.

2001-10-15  Shiro Kawai  <shiro@acm.org>

	* src/hash.c : fixed equal?-hash.
	* INSTALL.esc : added description about --with-rpath option.

2001-10-14  Shiro Kawai  <shiro@acm.org>

	* release 0.4.7
	* lib/gauche/interactive.scm : disable debugger by default.
	* doc/* : cleaned up.  Stopped including HTML version in dist.

2001-10-12  Shiro Kawai  <shiro@acm.org>

	* doc/extract : added a feature to substitute node names and
	  reference with japanese one.
	* src/regexp.c (re_exec_rec): fixed a bug of interpretation of NSET1
	  in multi-byte case.
	* src/hash.c, src/extlib.stub : allow Scheme code to specify
	  hash type among predefined types.

2001-10-10  Shiro Kawai  <shiro@acm.org>

	* src/number.c (Scm_Expt): fixed a bug that (expt 0.0 1) returned
	  1.0 (Thanks to TAGA Yoshitaka).
	* src/class.c : fixed a bug in method_more_specific comparing
	  methods with optional arg (Thanks to TAGA Yoshitaka).
	* src/vm.c, lib/gauche/vm/debugger.c : fixed a problem that the
	  debugger printed only the innermost environment.
	* lib/gauche/collection.scm : added experimentally.

2001-10-09  Shiro Kawai  <shiro@acm.org>

	* src/number.c : fixed a number class hierarchy bug.
	* ext/uvlib.stub.sh : added setter definition to the *-ref.

2001-10-08  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/common-macros.scm : added inc! and dec!.

2001-10-07  Shiro Kawai  <shiro@acm.org>

	* doc/gauche-ref.texi : more translations.

2001-10-05  Shiro Kawai  <shiro@acm.org>

	* lib/text/parse.scm : extended functions to be more orthogonal,
	  i.e. those which take char-list also take predicate.
	* src/compile.c, src/genstub : made auto-generated inliner code
	  a bit more compact.

2001-10-04  Shiro Kawai  <shiro@acm.org>

	* src/syslib.stub : added sys-mkstemp.
	* lib/text/parse.scm : implements the input stream parsing
	  primitives compatible with Oleg Kiselyov.
	* lib/gauche/port.scm : added port-position-prefix.
	* doc/gauche-ref.texi : making bilingual.

2001-10-03  Shiro Kawai  <shiro@acm.org>

	* src/list.c, etc. : merged safe version of accessors (*-ref+)
	  to the normal version (*-ref).  Now normal version takes an
	  optinal argument.
	* src/extlib.stub : added standard-input-port, standard-output-port
	  and standard-error-port.
	* lib/gauche/port.scm : added.  implements several useful
	  utilities for port input to be autoloaded.   some functions are
	  moved from with.scm.

2001-10-02  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/common-macros.scm : added several useful macros,
	  such as push! and dotimes.  They are ugly, but sometimes its
	  so convenient that I couldn't resist adding them.  It also
	  has the convenient macro syntax-error.
	* src/list.c, src/vector.c, src/string.c, src/extlib.stub :
	  added safe version of accessors: list-ref+, vector-ref+ and
	  string-ref+.

2001-10-01  Shiro Kawai  <shiro@acm.org>

	* src/main.c : inhibit argument permutation of getopt, so that the
	  options after script file name can be passed to the users' script.

2001-09-30  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub : make logand, logior and logxor take more than
	  two args.

2001-09-29  Shiro Kawai  <shiro@acm.org>

	* release 0.4.6
	* src/compiler.c : changed to emit meaningful information for env.
	* lib/gauche/vm/debugger.scm : added minimal debugging commands.
	* src/genstub : added real? type assertion.

2001-09-28  Shiro Kawai  <shiro@acm.org>

	* ext/net : INCOMPATIBLE CHANGE: made system constants upper case
	  (e.g. |AF_INET|).

2001-09-27  Shiro Kawai  <shiro@acm.org>

	* src/vm.c, src/extlib.stub, src/gauche/vm.h : added Scm_VMGetStack
	  and its Scheme interface.  added a hook function in VM for
	  debugger.
	* lib/gauche/vm/debugger.scm: added

2001-09-26  Shiro Kawai  <shiro@acm.org>

	* src/syslib.stub, src/gauche-init.scm : INCOMPATIBLE CHANGE:
	  use uppercase for all system symbols, such as |R_OK| (for
	  sys-access) or |SIGINT|.
	* src/vm.c : fixed continuation stack trace in the default error
	  handler.

2001-09-25  Shiro Kawai  <shiro@acm.org>

	* src/gauche-init.scm : added file-exists?, file-is-directory? and
	  file-is-regular?.
	* lib/gauche/vm/disasm.scm : fixed TAILBIND

2001-09-24  Shiro Kawai  <shiro@acm.org>

	* src/vm.c : added one word to the continuation frame for debug
	  info.  This impacts performance (<2% in rudimental tests).
	* configure.in : added --with-rpath experimentally.
	* configure.in, src/gauche/config.h.in, src/main.c : applied a fix
	  from Hiroshi INAMURA for cygwin.   Added -i (force interactive)
	  option to main.c.

2001-09-23  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/cookie.scm : added construct-cookie-string
	* lib/gauche/regexp.scm : allow user-specified  procedure to be
	  called in regexp-replace[-all].
	* lib/text/tr.scm, lib/text/cvs.scm, lib/w3c/cgi.scm : added
	  more features.
	* src/vm.c : fixed a bug that exception handler didn't get a
	  proper stack trace.
	* src/*.c : removed source-info stuff.
	* lib/gauche/vm/disasm.scm : adapted to new LET-family insns.

2001-09-22  Shiro Kawai  <shiro@acm.org>

	* lib/rfc/cookie.scm : added
	* src/string.c, src/extlib.stub : made string-scan in place of
	  the broken string-contains.
	* lib/gauche/regexp.scm : added regexp-replace and
	  regexp-replace-all.

2001-09-21  Shiro Kawai  <shiro@acm.org>

	* src/syslib.stub : added sys-putenv if the system has putenv().
	* lib/text/tr.scm : finished.

2001-09-20  Shiro Kawai  <shiro@acm.org>

	* lib/slib.scm (defmacro) : fixed a bug.
	* lib/w3c/cgi.scm : moved under w3c.
	* lib/text/csv.scm : added.
	* src/stdlib.stub (open-output-string) : allow #f to :if-exists

2001-09-19  Shiro Kawai  <shiro@acm.org>

	* src/write.c : fixed a bug in format (thanks to Abe Hiroshi)
	* src/bignum.c : fixed BignumLogXor
	* lib/text/tr.scm : made basic function work

2001-09-18  Shiro Kawai  <shiro@acm.org>

	* src/char.c, src/extlib.stub : added digit->integer and
	  integer->digit, for converting digit char <-> number.
	* lib/cgi.scm : added
	* lib/text/tr.scm : added

2001-09-17  Shiro Kawai  <shiro@acm.org>

	* release 0.4.5
	* src/regexp.c : fixed two bugs.  Jump offset overflowed in the large
	  regexp.  Top level `?' didn't compiled correctly.
	* lib/gauche/logger.scm : added.
	* src/system.c : made members of struct tm visible from Scheme.
	* src/bignum.c, src/char.c, src/port.c : applied a patch from
	  Abe Hiroshi to fix bugs on LP64 architecture.
	* src/gauche.h : fixed SCM_CHAR_MAX on LP64 architecture.

2001-09-16  Shiro Kawai  <shiro@acm.org>

	* src/stdlib.stub, src/port.c : added :if-exists, :if-does-not-exist
	  and :element-type flags to open-input-file and open-output-file to
	  control file operations precisely.
	* src/read.c : added SRFI-10 sharp-comma reader extension.

2001-09-15  Shiro Kawai  <shiro@acm.org>

	* src/vm.c : fixed a bug that caused assertion failed when an
	  unhandled error is thrown from non-interactive script.
	* src/class.c and other files: changed built-in class initialization
	  routines.
	* src/system.c : added Scm_GetPortFd to eliminate duplicated code
	  on several files.
	* ext/fcntl : added fcntl interface module.

2001-09-12  Shiro Kawai  <shiro@acm.org>

	* release 0.4.4
	* src/repl.c, src/vm.c : cleaned up default exception handling.
	* lib/gauche/process.scm : added process-output->string

2001-09-11  Shiro Kawai  <shiro@acm.org>

	* src/error.c : implemented exception class hierarchy.

2001-09-10  Shiro Kawai  <shiro@acm.org>

	* src/vm.c, src/extlib.stub : added error handling mechanism,
	  with-error-handler.
	* test/error.scm : added to test error handler mechanism.

2001-09-07  Shiro Kawai  <shiro@acm.org>

	* src/vm.c, src/gauche/vm.h : fixed continuations thrown across
	  C stack boundary.
	* ext/termios : added cf[gs]et[io]speed.   use #ifdef's for non-POSIX
	  constants.

2001-09-06  Shiro Kawai  <shiro@acm.org>

	* ext/termios : added termios support.

2001-09-05  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/selector.scm : added
	* lib/gauche/interactive.scm : added describe
	* ext/net : added socket-fd
	* src/genstub : added a feature to read config.h and to generate
	  stubs conditionally depending on the defined preprocessor symbols.
	* src/syslib.stub : added sys-ctermid and sys-readlink.  Adapted
	  to the new genstub.
	* doc/gauche-ref.texi : added a chapter of describing mappings
	  from C library functions to Scheme functions.
	* src/vm.c (use_eval_inner) : cleaned up interaction between C
	  stack and Scheme stack.

2001-09-04  Shiro Kawai  <shiro@acm.org>

	* src/vm.c and other files: realized that stack-gc won't improve
	  performance unless I implement a special marking method in the
	  stack area.  Reverted stack handling to the previous way.

2001-09-01  Shiro Kawai  <shiro@acm.org>

	* src/vm.c and other files: implemented stack garbage collector.
	  however, somehow it slows down things significantly; need to
	  redesign.

2001-08-05  Shiro Kawai  <shiro@acm.org>

	* release 0.4.3
	* */configure.in : adapted to autoconf-2.52
	* lib/gauche/interactive.scm : added.  defines useful functions
	  for the interactive session.
	* src/main.c : loads gauche.interactive when in the interactive
	  mode.

2001-08-04  Shiro Kawai  <shiro@acm.org>

	* src/symbol.c : removed Scm_Apropos - it'll be implemented in Scheme.
	* src/extlib.stub : added hash-table-map

2001-08-03  Shiro Kawai  <shiro@acm.org>

	* src/vm.c : prevent a continuation from being thrown across C
	  stack boundary for now.  Supporting it requires lots of VM
	  modification.
	* src/read.c : arrow more flexible symbol syntax.

2001-07-24  Shiro Kawai  <shiro@acm.org>

	* src/compile.c (compile_do): fixed a bug that reported an error
	  on a valid do form (thanks to KIMURA Shigenobu).
	* src/read.c : allow numbers to begin with dot, e.g. ``.12''
	* ext/uvector/* : generate uvector.h under the subdirectory 'gauche',
	  so that other extension module can use #include "gauche/uvector.h".
	* test/primsyn.scm : added tricky case tests of "case" and "do".

2001-07-14  Shiro Kawai  <shiro@acm.org>

	* release 0.4.2

2001-07-13  Shiro Kawai  <shiro@acm.org>

	* various files: applied a patch for MacOS X provided from
	  KIMURA Shigenobu.

2001-07-10  Shiro Kawai  <shiro@acm.org>

	* src/compile.c (compile_case): fixed a bug that reported an error
	  on a valid case form (thanks to KIMURA Shigenobu).

2001-07-08  Shiro Kawai  <shiro@acm.org>

	* src/macro.c : fixed a bug that couldn't handle pattern variables
	  appear in the higher level than its defined level.
	* lib/srfi-9.scm : added SRFI-9, record types.
	* src/read.c (read_char): recognize #\xXXX type character name.
	* src/number.c (Scm_NumberToString): fixed a bug that didn't print
	  negative small integer correctly in radix 8 and 16.
	* src/write.c (Scm_Forat): extended format to take parameters and
	  flags for the format directives, and to handle format directive
	  ~d, ~b, ~o and ~x.
	* test/io.scm : added to test format.

2001-07-07  Shiro Kawai  <shiro@acm.org>

	* release 0.4.1
	* src/vm.c, src/compile.c, src/gauche/vm.h : refined and tested
	  stack overflow handling.
	* configure.in, src/gauche/config.h.in, src/gauche-config.in,
	  ext/net/net.h : added checks for sysint.h, and removed spaces
	  after -I and -L options, in order to make MacOS X happy
	  (thanks to Shigenobu KIMURA skimu @ mac.com for pointing
	  this out.)

2001-07-04  Shiro Kawai  <shiro@acm.org>

	* src/compile.c, src/vm.c : modified the compiler to add CHECK_STACK
	  instructions to appropriate places.

2001-07-02  Shiro Kawai  <shiro@acm.org>

	* ext/net/configure.in : added check for -lnsl on Solaris
	* ext/net/net.scm (make-server-socket): fixed bug about
	  :reuse-addr? keyword argument.

2001-07-01  Shiro Kawai  <shiro@acm.org>

	* src/load.c : added :export-symbols argument to dynamic-load.
	* lib/gauche/parseopt.scm : added yet another command-line option
	  parser.

2001-06-30  Shiro Kawai  <shiro@acm.org>

	* release 0.4
	* src/gauche/vm.h (SCM_VM_VALUES): fixed a bug in assertion.
	* doc/gauche-ref.texi : added description of "error" and some more.

2001-06-29  Shiro Kawai  <shiro@acm.org>

	* src/error.c and most *.scm : INCOMPATIBLE CHANGE: made "error"
	  procedure SRFI-23 compliant, i.e. the first argument is just
	  a string, and "format" is not called.   The former version which
	  uses format is renamed to "errorf".
	* ext/net/netlib.stub : INCOMPATIBLE CHANGE: sockaddr-family now
	  returns a symbol, rather than a keyword.
	* src/Makefile.in, src/gauche-config.in : changed install location
	  of site-specific DSOs; includes version number in the path.
	* src/main.c : use main's return value for exit code in script mode.
	* src/vm.c : remove reference to sysexits.h - it causes a duplicate
	  definition warning of EX_OK on IRIX, and we don't really need it.

2001-06-28  Shiro Kawai  <shiro@acm.org>

	* doc/gauche-ref.texi: added docs of sys-random and sys-srandom,
	  and some more.

2001-06-25  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/process.scm: changed call-with-io-process to
	  call-with-process-io
	* lib/gauche/with.scm : added call-with-string-io and
	  with-string-io
	* src/syslib.stub : added sys-random and sys-srandom.

2001-06-24  Shiro Kawai  <shiro@acm.org>

	* src/syslib.stub (sys-pipe): INCOMPATIBLE CHANGE: sys-pipe now
	  returns two values, instead of one value of a list of two ports.
	  Other files are fixed accordingly.
	* src/syslib.stub (sys-wait): INCOMPATIBLE CHANGE: sys-wait
	  and sys-waitpid now returns two values, pid and exit code,
	  instead of cons of them.
	  Other files are fixed accordingly.
	* src/vm.c, src/gauche/vminsn.h, src/stdlib.stub: added instructions
	  for values, char?, pair?, string?,... and make them inline.
	* ext/net/net.scm : fixed bugs.

2001-06-23  Shiro Kawai  <shiro@acm.org>

	* ext/net/configure.in : check existence of get*by*_r functions
	  before checking their synopsys.  Suggested by MINOURA Makoto.
	* release 0.3.15
	* doc/gauche-ref.texi : added description of process ports.

2001-06-22  Shiro Kawai  <shiro@acm.org>

	* ext/net/net.scm : cleaned up the API of make-client-socket and
	  make-server-socket.
	* ext/* : fixed installation location of extension modules.
	* lib/gauche/process.scm : added process ports.
	* src/main.c : fixed the calling scheme of ``main'' procedure,
	  according to the change of SRFI-22 draft.

2001-06-21  Shiro Kawai  <shiro@acm.org>

	* sys/class.c : changed API of Scm_InitBuiltinClass to allow
	  hardcoded slots.
	* ext/net/netdb.c : added netdb interface (hostent, protoent
	  and servent).

2001-06-20  Shiro Kawai  <shiro@acm.org>

	* src/Makefile.in : added system test
	* src/syslib.stub, src/system.c: various bug fixes

2001-06-19  Shiro Kawai  <shiro@acm.org>

	* src/syslib.stuc, src/system.c : added sys-select[!], the select(2)
	  interface.   added sys-mkdir, sys-umask and sys-chmod as well.
	* doc/gauche-ref.texi : enhanced description.
	* test/system.scm : added test for the system library.

2001-06-18  Shiro Kawai  <shiro@acm.org>

	* src/syslib.stub: added fdset operations

2001-06-17  Shiro Kawai  <shiro@acm.org>

	* src/proc.c, src/compile.c, src/vm.c, src/gauche/vminsn.c :
	  support generalized setter natively.
	* lib/srfi-17.scm : removed.
	* src/genstub : added 'setter' directive to define generalized
	  setter in C code.

2001-06-16  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h, src/genstub : changed to use macros rather than
	  bare static initializer in generated code

2001-06-14  Shiro Kawai  <shiro@acm.org>

	* src/genstub : reorganized the structure in more object-oriented
	  way.

2001-06-13  Shiro Kawai  <shiro@acm.org>

	* configure.in : made work with Solaris
	* ext/net/configure.in : made work with IRIX and Solaris
	* src/* : changed SCM_DEFINE_BUILTIN_CLASS macro to allow to set
	  allocation routine.

2001-06-12  Shiro Kawai  <shiro@acm.org>

	* ext/net/* : added more functions.
	* doc/gauche-ref.texi : added gauche.net description
	* src/main.c : when invoked with a script file, call "main" procedure
	  if defined.  proposed SRFi-22 behavior.

2001-06-11  Shiro Kawai  <shiro@acm.org>

	* ext/net/* : made low-level functions work

2001-06-10  Shiro Kawai  <shiro@acm.org>

	* ext/net/addr.c : added

2001-06-07  Shiro Kawai  <shiro@acm.org>

	* release 0.3.14
	* gc/dyn_load.c : fixed a bug that failed to find data segments
	  in dynamically loaded module on IRIX 6.5.
	* ext/charconv/* : fixed small bugs around compilation and
	  installation.
	* lib/port/jfilter.scm : added this compatibility module.
	* lib/Makefile.in : fixed a bug that some modules were not installed
	  properly.

2001-06-06  Shiro Kawai  <shiro@acm.org>

	* ext/charconv/* : made it work with Bruno Haible's libiconv as well.
	  Added automatic character detection routine.
	* src/regexp.c : fixed a bug with unused submatches.  added
	  Scm_RegMatchBefore and Scm_RegMatchAfter
	* src/extlib.stub : added rxmatch-before and rxmatch-after

2001-06-05  Shiro Kawai  <shiro@acm.org>

	* ext/charconv/* : added workaround for glibc-2.1 iconv() bug in
	  Shift-JIS handling.  added concept of ownership in the conversion
	  port to control whether the conversion port should close the remote
	  port.  changed Scheme API to use keyword arguments to specify
	  various parameters.

2001-06-04  Shiro Kawai  <shiro@acm.org>

	* src/port.c : allow bufport's flusher to flush less bytes than
	  specified.  unflushed bytes are shifted by the bufport routine.

2001-06-03  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub : added port->string, port->byte-string
	* ext/charconv/* : made it work.

2001-06-02  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub : added copy-port

2001-06-01  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h, src/gauche/portmacros.h, src/*.c : changed API of
	  Scm_Getz to be consisntent with C's fgets (port comes last), and
	  added len parameter to Scm_Putz.
	* src/port.c : fixed bugs in bufport_putz.
	* src/extlib.stub : added open-output-buffered-port.
	* lib/rfc/822.scm : added.
	* lib/gauche/regexp.scm, test/regexp.scm : added test and changed
	  semantics of rxmatch-case.

2001-05-31  Shiro Kawai  <shiro@acm.org>

	* src/port.c, test/euc-jp.scm : more tests and bug fixes for the
	  buffered port.
	* src/Makefile.in, test/mb-chars.scm : included a multibyte character
	  test to the standard tests.  mb-chars.scm loads tests specific
	  to the native character encoding.

2001-05-30  Shiro Kawai  <shiro@acm.org>

	* src/port.c, src/extlib.stub: added open-input-buffered-port.
	  fixed some bugs in buffered port implementation.

2001-05-29  Shiro Kawai  <shiro@acm.org>

	* release 0.3.13
	* configure.in, ext/charconv/* : check existence of iconv() to avoid
	  compilation error.  Added a new configure option --with-iconv
	  to tell if iconv is installed in a non-trivial location.
	* ext/uvector/* : added a test suite, and fixed bugs found by it.
	* src/load.c : use RTLD_NOW for dlopen() to avoid segfault when
	  loaded DSO has unresolved reference.
	* src/bignum.c : fixed a bug in Scm_MakeBignumFromSI that made wrong
	  result if the argument was LONG_MIN.
	* src/main.c : added batch mode, i.e. to evaluate input without
	  prompting and printing the result.  Useful for filter programs.

2001-05-28  Shiro Kawai  <shiro@acm.org>

	* release 0.3.12
	* configure.in, lib/slib.scm.in : let configure.in to find the slib
	  location.  the user can specify it by --with-slib=PATH,
	  alternatively.

2001-05-26  Shiro Kawai  <shiro@acm.org>

	* src/system.c, src/syslib.stub, configure.in, src/gauche/config.h.in:
	  Convert time_t to a number in Scheme world, instead of <sys-time>
	  object.  Since time_t need not be an integer, a new configure test
	  is added to check how to convert between time_t and Scheme number.

2001-05-25  Shiro Kawai  <shiro@acm.org>

	* src/port.c : finished buffered ports.
	* ext/charconv/* : adding more

2001-05-24  Shiro Kawai  <shiro@acm.org>

	* src/port.c : added buffered ports (not finished).
	* ext/net/* : fixed configuration strategy.

2001-05-22  Shiro Kawai  <shiro@acm.org>

	* configure.in, src/*: applied a patch by MINOURA Makoto
	  (makoto@hauN.ORG) to run on various NetBSD platforms.
	* doc/gauche-ref.texi: more docs.

2001-05-21  Shiro Kawai  <shiro@acm.org>

	* lib/slib.scm : added SLIB initialization file for Gauche.
	  Say (require "slib") and you can use slib.
	* src/string.c (count_length): fixed a bug that didn't recognize
	  an incomplete character at the end of a string.

2001-05-20  Shiro Kawai  <shiro@acm.org>

	* release 0.3.11
	* src/port.c, src/gauche/portmacros.h : added code to input string
	  port to handle the case that rest bytes consist an incomplete
	  character.
	* src/string.c : disallow string-ref on an incomplete string.
	* test/euc-jp.scm : added tests for incomplete strings

2001-05-19  Shiro Kawai  <shiro@acm.org>

	* src/string.c : revised for handling of incomplete string.
	* src/symbol.c (Scm_Intern): make symbol name immutable string.
	* src/* : renamed <something>CStr, <something>Cstr and <something>CSTR
	  to <something>z or <something>Z, for consistency.  This made
	  incompatible change in API.

2001-05-18  Shiro Kawai  <shiro@acm.org>

	* src/string.c, src/gauche.h and other files : changed ScmString
	  structure to handle incomplete and/or immutable string in
	  better way.  API of string construction is changed in incompatible
	  way.

2001-05-17  Shiro Kawai  <shiro@acm.org>

	* src/bignum.c, src/extlib.stub, test/number.scm : finished logand
	  and logior

2001-05-16  Shiro Kawai  <shiro@acm.org>

	* src/number.c, src/extlib.stub : added lognot.

2001-05-15  Shiro Kawai  <shiro@acm.org>

	* src/extlib.stub: removed some subrs that are defined somewhere
	  else.
	* doc/gauche-ref.texi: start writing this.

2001-05-14  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h, src/gauche/portmacros.h, src/port.c : separated
	  port macros (SCM_GETC, etc.) to a subheader.  added fill function
	  pointer to the input string port, so that it can be a general
	  buffered input port.
	* src/bignum.c, src/number.c : start adding logical operations.
	  finished ash.
	* src/number.c (exact_expt): fixed a bug in the shortcut of -1^y.

2001-05-12  Shiro Kawai  <shiro@acm.org>

	* release 0.3.10
	* src/number.c (Scm_Expt): properly handles fraction power of
	  negative real numbers, and exact powers.
	* src/vm.c: added Scm_Values2 and Scm_Values3, C-interfaces to
	  return multiple values.
	* src/stdlib.stub, lib/gauche/numerical.scm: made
	  %complex->real/imag to return multiple values, avoiding consing.

2001-05-11  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/numerical.scm : fixed more numeric instability of
	  acos, asinh, acosh.  Finally Gauche can plot the fascinating
	  pictures shown in the "Numbers" section of "Common Lisp, the
	  Language, 2nd edition".

2001-05-10  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/numeric.c: fixed asin and acos to avoid numeric
	  instabilities.
	* src/number.c: fixed wrong definition of SCM_IS_NAN when
	  HAVE_ISNAN is not defined.
	* src/stdlib.stub: allow to pass 0.0 to %log, letting the system
	  log() to yield NaN.

2001-05-09  Shiro Kawai  <shiro@acm.org>

	* lib/gauche/numeric.c: fixed some bugs in the definition of
	  complex trigonometric functions.
	* src/number.c (Scm_NumberToString): prints #<nan> and #<inf>.
	  extended # of digits of flonum to 20 so that it is properly
	  read back.  prints small int with arbitrary radix.
	* src/number.c (Scm_Max): still had a bug in treating inexactness.

2001-05-08  Shiro Kawai  <shiro@acm.org>

	* src/gauche-init.scm: fixed a bug in the definition of atan.
	* src/stdlib.stub: fixed a bug in =, which made it fail for
	  complex numbers.
	* src/vm.c (run_loop): fixed a bug that caused SEGV when the error
	  handler tries to obtain stack trace.   fixed a bug in NUMEQ2
	  instruction.
	* src/stdlib.stub (symbol->string): fixed a bug that didn't check
	  if arg is symbol (Thanks to Yuuichi Teranishi).

2001-05-07  Shiro Kawai  <shiro@acm.org>

	* test/cmpplane.scm : a port of the program shown in CLtL2 to plot
	  complex functions in complex plane.  it seems that this reveals
	  a serious bug in VM...

2001-05-06  Shiro Kawai  <shiro@acm.org>

	* src/number.c (read_complex) : fixed a bug that read +0i and -0i
	  as a complex number, instead of flonum 0.0.
	* src/hash.c, src/extlib.stub, lib/srfi-13/hash.scm: added %hash-string
	  which exposes internal string hash function, and implemented
	  string-hash (SRFI-13) on top of it.

2001-05-05  Shiro Kawai  <shiro@acm.org>

	* src/number.c : fixed number reader to recognize x+0i as x (real
	  number).  added Scm_OddP to deal with inexact numbers.  re-added
	  Scm_NumEq, for Scm_NumCmp doesn't handle complex numbers.
	  Moved most of transcendental functions to stdlib.stub.
	* src/stdlib.stub : fixed several domain bugs in numeric predicates.
	  Implemented most of real transcendental functions here.
	* src/gauche-init.scm, lib/gauche/numerical.scm : Implemented
	  transcendental functions for complex domain.
	* src/boolean.c : use Scm_NumEq instead of Scm_NumCmp.
	* test/number.scm : added tests for numeric predicates, complex
	  readers, and arithmetic functions.

2001-05-04  Shiro Kawai  <shiro@acm.org>

	* src/number.c : fixed Scm_Max and Scm_Min to treat exactness
	  correctly (at least one arg is inexact, result is always inexact).
	* src/string.c : Scm_ListToString and Scm_MakeStringFromList were
	  using the same routines.  Integrated them to one function.

2001-05-03  Shiro Kawai  <shiro@acm.org>

	* release 0.3.9
	* INSTALL: added explanation about --enable-multibyte option.
	* test/euc-jp.scm: added Japanese tests of string-library.

2001-05-02  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-13/*.scm : fixed number of bugs
	* src/string.c, src/extlib.stub : removed redundant 'end' parameter
	  from Scm_StringSubstitute and string-substitute!
	* test/srfi.scm : finished tests for SRFI-13

2001-05-01  Shiro Kawai  <shiro@acm.org>

	* test/string.scm : added more tests for builtin string ops
	* test/srfi.scm : start adding SRFI-13 functions
	* lib/srfi-13/*.scm : fixing bugs

2001-04-30  Shiro Kawai  <shiro@acm.org>

	* src/gauche.h, src/string.c, src/extlib.stub: added 'grammer'
	  argument to Scm_StringJoin and string-join, so that it will be
	  compatible to SRFI-13.
	* lib/srfi-13/*.scm: added some more srfi-13 stuff.

2001-04-26  Shiro Kawai  <shiro@acm.org>

	* src/srfi-13/*: added some more.
	* src/string.c, src/gauche.h, src/extlib.stub: added string-pointer
	  object.  removed StringTake stuff which are moved to srfi-13.
	* test/string.scm, test/euc-jp.scm: added test for string-pointer
	  object.
	* src/gauche/char_euc_jp.h, src/gauche/char_utf_8.h: improved
	  CHAR_BACKWARD macros.

2001-04-25  Shiro Kawai  <shiro@acm.org>

	* configure.in, src/gauche/config.h.in, src/gauche/char_*.h:  added
	  --enable-multibyte=ENCODING option so that the user can choose
	  native encoding system.
	* many files: changed SCM_STR_{GET|PUT}C to SCM_CHAR_{GET|PUT} for
	  consistency.
	* src/string.c : start adding StringPointer object.

2001-04-24  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-14/query.scm, lib/srfi-14/set.scm: splitted srfi-14.

2001-04-23  Shiro Kawai  <shiro@acm.org>

	* lib/srfi-13/generator.scm, lib/srfi-13/pred.scm,
	  lib/srfi-13/selector.scm: added some srfi-13 functions.

2001-04-22  Shiro Kawai  <shiro@acm.org>

	* release 0.3.8
	* lib/srfi-13.scm: began to implement this.
	* src/string.c, src/stdlib.stub: modified string-fill!, string->list
	  and string-copy to take optional start/end arguments as in SRFI-13.
	* src/gauche-init.scm, lib/gauche/numerical.scm: implemented some
	  R5RS numerical functions (e.g. gcd and lcm) in Scheme, and set
	  autoload for it.
	* src/bignum.c: further debugging for the infrequent path of the
	  division code.

2001-04-21  Shiro Kawai  <shiro@acm.org>

	* src/bignum.c, src/number.c, test/number.scm: fixed integer
	  division/remainer/modulo routines.
	* src/Makefile.in: added test/number.scm for test targets.

2001-04-19  Shiro Kawai  <shiro@acm.org>

	* release 0.3.7
	* src/read.c (read_charset): added #[...] extension for literal
	  charset syntax.
	* src/char.c: adapted print syntax to the literal charset syntax.
	  added charset reading function (Scm_CharSetRead).
	  added predefined charsets.
	* src/extlib.stub, lib/srfi-14.scm: adapted predefined charset.
	* src/regexp.c: added \s, \S, \w, \W, \d and \D character
	  classes.  Added stack boundary check to protect from too deep
	  recursive calls.
	* configure.in, gc/mach_dep.c: applied a patch from Shigenobu
	  Kimura (skimu@ti.com) in order to compile under NetBSD.

2001-04-18  Shiro Kawai  <shiro@acm.org>

	* test/number.scm: added.
	* src/vm.c: fixed a bug that related to NUMADDI, NUMSUBI.
	* src/number.c, src/bignum.c: fixed number of bugs related to
	  bignum reader and bignum addition/subtraction.

2001-04-17  Shiro Kawai  <shiro@acm.org>

	* release 0.3.6
	* src/bignum.c: added Scm_BignumDivSI, and a conversion routine
	  from bignum to string; not debugged well.
	* src/number.c (read_complex): fixed a bug that caused segfault.
	* src/regexp.c: correctly recognize ']' at the beginning of the
	  character range.

2001-04-16  Shiro Kawai  <shiro@acm.org>

	* src/regexp.c: added BOL/EOL anchors (^ and $).  Fixed some bugs
	  in character range operator.
	* test/regexp.scm: more tests.

2001-04-15  Shiro Kawai  <shiro@acm.org>

	* release 0.3.5
	* src/read.c: added #/.../ extension to embed literal regexp.
	* src/regexp.c: the first version of regexp starts working.

2001-04-14  Shiro Kawai  <shiro@acm.org>

	* ext/uvector/*: finished the first version of uvector module.
	* src/read.c (Scm_Read): added a hook function for srfi-4 extended
	  syntax when uvector module is loaded.
	* src/load.c (Scm_Load): added a second parameter that specifies
	  whether an error should be signalled when the file is not found.
	* ext/example/*.in: for "in-place" configuration, automatically
	  give appropriate -I option to gosh.
	* ext/Makefile: added uvector

2001-04-12  Shiro Kawai  <shiro@acm.org>

	* release 0.3.4
	* src/regexp.c: started to write this one.

2001-04-09  Shiro Kawai  <shiro@acm.org>

	* src/list.c, src/extlib.c, lib/srfi-1.scm: added %assoc-delete[!]
	  and rewrite assoc-delete[!] to use them if possible.

2001-04-08  Shiro Kawai  <shiro@acm.org>

	* src/compile.c (compile_body): body of "begin" is correctly spliced
	  into it's surrounding body.

2001-04-07  Shiro Kawai  <shiro@acm.org>

	* release 0.3.3
	* lib/Makefile.in: oops, forgot to install with.scm
	* test/srfi.scm: more tests for srfi-1 functions.

2001-04-06  Shiro Kawai  <shiro@acm.org>

	* release 0.3.2
	* src/gauche-init.scm: moved some functions into library, and
	  define autoload for them.
	* src/char.c, src/extlib.stub: added gauche-char-encoding
	* src/vm.c: support multi-value continuation.  fixed a bug for
	  multiple value handling.
	* test/srfi.scm: added tests for srfi-1 functions.

2001-04-05  Shiro Kawai  <shiro@acm.org>

	* release 0.3.1
	* lib/srfi-1.scm, lib/srfi-1/*: splitted srfi-1.scm into a bunch of
	  small files that will be autoloaded on demand.
	* src/list.c, src/extlib.stub: added %delete[!], %delete-duplicates[!]
	* src/load.c: use stat() instead of access() to check existence of
	  the file, in order to rule out a directory with the same name.

2001-04-04  Shiro Kawai  <shiro@acm.org>

	* release 0.3
	* src/*.[ch]: changed object write protocol.  Object writers receive
	  ScmWriteContext that encapsulates various information instead of
	  an simple interger.  Further enhancement will be done, without
	  breaking the protocol.
	* lib/srfi-14.scm, src/char.c: finished working version of char-set
	  srfi (although the UCS support is limited).

2001-04-03  Shiro Kawai  <shiro@acm.org>

	* release 0.2.20:
	* src/char.c, src/extlib.stub: added more charset stuff.
	* src/syslib.stub (sys-tmpnam): use mkstemp() instead of tmpnam()
	  if possible.

2001-04-02  Shiro Kawai  <shiro@acm.org>

	* release 0.2.19:
	* gauche/serializer.scm, gauche/serializer/aserializer.scm: ports
	  from the modules written for STk.  This is an experimental code
	  and its API may change later.
	* test/object.scm: more test for metaclass.
	* src/class.c: fixed a bug to set a appropriate allocator.  added
	  consistency checks in native slot setters.
	* src/vm.c (run_loop): fixed a bug that didn't adjust argument
	  frame size upon calling a method.

2001-04-01  Shiro Kawai  <shiro@acm.org>

	* release 0.2.18
	* lib/gauche/object.scm: finishing metaclass stuff (not well tested
	  yet).
	* src/char.c: start adding character set stuff.
	* src/boolean.c (Scm_EqualP): added a hook for class compare routine.
	* lib/gauche/object.scm, src/vm.c: generic function application
	  metaobject protocol implemented (not tested, though).
	* src/moplib.stub: added %make-next-method
	* src/list.c: added Scm_ListToArray.
	* src/compare.c, src/extlib.stub: added sorting-related routines
	  and Scheme functions sort and sort!.
	* src/number.c (Scm_NumCmp): fixed a bug that didn't work properly
	  for flonums.

2001-03-31  Shiro Kawai  <shiro@acm.org>

	* release 0.2.17
	* src/class.c: implement default method of compute-applicable-methods
	  and method-more-specific?
	* src/string.c, src/stdlib.stub: consolidated string comparison
	  routines to Scm_StringCmp and Scm_StringCiCmp.
	* src/number.c, src/stdlib.stub, src/vm.c: consolidated number
	  comparison routines to a single function, Scm_NumCmp.
	* lib/srfi-17.scm, lib/gauche/object.scm: srfi-17 (generalized set!)
	  is now a part of Gauche module.  No need to say "(use srfi-17)"
	  anymore.
	* src/load.c: allow filename without default suffix.
	* lib/rfc/base64.scm: added.  Base64 encode/decode routine.
	* src/gauche.h: fixed a bug in SCM_GETB.
	* src/stdlib.stub, src/vm.c, src/gauche/vminsn.h : inline
	  read-char and write-char.
	* src/genstub (emit-inliner-header): fixed a bug in the case of
	  optional arg.  Start using the object system.

2001-03-30  Shiro Kawai  <shiro@acm.org>

	* release 0.2.16
	* src/vm.c, src/compile.c, src/gauche/vminsn.h, src/stdlib.stub:
	  added SCM_VM_LREF1[0-5] instructions.   inline memq, assq, assv.
	* src/extlib.stub: added read-byte
	* src/symbol.c: escape illegal charcters in a symbol when wrote.
	* src/class.c: added slot-bound? and slot-bound-using-class?
	* src/compile.c: fixed a bug that didn't compile SCM_VM_LSET[0-5]
	  properly.
	* lib/gauche/object.scm: added slot-exists? and
	  slot-exists-using-class?

2001-03-29  Shiro Kawai  <shiro@acm.org>

	* release 0.2.15
	* src/*.c: removed "equal" protocol from class definition.  clean up
	  builtin class definition macros.
	* src/class.c, src/write.c: moved write-object stuff from class.c
	  to write.c
	* lib/gauche/process.scm: added.  mostly STk-compatible process
	  module, but implemented as an object.
	* src/system.c, src/syslib.stub: added Scm_SysExec, that calls
	  execvp() with taking care of file discriptors.  Changed sys-exec
	  accordingly.

2001-03-28  Shiro Kawai  <shiro@acm.org>

	* release 0.2.14
	* src/class.c: added generic function write-object.
	* src/error.c, src/vm.c, src/gauche/vm.h: added vm->errorFlags,
	  and use SCM_ERROR_BEING_HANDLED flag to avoid infinite 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:
