-
-
Notifications
You must be signed in to change notification settings - Fork 82
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
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Texinfo 7 can provides ePub output. ePub format can be used for many devices.
Thanks! |
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
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Add ePub document generator.
Texinfo 7 can provides ePub output.
ePub format can be used for many devices.