Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add document generator in ePub format #959

Merged
merged 2 commits into from
Nov 15, 2023
Merged

Add document generator in ePub format #959

merged 2 commits into from
Nov 15, 2023

Conversation

qykth-git
Copy link
Contributor

Add ePub document generator.

Texinfo 7 can provides ePub output.
ePub format can be used for many devices.

Texinfo 7 can provides ePub output.
ePub format can be used for many devices.
@shirok shirok merged commit 5a2b757 into shirok:master Nov 15, 2023
5 checks passed
@shirok
Copy link
Owner

shirok commented Nov 15, 2023

Thanks!

@qykth-git qykth-git deleted the epub branch November 17, 2023 11:18
wip-sync pushed a commit to NetBSD/pkgsrc-wip that referenced this pull request Feb 11, 2024
Changelog:

2024-01-25  Shiro Kawai  <[email protected]>

	* Release 0.9.14

2024-01-23  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

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

2024-01-16  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

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

2024-01-12  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

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

2023-12-30  Shiro Kawai  <[email protected]>

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

2023-12-29  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

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

2023-12-17  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

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

2023-11-25  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

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

2023-11-15  Shiro Kawai  <[email protected]>

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

2023-11-14  Shiro Kawai  <[email protected]>

	* ext/tls: Support TLS server connection.

2023-11-10  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

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

2023-10-27  Shiro Kawai  <[email protected]>

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

2023-10-26  Shiro Kawai  <[email protected]>

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

2023-10-24  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

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

2023-10-14  Shiro Kawai  <[email protected]>

	* Various files: Remove code with GAUCHE_API_VERSION < 98

2023-10-11  Shiro Kawai  <[email protected]>

	* Release 0.9.13

2023-10-07  Shiro Kawai  <[email protected]>

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

2023-10-05  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

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

2023-10-03  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

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

2023-09-10  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

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

2023-09-06  Shiro Kawai  <[email protected]>

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

2023-08-31  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

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

2023-08-25  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* src/memo.c (Scm_MemoTablePutv): Workaround for table extension
	  failure.  https://github.com/shirok/Gauche/issues/914

2023-08-07  Shiro Kawai  <[email protected]>

	* lib/control/scheduler.scm (scheduler-reschedule!): Allow to change
	  only time or duration argument, leaving the other intact.

2023-08-04  Shiro Kawai  <[email protected]>

	* src/compile-1.scm (pass1/extended-lambda-body): Expand :optional
	  handling hygienically.

2023-08-01  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* libsrc/text/console.scm (call-with-console), src/portapi.c:
	  Fix port terminal mode handling.

2023-07-16  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* src/libnum.scm (logset+clear): Added.

2023-07-06  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* doc/extract.scm, lib/tools/preprocess-info: Rename extract script
	  and make it avaialble as a tool script.

2023-06-20  Shiro Kawai  <[email protected]>

	* lib/srfi/216.scm, src/srfis.scm: Support SRFI-216, SICP prerequisites.

2023-06-12  Shiro Kawai  <[email protected]>

	* src/libvec.scm, ext/uvector/uvector.scm: Move string <-> uvector
	  conversion routines to core, to avoid dependency issues.

2023-06-11  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* lib/gauche/procedure.scm: Renamed to procutil.scm for the
	  consistency.

2023-06-04  Shiro Kawai  <[email protected]>

	* gc/: bumped bdwgc 8.2.4

2023-06-02  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* lib/rfc/base64.scm (base64-decode): Add :strict keyword argument.

2023-05-20  Shiro Kawai  <[email protected]>

	* lib/gauche/mop/typed-slot.scm: Added experimentally.

2023-05-19  Shiro Kawai  <[email protected]>

	* libsrc/gauche/sequence.scm (inverse-permuter, unpermute): Added.
	  The names can be better.  Let's see.

2023-05-16  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* ext/gauche/unicode.scm (string-east-asian-width, string-take-width)
	  (string-drop-width): Added.

2023-04-13  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* lib/math/simplex.scm: Allow any sequence to be b an c vectors;
	  we copy them internally anyway.

2023-03-27  Shiro Kawai  <[email protected]>

	* 0.9.13_pre3

2023-03-25  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* src/libsys.scm (seconds+): Added (srfi-226)

2023-03-01  Shiro Kawai  <[email protected]>

	* lib/srfi/235.scm: Start adding.

2023-02-28  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* src/libparam.scm (temporarily): 'with' -> 'temporarily', according
	  to srfi-226 revision.

2023-02-25  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* lib/srfi/239.scm: Add srfi-239 (documented).

2023-02-18  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* src/srfis.scm (srfi-244): Supported (it's already in the core).

2023-02-01  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* src/geninsn: Add feature to load/save insn to opcode map.
	  See https://github.com/shirok/Gauche/issues/869

2023-01-26  Shiro Kawai  <[email protected]>

	* src/libfmt.scm (make-format-plural): Support ~P.

2023-01-24  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* src/number.c (Scm_SinPi): Make sure
	  (= (real-sinpi 0.25) (real-cospi 0.25)).

2023-01-22  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* libsrc/data/ring-buffer.scm (ring-buffer-room): API Added.

2023-01-18  Shiro Kawai  <[email protected]>

	* lib/contro/plumbing.scm: Move tapping port from gauche.vport.

2023-01-15  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* lib/gauche/fmtutil.scm: Support ~@r roman numeral formatter.

2022-12-29  Shiro Kawai  <[email protected]>

	* src/libmacro.scm (rotate!): Added.  CL's rotatef.

2022-12-25  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* lib/srfi/172.scm, lib/srfi/172/functional.scm: Added.

2022-12-21  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* src/libfmt.scm (formatter-lex): Support ~ + newline

	* lib/srfi-228.scm, src/srfis.scm: Add srfi-228.

2022-12-08  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* lib/scheme/comparator.scm: Incorporate srfi-162 as sell.

	* lib/compat/chibi-test.scm (chibi-test): Support test-equal.

2022-11-18  Shiro Kawai  <[email protected]>

	* src/parameter.c, src/libparam.scm (current-parameterization),
	  (parameterization?, call-with-parameterization): Added.

2022-11-15  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* lib/srfi-236.scm: Added.

2022-11-12  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* src/vm.c: Store exception handler in DENV.

2022-10-29  Shiro Kawai  <[email protected]>

	* src/vm.c: VM inherits denv from calling thread.

	* src/list.c (Scm_AlistCopy): Implement in C.

2022-10-28  Shiro Kawai  <[email protected]>

	* src/compile-*.scm: Support with-continuation-mark.

2022-10-27  Shiro Kawai  <[email protected]>

	* src/compile.scm ($DYNENV): New IForm node for supporting
	  continuation marks.

2022-10-20  Shiro Kawai  <[email protected]>

	* src/parameter.c, ext/threads/threads.scm (make-thread-local):
	  Add srfi-226 thread-local APIs.

2022-10-19  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* src/libmacro.scm (quasirename): Attach source info of the
	  quasirename constructed lists.

2022-10-02  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* lib/srfi-222.scm: Added.

2022-08-12  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* lib/text/segmented-match.scm (text.segmented-match): Added.

2022-08-09  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* src/libexc.scm, src/srfis.scm: Export missing identifiers from
	  srfi-35.

2022-08-04  Shiro Kawai  <[email protected]>

	* src/libvec.scm (bitvector-any-value?, bitvector-every-value?):
	  Allow start/end optional args.

2022-08-03  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* lib/scheme/regex.scm (scheme.regex): Export missing regex?
	  https://github.com/shirok/Gauche/pull/836

2022-07-28  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* src/libvec.scm (bitvector-any?, bitvector-every?, bitvector-none?):
	  These are not in srfi-178 but handy to have.

2022-07-06  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* ext/mt-random: Make mersenne twister RNG thread-safe by default.

2022-07-03  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* Release 0.9.12

2022-06-21  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* lib/srfi-232.scm: Add srfi-232 Flexible curried procedures.

2022-06-05  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* src/liblist.scm (num-pairs): Added.

2022-05-30  Shiro Kawai  <[email protected]>

	* test/net.scm: Recover gauche.net test

2022-05-29  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* src/libvec.scm (make-s8vector etc.), ext/uvector/uvlib.scm.tmpl:
	  Move constructors to the core.

2022-05-21  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* ext/tls/tls.ac: Do not compile axtls by default.  Preparing
	  to drop axtls support in future releases.

2022-05-10  Shiro Kawai  <[email protected]>

	* src/signal.c (Scm_SigWait): Avoid using signal number 0 for
	  sigismember/sigdelset.  This causes failure on OSX Monterey.

2022-04-21  Shiro Kawai  <[email protected]>

	* ext/srfi/srfi-19.scm: Define object-compare for <date>.

2022-04-20  Shiro Kawai  <[email protected]>

	* lib/util/temporal-relation.scm: Added.

2022-04-18  Shiro Kawai  <[email protected]>

	* configure.ac: 0.9.12_pre1

2022-04-17  Shiro Kawai  <[email protected]>

	* src/liblist.scm (list-ref): Better error message.
	  (See comments in https://github.com/shirok/Gauche/issues/814)

2022-04-16  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* ext/tls/tls.c: Fix fd leak in <ax-tls>
	  https://github.com/shirok/Gauche/issues/817

2022-03-21  Shiro Kawai  <[email protected]>

	* lib/control/thread-pool.scm (wait-all): Fix race condition
	  ( https://github.com/shirok/Gauche/issues/812 )

2022-03-16  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* src/libalpha.scm (make-case-lambda): No longer look at 'formals'
	  argument; the info can be extracted from closures.

2022-02-14  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* data/ulid.scm: Added.  Port from https://github.com/shirok/scheme-ulid

2022-02-10  Shiro Kawai  <[email protected]>

	* gc: Bumped bdwgc 8.0.6

2022-02-09  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* lib/srfi-227.scm: Added srfi-227.

2022-01-18  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* src/mmap.c (Scm_SysMmapWX): Separate writable pages and executable
	  page if PaX MPROTEXT is active.

2022-01-04  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* Release 0.9.11

2021-12-16  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* src/libio.scm (%write-walk-rec): Handle circular reference through
	  boxes.  https://github.com/shirok/Gauche/issues/787

2021-12-01  Shiro Kawai  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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.

…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants