Gauche-0.9.10/0000775000000000000000000000000013764630575011515 5ustar rootrootGauche-0.9.10/.dir-locals.el0000664000000000000000000000311713764626217014146 0ustar rootroot((scheme-mode (indent-tabs-mode . nil) (lisp-local-indent ^ 1 $let 1 $let* 1 and-let* 1 and-let1 2 begin0 1 call-with-client-socket 1 call-with-input-conversion 1 call-with-input-file 1 call-with-input-process 1 call-with-input-string 1 call-with-iterator 1 call-with-output-conversion 1 call-with-output-file 1 call-with-output-string 0 call-with-process-io 1 call-with-string-io 1 call-with-temporary-file 1 call-with-values 1 define-method 2 do-generator 1 dolist 1 dotimes 1 ecase 1 eval-when 1 glet* 1 glet1 2 guard 1 if 1 if-let1 2 if-match 2 let*-values 1 let-args 2 let-keywords 2 let-keywords* 2 let-match 2 let-optionals* 2 let-syntax 1 let-values 1 let/cc 1 let1 2 letrec-syntax 1 make 1 match 1 match-lambda 0 match-lambda* 0 match-let 1 match-let* 1 match-let1 2 match-letrec 1 parameterize 1 parse-options 1 quasirename 1 rec 1 receive 2 rlet1 2 rxmatch-case 1 rxmatch-cond 0 rxmatch-if 2 rxmatch-let 2 syntax-rules 1 unless 1 until 1 unwind-protect 1 when 1 while 1 with-builder 1 with-error-handler 0 with-error-to-port 1 with-input-conversion 1 with-input-from-port 1 with-input-from-process 1 with-input-from-string 1 with-iterator 1 with-module 1 with-output-conversion 1 with-output-to-port 1 with-output-to-process 1 with-output-to-string 0 with-port-locking 1 with-ports 3 with-signal-handlers 1 with-string-io 1 with-time-counter 1))) Gauche-0.9.10/.github/0000775000000000000000000000000013764626217013053 5ustar rootrootGauche-0.9.10/.github/workflows/0000775000000000000000000000000013764626217015110 5ustar rootrootGauche-0.9.10/.github/workflows/build.yml0000664000000000000000000001277713764626217016750 0ustar rootrootname: Build on: push: pull_request: #schedule: # - cron: '0 */2 * * *' jobs: build-linux: runs-on: ubuntu-latest timeout-minutes: 90 env: GET_GAUCHE_URL: https://raw.githubusercontent.com/shirok/get-gauche/master GAUCHE_TEST_PATH: ../Gauche-tmp-self-host-test/stage2 TESTLOG_NAME: testlog-linux TESTLOG_PATH: testlog-linux steps: - uses: actions/checkout@v2 - name: Install Gauche run: | pwd curl -f -o get-gauche.sh $GET_GAUCHE_URL/get-gauche.sh chmod +x get-gauche.sh ./get-gauche.sh --auto --home - name: Add Gauche path run: | echo "PATH=$HOME/bin:$PATH" >> $GITHUB_ENV - name: Run Gauche once run: | gosh -V - name: Install tools run: | sudo apt-get install libgdbm-dev - name: Self-host-test run: | gcc -v ./DIST self-host-test - name: Copy testlog if: always() run: | mkdir -p $TESTLOG_PATH/$TESTLOG_NAME cp $GAUCHE_TEST_PATH/src/test.log $TESTLOG_PATH/$TESTLOG_NAME cp $GAUCHE_TEST_PATH/ext/threads/test.log $TESTLOG_PATH/$TESTLOG_NAME/test-threads.log - name: Upload testlog if: always() uses: actions/upload-artifact@v1 with: name: ${{ env.TESTLOG_NAME }} path: ${{ env.TESTLOG_PATH }} build-osx: runs-on: macos-latest timeout-minutes: 90 env: GET_GAUCHE_URL: https://raw.githubusercontent.com/shirok/get-gauche/master GAUCHE_TEST_PATH: ../Gauche-tmp-self-host-test/stage2 TESTLOG_NAME: testlog-osx TESTLOG_PATH: testlog-osx steps: - uses: actions/checkout@v2 - name: Install Gauche run: | pwd curl -f -o get-gauche.sh $GET_GAUCHE_URL/get-gauche.sh chmod +x get-gauche.sh ./get-gauche.sh --auto --home - name: Add Gauche path run: | echo "PATH=$HOME/bin:$PATH" >> $GITHUB_ENV - name: Run Gauche once run: | gosh -V - name: Install tools run: | brew install automake - name: Self-host-test run: | gcc -v ./DIST self-host-test - name: Copy testlog if: always() run: | mkdir -p $TESTLOG_PATH/$TESTLOG_NAME cp $GAUCHE_TEST_PATH/src/test.log $TESTLOG_PATH/$TESTLOG_NAME cp $GAUCHE_TEST_PATH/ext/threads/test.log $TESTLOG_PATH/$TESTLOG_NAME/test-threads.log - name: Upload testlog if: always() uses: actions/upload-artifact@v1 with: name: ${{ env.TESTLOG_NAME }} path: ${{ env.TESTLOG_PATH }} build-windows: runs-on: windows-latest timeout-minutes: 90 strategy: fail-fast: false matrix: arch: [x86_64, i686] include: - arch: x86_64 bit: 64 devtool_path: D:\devtool64 - arch: i686 bit: 32 devtool_path: D:\devtool32 env: GAUCHE_VERSION_URL: https://practical-scheme.net/gauche/releases/latest.txt GAUCHE_INSTALLER_URL: https://prdownloads.sourceforge.net/gauche GAUCHE_PATH: ${{ matrix.devtool_path }}\Gauche\bin TESTLOG_NAME: testlog-windows-${{ matrix.arch }} TESTLOG_PATH: testlog-windows-${{ matrix.arch }} steps: - run: git config --global core.autocrlf false - uses: actions/checkout@v2 - uses: msys2/setup-msys2@v2 with: msystem: MINGW${{ matrix.bit }} path-type: inherit release: true update: true install: 'base-devel mingw-w64-${{ matrix.arch }}-toolchain' - name: Run MSYS2 once shell: msys2 {0} run: | pwd echo $MSYSTEM echo $MSYS2_PATH_TYPE echo $PATH - name: Install Gauche shell: msys2 {0} run: | GAUCHE_INSTALLER_VERSION=`curl -f $GAUCHE_VERSION_URL` echo $GAUCHE_INSTALLER_VERSION GAUCHE_INSTALLER=Gauche-mingw-$GAUCHE_INSTALLER_VERSION-${{ matrix.bit }}bit.msi echo $GAUCHE_INSTALLER curl -f -L -o $GAUCHE_INSTALLER $GAUCHE_INSTALLER_URL/$GAUCHE_INSTALLER ls -l cmd.exe //c "start /wait msiexec /a $GAUCHE_INSTALLER /quiet /qn /norestart TARGETDIR=${{ matrix.devtool_path }}" - name: Add Gauche path run: | echo "PATH=$env:GAUCHE_PATH;$env:PATH" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - name: Run Gauche once shell: msys2 {0} run: | where gosh gosh -V - name: Install tools shell: msys2 {0} run: | #pacman -S --noconfirm msys/winpty #winpty --version where openssl echo 'Rename unavailable openssl.exe' mv /mingw${{ matrix.bit }}/bin/openssl.exe /mingw${{ matrix.bit }}/bin/openssl_NG.exe where openssl /usr/bin/openssl version - name: Build shell: msys2 {0} run: | gcc -v ./DIST gen src/mingw-dist.sh - name: Test shell: msys2 {0} run: | make -s check - name: Copy testlog if: always() shell: msys2 {0} run: | mkdir -p $TESTLOG_PATH/$TESTLOG_NAME cp src/test.log $TESTLOG_PATH/$TESTLOG_NAME cp ext/threads/test.log $TESTLOG_PATH/$TESTLOG_NAME/test-threads.log - name: Upload testlog if: always() uses: actions/upload-artifact@v1 with: name: ${{ env.TESTLOG_NAME }} path: ${{ env.TESTLOG_PATH }} #- name: Upload result # if: always() # uses: actions/upload-artifact@v1 # with: # name: Gauche-${{ matrix.arch }} # path: ../Gauche-mingw-dist/Gauche-${{ matrix.arch }} Gauche-0.9.10/AUTHORS0000664000000000000000000000110013764626217012553 0ustar rootroot-*- coding: utf-8 -*- Primary authors: Shiro Kawai (shiro@acm.org) Kimura Fuyuki (fuyuki@nigredo.org) Alex Shinn (foof@synthcode.com) Rui Ueyama (rui314@gmail.com) Document translation: Makoto Satoh (makotosato2@yahoo.co.jp) Nobuo Yamashita (nobsun@sampou.org) Patches and modules from: Abe Hiroshi Grzegorz Chrupala Hiroshi INAMURA HISAZUMI Kenji HIRAUCHI Hideyuki Iriguti Yosinobu Jiro KANAYAMA John Kilburg KIMURA Shigenobu Kouhei Sutou Michal Maruška MINOURA Makoto ODA Hideo OGURISU Osamu OOHASHI Daichi Shin-ichi Hirata Tatsuya BIZENN YOKOTA Hiroshi Yuuki Takahashi Gauche-0.9.10/COPYING0000664000000000000000000002666513764626217012565 0ustar rootrootYou can use, modify, and redistribute this software under the revised BSD license. See below for the actual copyright holders and the exact terms of license for various parts of the software. Copyright and condition of use of main portion of the source: ----------------------------------------------------------------------------- Copyright (c) 2000-2020 Shiro Kawai Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the authors nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ----------------------------------------------------------------------------- Copyright of gc/* ----------------------------------------------------------- Copyright 1988, 1989 Hans-J. Boehm, Alan J. Demers Copyright (c) 1991-1995 by Xerox Corporation. All rights reserved. Copyright (c) 1996-1999 by Silicon Graphics. All rights reserved. Copyright (c) 1999-2001 by Hewlett-Packard. All rights reserved. THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED OR IMPLIED. ANY USE IS AT YOUR OWN RISK. Permission is hereby granted to use or copy this program for any purpose, provided the above notices are retained on all copies. Permission to modify the code and to distribute modified code is granted, provided the above notices are retained, and a notice that the code was modified is included with the above copyright notice. Copyright of gc/libatomic_ops/* --------------------------------------------- GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright of libsrc/srfi-1.scm ---------------------------------------------- ;;; Copyright (c) 1998, 1999 by Olin Shivers. You may do as you please with ;;; this code as long as you do not remove this copyright notice or ;;; hold me liable for its use. Please send bug reports to shivers@ai.mit.edu. Copyright of lib/srfi-11.scm ------------------------------------------------ ;; Copyright (C) Lars T Hansen (1999). All Rights Reserved. ;; ;; This document and translations of it may be copied and furnished to ;; others, and derivative works that comment on or otherwise explain it ;; or assist in its implementation may be prepared, copied, published and ;; distributed, in whole or in part, without restriction of any kind, ;; provided that the above copyright notice and this paragraph are ;; included on all such copies and derivative works. However, this ;; document itself may not be modified in any way, such as by removing ;; the copyright notice or references to the Scheme Request For ;; Implementation process or editors, except as needed for the purpose of ;; developing SRFIs in which case the procedures for copyrights defined ;; in the SRFI process must be followed, or as required to translate it ;; into languages other than English. ;; ;; The limited permissions granted above are perpetual and will not be ;; revoked by the authors or their successors or assigns. ;; ;; This document and the information contained herein is provided on an ;; "AS IS" basis and THE AUTHOR AND THE SRFI EDITORS DISCLAIM ALL ;; WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY ;; WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY ;; RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A ;; PARTICULAR PURPOSE. Copyright of ext/mt-random/mt-random.c ------------------------------------ Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The names of its contributors may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Copyright of lib/gauche/reload.scm ------------------------------------- ;;; Copyright(C) 2002 by Alex Shinn ;;; ;;; Permission to use, copy, modify, distribute this software and ;;; accompanying documentation for any purpose is hereby granted, ;;; provided that existing copyright notices are retained in all ;;; copies and that this notice is included verbatim in all ;;; distributions. ;;; This software is provided as is, without express or implied ;;; warranty. In no circumstances the author(s) shall be liable ;;; for any damages arising out of the use of this software. Copyright of ext/digest/*, lib/rfc/hmac.scm, lib/util/digest.scm ------- Copyright (c) 2002-2003 Kimura Fuyuki, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the authors nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Copyright of ext/tls -------------------------------------------------- Copyright (c) 2011 Kirill Zorin Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the authors nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Copyright of ext/tls/axTLS ----------------------------------------------- Copyright (c) 2008, Cameron Rich All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of the axTLS Project nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Gauche-0.9.10/ChangeLog0000664000000000000000000315507413764626217013304 0ustar rootroot2020-12-10 Shiro Kawai * lib/gauche/configure.scm: Define more descriptive alias for feature check predicate, e.g. cf-check-header == cf-header-available?. It is so confusing that cf-check-header is a predicate while cf-check-headers is for side-effecting procedure. 2020-12-03 Shiro Kawai * lib/srfi-181.scm: Properly support all eol-styles. 2020-12-01 Shiro Kawai * ext/charconv: Support iso8859-N (N = [2-11,13-16]) 2020-11-27 Shiro Kawai * ext/chaconv/jconv.c: Support utf-16 & iso8859-1. 2020-11-26 Shiro Kawai * libsrc/file/util.scm (file->bytevector): Added. 2020-11-23 Shiro Kawai * lib/gauche/redefutil.scm (update-direct-subclass!): Do not recover direct-subclasses link of the parent of redefined class. Suppose we have a class and its subclass . When we redefine , is also redefined since its slots and/or CPL may change. We want to keep both parent-child relationship of old - old , and new - new , for it may matter during transition (including instance update, which occur the later timing). However, if has more than one parents, say and , the old code makes refer to both old and new , causing issues. Since direct-subclasses link isn't used much except class redefinition, we make a choice that redefined class won't appear in the direc-subclasses list (the redefined class still keeps direct-supers link). http://chaton.practical-scheme.net/gauche/a/2020/11/22#entry-5fbab148-42ea5 2020-11-22 Shiro Kawai * src/libexc.scm (condition-message): Added. 2020-11-20 Shiro Kawai * libsrc/text/gap-buffer.scm (gap-buffer-replace!): Renamed from gap-buffer-change!, for the consistency and clarity. 2020-11-19 Shiro Kawai * ext/charconv/jconv.c: Drop euc-jp pivoting. To widen supported CESes, fixing the pivot encoding is cumbersome. Instead, each pair of {in-code, out-code} can choose suitable intermediate encoding if necessary. 2020-11-16 Shiro Kawai * src/libobj.scm (%expand-define-class): Fix hygienic keyword match issue. If define-class is generated by a macro, keywords such as :metaclass may be renamed. This fix is provisional---we simply compare identifier's name. Eventually we should compare them hygienically. 2020-11-11 Shiro Kawai * lib/srfi-181.scm (i/o-decoding-error?, i/o-encoding-error?): Use built-in and , which gauche.characonv raises. NB: We don't have i/o-encoding-error-char support yet. * src/error.c (Scm_PortError): Set PORT_ERROR_OCCURRED flag of the port within this procedure. If a port raised an error and left open with an inconsitent state, Scm_Cleanup tries to flush it when the process exit and bad things can happen. (Scm_PortErrorWithAux): Enhanced ScmPortError condition to allow keeping extra 'auxinfo', which should be an alist. Its content depends on the actual class of the port error. 2020-11-09 Shiro Kawai * lib/srfi-181.scm (transcoded-port, bytevector->string) (string->bytevector): Reimplement on top of gauche.charconv. 2020-11-07 Shiro Kawai * src/portapi.c (Scm_GetPortPosition), ext/vport/vport.c: Support getpos/setpos slots. It allows srfi-181 get-position/ set-position! to be directly mapped to vport slots. * src/string.c (build_index_array): Fixed another bug that the index array is allocated too short. Also changed to store the index array size in the second word of the index array. By doing so we can check the accidental out-of-bound access. 2020-11-06 Shiro Kawai * src/string.c (build_index_array): Fix: The signature byte is supposed to be repeated in the first element of the vector, so it can work for any endianness, but it didn't. * src/liblist.scm (length<=?): Fix integer overflow bug. Also, if list is circular we treat it infinitely long. 2020-11-05 Shiro Kawai * Document identity and constantly. * src/compile-1.scm (pass1/extended-lambda-body): Fix ((:key var) init) pattern handling when GAUCHE_KEYWORD_DISJOINT=1. * src/libmacro.scm (%let-keywords-rec): Compare input as bare symbol against potential keywords. This may not be ideal, for hygiene is not preserved. Since keywords are from gauche.keyword module, we should be able to compare it hygienically. * src/libmacbase.scm (unwrap-syntax-1): Added. 2020-10-30 Shiro Kawai * ext/tls/tls.ac, tools/tls: Adding configure option to build mbedtls inside the build tree. 2020-10-29 Shiro Kawai * ext/windows/windows.stub (sys-get-disk-free-space-ex): Added. * src/libsys.scm, ext/fcntl/fcntl.scm: Move statvfs stuff to gauche.fcntl, for it is less frequently used. 2020-10-28 Shiro Kawai * lib/srfi-170.scm: Catch up with the final srfi. * src/libsys.scm: Add class and sys-statvfs(2) interface. 2020-10-20 Shiro Kawai * libsrc/gauche/process.scm (process-shutdown): Rename from process-terminate-gracefully. It's shorter, more appripriate, and in sync with (connection-shutdown ). 2020-10-19 Shiro Kawai * lib/gauche/package/util.scm (copy-templates): Fill authors name of the package.scm from git config output, if available. * libsrc/gauche/process.scm (run-process): Allow :merge to :error keyword arg, for the shorthand of :redirect ((>& 2 1)). This is especially useful for higher-level utilities such as process-output->string, in which you can get error output in the result as well. 2020-10-18 Shiro Kawai * libsrc/gauche/process.scm (process-wait/poll) (process-terminate-gracefuly): Added. 2020-10-14 Shiro Kawai * src/libeval.scm (gauche): Include thread subsystem and tls subsystem info in version-alist. 2020-10-06 Shiro Kawai * src/libio.scm (open-input-fd-port, open-output-fd-port): There was a bug that owner? argument logic is reversed. It was introduced when we add support of 'dup a month ago. 2020-10-02 Shiro Kawai * ext/tls/tls/get-cacert: Provide a script to download cacert.pem from curl official site and install it into Gauche library directory. This is for the users who can't somehow install ca-certificates package or openssl. * ext/tls: The 'system' ca-bundle search include the cacert.pem downloaded by get-cacert. 2020-10-01 Shiro Kawai * ext/tls/tls.ac: Make the default of --with-ca-bundle to "check". It checks the system ca-bundle availability at initialization and set tls-ca-bundle-path to either 'system or #f. This allows the use to explicitly disable default ca bundle path by saying --with-ca-bundle=no. 2020-09-30 Shiro Kawai * ext/tls/tls.c: Changed handling of default tls-ca-bundle-path and default-tls-class. If we find system ca bundle in initialization, we favor . 2020-09-27 Shiro Kawai * src/core.c: Add a secret feature to show initialization progress if env var GAUCHE_DEBUG_INITIALIZATION is set. This helps when things got derailed during core initialization. * src/module.c (Scm_FindModule), lib/gauche/cgen/precomp.scm: Distinguish a module created explicitly (by define-module or find-module) and implicitly (via identifier literals). If a module is created only because of identifiers embedded in macro output, it shouldn't appear in (all-modules). 2020-09-18 Shiro Kawai * src/error.c: Add as a subclass of . 2020-09-15 Shiro Kawai * ext/tls: Refactor load_system_cert(). Try known ca-bundle.crt path for 'system' ca-bundle on non-Windows platforms. Cf. https://github.com/shirok/Gauche/issues/365 2020-09-14 Shiro Kawai * src/box.c: Added srfi-195 multi-valued box support. We use separate type for mv-box, for we want to keep single-value box lightweight. * src/vm.c (Scm_ValuesFromArray): Added. 2020-09-13 Shiro Kawai * src/gauche/port.h (ScmPort): INCOMPATIBLE CHANGE: Hide most of ScmPort guts from the user. User code that directly accesses fields of ScmPort needs to be changed to use the public access functions. The actual struct definition is moved to src/gauche/priv/portP.h. This change is to give flexibility in the future port enhancement. 2020-09-11 Shiro Kawai * src/port.c: Make port-name an attribute. * src/portapi.c: Add a new port attribute entry that is read-only and undeletable; it's for the system-reserved attributes such as 'name'. 2020-09-10 Shiro Kawai * src/srfis.scm: Make srfi-193 official, as it is finalized. 2020-09-09 Shiro Kawai * src/gauche-package.in: Add --scheme-only option. * ext/template.*: Moved package template files under package-templates subdirectory. 2020-09-08 Shiro Kawai * src/libio.scm: open-{input|output}-fd-port and port-file-number now have an option to dup the fd. 2020-09-07 Shiro Kawai * doc/modgauche.texi: Document . 2020-09-06 Shiro Kawai * src/libparam.scm, libsrc/gauche/parameter.scm: Move make-parameter and parameterize into core. gauche.parameter is kept for the backward compatibility and some fluff (observers). 2020-09-05 Shiro Kawai * libsrc/gauche/parameter.scm: Make a subclass of , and make make-parameter return a procedure. The latter is to conforms R7RS. The code that tested if obj is a parameter by is-a? should now use parameter?. The code that uses parameters in the standard way doesn't need to be changed. 2020-09-04 Shiro Kawai * lib/srfi-192.scm: Added. Currently it's a copy of the reference implementation. We need to modify port protocl to fully support this srfi. * src/parameter.c: Make BindPrimitiveParameter wraps primitive parameter with subr. In R7RS, parameters should behave strictly as a procedure, e.g. must respond #t to procedure?. Rel: https://github.com/shirok/Gauche/issues/720 2020-09-03 Shiro Kawai * lib/r7rs-setup.scm, src/libio.scm, ext/vport/vport.scm, ext/uvector/uvector.scm: Move R7RS binary i/o stuff (read-u8, write-bytevectr etc.) into Gauche side. It is easier to run a snippet written for r7rs without loading full r7rs. * lib/srfi-181.scm: Added. Currently it's a copy of the reference implementation. Need customize on transcoded port. 2020-09-02 Shiro Kawai * libsrc/gauche/dictionary.scm: Revised ; make it comparator-aware. Add a couple of methods. 2020-09-01 Shiro Kawai * lib/srfi-178.scm: finished implementation. * libsrc/gauche/sequence.scm (subseq): Dropped the undocumented feature that subseq accepts negative value as END, counting from the end of the sequence. It will get in a way if more sequence types defines specialized method, for such convention isn't widely adopted for type-specific procedures. 2020-08-26 Shiro Kawai * src/read.c, src/string.c: Changed incomplete string literal to #**"...", for #*"..." conflicts with bitvector literals (we thought it wouldn't, but overlooked that '#*' can be a valid bitvector literal.) The reader allows old syntax depending on reader lexical mode. * src/main.c (further_options): If -fwarn-legacy-sytnax is given, don't forget to change the reader syntax mode of SCM_CURIN, which has already been opened. The setting of Scm_SetReaderLexicalMode only affects the ports opened after the change. 2020-08-24 Shiro Kawai * src/main.c: Allow multiple S-exprs in -e option. 2020-08-22 Shiro Kawai * libsrc/text/line-edit.scm (read-line/edit): Install SIGCONT handler to handle the case when REPL is stopped by shell's job control and then restarted. Singal handler has global effect, so it may interfere with the application---in which case we may provide an option to turn it off. For now, let's see how it goes. Cf. https://github.com/shirok/Gauche/issues/715 2020-08-21 Shiro Kawai * libsrc/text/console.scm (canonical-mode?): Add an API to query if the terminal is in canonical (line editing) mode. Useful to detect when a process wakes up by SIGCONT and see if the terminal setting has been changed by shell job control. * ext/threads/threads.scm (atomic-update!): Allow proc to return more values than the atom holds. It is useful if one wants to update atom state and compute something using before-update values. 2020-08-18 Shiro Kawai * libsrc/gauche/process.scm: Allow command pipeline in process port API https://github.com/shirok/Gauche/issues/717 2020-08-16 Shiro Kawai * src/gauche/vector.h (ScmBitvector), src/vector.c: Start adding bitvector support (srfi-178). 2020-08-15 Shiro Kawai * src/signal.c (Scm_SigFillSetMostly): Allow SIGCONT to be handled in Gauche by default. 2020-08-12 Shiro Kawai * src/gauche/vm.h, src/vm.c: Add SCM_COMPILE_SRFI_FEATURE_ID flag. * src/libmacro.scm (cond-expand): Warn srfi-N feature id is used when SCM_COMPILE_SRFI_FEATURE_ID flag isn't set. This is to gradually retire usage of srfi-N as a feature id. Ref. https://github.com/shirok/Gauche/issues/709 2020-08-11 Shiro Kawai * lib/gauche/pputil.scm (layout-misc): Fix circular structure printing in case when the cycle begins in the middle of a list. https://github.com/shirok/Gauche/issues/713 2020-08-08 Shiro Kawai * lib/srfi-180.scm: Finishing support of srfi-180. * lib/rfc/json.scm (construct-json): rfc7159 loosened the restriction of rfc4627 that the toplevel object must be an array or an object. Updated the code to allow that. * ext/vport/vport.scm (open-output-accumulator): Added procedures to convert accumulators to an output port. 2020-08-04 Shiro Kawai * src/libomega.scm (object-hash): Let the base method of object-hash return a constant value. We can't make it error if we want default-hash to accept arbitrary Scheme value, and we can't compute a non-constant hash value without knowing equality semantics. We'll encourage users to define object-hash method for user-defined classes if their instances are ever hashed. https://github.com/shirok/Gauche/issues/708 2020-08-03 Shiro Kawai * src/libdict.scm (make-hash-table): If a comparator whose equality predicate is eq?/eqv?, we use eq-/eqv-hash regardless of comparator's hash function. It is permitted by srfi-125, and it allows objects that doesn't have hash method can still be used with eq/eqv based hashtables. https://github.com/shirok/Gauche/issues/708 2020-07-29 Shiro Kawai * src/class.c (): Rename <%box> to , for there's no reason to obscure it. * src/libobj.scm (ref): Added accessor for a box. srfi-123. 2020-07-28 Shiro Kawai * src/libmacro.scm (let-optionals*): Fix the expander inserting 'undefined' unhygienically. 2020-07-26 Shiro Kawai * src/system.c: Add support of timespec timestamps in struct stat (st_atim, st_mtim and st_ctim). * src/libsys.scm (sys-nice): Added. 2020-07-25 Shiro Kawai * ext/fcntl/fcntl.scm (O_CLOEXEC): Add flag. 2020-07-24 Shiro Kawai * src/libsys.scm (sys-utime): Use utimensat(2) instead of utime(2). Allow