summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Add 'record-case' to '.dir-locals.el'.Ludovic Courtès2023-02-242-4/+1
| | | | | | * module/language/tree-il/fix-letrec.scm (fix-letrec): Remove "Local Variables" bit. * .dir-locals.el (scheme-mode): Add 'record-case'.
* Fix typo in raise-exception documentationDaniel Llorens2023-02-241-1/+1
| | | | | * doc/ref/api-control.texi (Raising and Handling Exceptions): Fix typo, h/t gtz on #guile.
* README: Update Git URLs.Ludovic Courtès2023-02-061-4/+4
| | | | * README: Update Git URLs.
* maint: Add variants of the default package for Guix.Ludovic Courtès2023-02-062-12/+56
| | | | | | | | | * build-aux/guix/guile-package.scm (package-with-configure-flags): New procedure. (guile-without-threads, guile-without-networking) (guile-debug, guile-strict-typing): New variables. * build-aux/manifest.scm: Use (guile-package) module instead of 'load'. (native-builds): Add the variants above + "guile-clang".
* maint: Masquerade as a Guix channel.Ludovic Courtès2023-02-065-145/+160
| | | | | | | | | | By pretending to be a Guix channel, this repository can be consumed seamlessly by tools such as Cuirass. * .guix-channel: New file. * guix.scm: Turn into a symlink to... * build-aux/guix/guile-package.scm: ... this. New file. * Makefile.am (EXTRA_DIST): Add them, except '.guix-channel'.
* maint: Add Guix build files.Ludovic Courtès2023-02-064-1/+216
| | | | | | * guix.scm, build-aux/manifest.scm: New files. * Makefile.am (EXTRA_DIST): Add them. * README: Mention it.
* 'spawn' ensures it is passed open file ports.Ludovic Courtès2023-01-262-5/+18
| | | | | | | | | Fixes <https://bugs.gnu.org/61073>. * libguile/posix.c (FDES_FROM_PORT_OR_INTEGER): When OBJ is not an integer, use 'SCM_VALIDATE_OPFPORT' before using 'SCM_FPORT_FDES'. * test-suite/tests/posix.test ("spawn")["non-file port argument"]: New test.
* Document multiple-value returns in forms taking a let-expression bodyDaniel Llorens2023-01-252-32/+34
| | | | | | | | | | | | | * doc/ref/api-binding.texi (Local Bindings): Document multiple-value returns for let. * doc/ref/api-control.texi (begin): Document multiple-value returns for begin. (Conditionals): Document multiple-value returns and use 'body' in the syntax description of when, unless, cond, case. (Multiple values): Document multiple-value returns and use 'body' in the syntax description of SRFI-8 receive. (Fluids and Dynamic States): Use 'body' in the syntax description of 'with-fluids'.
* Add internal definitions to derived formsLinus2023-01-243-21/+22
| | | | | | | | | | | This commit adds internal definitions to the following derived forms: when, unless, cond, case, with-fluids, and and-let*. * doc/ref/api-control.texi (Conditionals): Update the syntax and docs of when, unless, cond, and case. * module/ice-9/and-let-star.scm (and-let*): Changed begins to let. * module/ice-9/boot-9.scm (cond, case, when, unless, with-fluids): Changed begins to let.
* Verify 'W_EXITCODE' only when we provide our own definition.v3.0.9Ludovic Courtès2023-01-231-1/+1
| | | | | | | | | | Fixes <https://bugs.gnu.org/60971>. Reported by lloda <lloda@sarc.name> and Greg Troxel <gdt@lexort.com>. On macOS and NetBSD, 'WEXITSTATUS' expects an lvalue so the expression passed to 'verify' would be invalid. * libguile/posix.c: Move 'verify' assertion within #ifdef.
* maint: Abort 'make dist' when Readline support is missing.Ludovic Courtès2023-01-231-1/+14
| | | | | | | Reported by Greg Troxel <gdt@lexort.com>. * Makefile.am (ensure-guile-readline): New target. (dist-hook): Depend on it.
* Update NEWS.Ludovic Courtès2023-01-231-0/+2
|
* Remove 'extern' from 'scm_i_current_thread' definition, except on macOS.v3.0.9rc1Ludovic Courtès2023-01-201-2/+4
| | | | | | | | | | This is a followup to f859e0f58b211eedcb0dce4f2382cfebf37010d7, which led to warnings on GNU/Linux: threads.c:358:43: warning: 'scm_i_current_thread' initialized and declared 'extern' * libguile/threads.c (scm_i_current_thread): Make 'SCM_INTERNAL' conditional.
* build: Use '--enable-mini-gmp' for "make distcheck".Ludovic Courtès2023-01-201-2/+2
| | | | * Makefile.am (DISTCHECK_CONFIGURE_FLAGS): Add '--enable-mini-gmp'.
* GNU Guile 3.0.9.Ludovic Courtès2023-01-191-3/+3
| | | | | | | * GUILE-VERSION (GUILE_MICRO_VERSION): Increment. (LIBGUILE_INTERFACE_CURRENT): Increment, to account for the new 'scm_*at' procedures, 'scm_bytevector_slice', etc. (LIBGUILE_INTERFACE_AGE): Increment.
* doc: Mention URL of Guile-GnuTLS.Ludovic Courtès2023-01-191-3/+5
| | | | * doc/ref/web.texi (Web Client): Mention new URL of Guile-GnuTLS.
* Add Gnulib 'sys_select' module, needed for MinGW.Ludovic Courtès2023-01-193-1/+5
| | | | | | | This is again from Gnulib v0.1-5703-g356a414e8c. * m4/gnulib-cache.m4: Add 'sys_select'. * libguile/threads.c: Include <sys/select.h>.
* Add Gnulib 'gethostname' module, needed for MinGW.Ludovic Courtès2023-01-195-0/+237
| | | | | | This is again from Gnulib v0.1-5703-g356a414e8c. * m4/gnulib-cache.m4: Add 'gethostname'.
* Add Gnulib modules for 'posix_spawn' file operations.Ludovic Courtès2023-01-197-0/+366
| | | | | | | | | This is again from Gnulib v0.1-5703-g356a414e8c. * m4/gnulib-cache.m4: Add 'posix_spawn_file_actions_addclose', 'posix_spawn_file_actions_adddup2', 'posix_spawn_file_actions_addopen', and 'posix_spawn_file_actions_init'.
* Remove more Gnulib generated files.Ludovic Courtès2023-01-186-4329/+0
|
* Update Gnulib to v0.1-5703-g356a414e8c and add 'posix_spawn' module.Ludovic Courtès2023-01-18509-1732/+2766
| | | | | | | | | This is a followup to edfca3b7e5931b5b5a83112e2a9813b068be99c2, which added the 'posix_spawnp' module but not 'posix_spawn'. * m4/gnulib-cache.m4: Add 'posix_spawn' module. * gnulib-local/m4/clock_time.m4.diff: Adjust. * configure.ac: Move 'gl_EARLY' use right after 'AC_PROG_CC'.
* Adjust 'W_EXITCODE' for Windows.Ludovic Courtès2023-01-181-1/+5
| | | | * libguile/posix.c (W_EXITCODE) [_WIN32]: New specialized definition.
* Fix argument number in 'spawn' type check.Ludovic Courtès2023-01-181-1/+1
| | | | | * libguile/posix.c (scm_spawn_process): Fix argument number in 'SCM_VALIDATE_NONEMPTYLIST'.
* Update NEWS.Ludovic Courtès2023-01-171-3/+13
| | | | * NEWS: Update.
* linker: Do not store entire ELF in memory when writing to a file.Ludovic Courtès2023-01-173-14/+74
| | | | | | | | | | | | | | | | | | | | | This reduces the amount of memory that needs to be allocated while writing the ELF file to disk. Note: We're abusing #:page-aligned? in 'link-elf' to choose whether to return a bytevector or a procedure. * module/system/vm/linker.scm (process-reloc): Subtract SECTION-OFFSET when writing to BV. (write-linker-object): Pass BV directly to the linker object writer. (link-elf): When PAGE-ALIGNED? is false, call 'bytevector-slice' from here. When it is true, return a procedure that takes a port and writes to it, without having to allocate a bytevector for the whole ELF container. * module/language/bytecode/spec.scm (bytecode->value): Handle X being a procedure instead of a bytevector. (bytecode) <#:printer>: Likewise. * test-suite/tests/linker.test (link-elf-with-one-main-section): Pass #:page-aligned? #f.
* linker: Linker object writer takes a single argument.Ludovic Courtès2023-01-173-46/+35
| | | | | | | | | | | | | | * module/system/vm/linker.scm (write-linker-object): Pass the 'linker-object-writer' a single argument. (string-table-writer, add-elf-objects): Adjust writers accordingly. (string-table-writer): (add-elf-objects): * module/system/vm/assembler.scm (link-data, link-text-object) (link-frame-maps, link-dynamic-section) (link-symtab, link-arities, link-docstrs) (link-procprops, link-debug): Likewise. * test-suite/tests/linker.test (link-elf-with-one-main-section): Likewise.
* linker, assembler: Avoid intermediate bytevectors.Ludovic Courtès2023-01-173-107/+176
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reduces the amount of memory used during linking and reduces the number of copies to be done between bytevectors. * module/system/vm/linker.scm (<linker-object>): Remove 'bv' field and add 'size' and 'writer'. (make-linker-object): Adjust accordingly. (string-table-size): New procedure. (link-string-table!): Remove. (string-table-writer): New procedure. (allocate-segment): Adjust 'make-linker-object' call. (find-shstrndx): Call the 'linker-object-writer' of O. (add-elf-objects): Adjust 'make-linker-object' call. Remove 'make-bytevector' allocations and move serialization to lazy 'writer' procedures. Define 'segments' and 'add-header-segment!'. Return the latter as the first value. * module/system/vm/assembler.scm (make-object): Remove 'bv' parameter and add 'size' and 'writer'. (link-data): Remove 'make-bytevector' call and move serialization to a lazy 'writer' procedure. (link-text-object): Likewise. (link-frame-maps): Likewise. (link-dynamic-section): Likewise. (link-shstrtab): Likewise. (link-symtab): Likewise. (link-arities): Likewise, and remove 'bytevector-append'. (link-docstrs): Likewise. (link-procprops): Likewise. (link-debug): Likewise, and define 'copy-writer'. * test-suite/tests/linker.test (link-elf-with-one-main-section): Adjust accordingly.
* linker: Separate effectful part of 'add-elf-objects'.Ludovic Courtès2023-01-171-5/+15
| | | | | | | * module/system/vm/linker.scm (add-elf-objects)[write-and-reloc]: Split into... [compute-reloc, write-object-elf-header!]: ... this. Adjust accordingly.
* assembler: Separate effectful part of 'link-docstrs'.Ludovic Courtès2023-01-171-10/+13
| | | | | * module/system/vm/assembler.scm (link-docstrs): Define 'write-docstrings!' and use it.
* assembler: Separate effectful part of 'link-frame-maps'.Ludovic Courtès2023-01-171-19/+24
| | | | | * module/system/vm/assembler.scm (link-frame-maps)[make-frame-maps]: Define 'write!' and use it.
* assembler: Separate effectful part of 'link-procprops'.Ludovic Courtès2023-01-171-14/+26
| | | | | * module/system/vm/assembler.scm (link-procprops): Define 'write-procprops!' and use it.
* assembler: Separate effectful part of 'link-dynamic-section'.Ludovic Courtès2023-01-171-30/+45
| | | | | * module/system/vm/assembler.scm (link-dynamic-section): Define 'relocs' once for all. Define 'write!' and use it.
* assembler: Separate effectful part of 'link-symtab'.Ludovic Courtès2023-01-171-15/+22
| | | | | * module/system/vm/assembler.scm (link-symtab): Define 'names' and 'write-symbols!'. Use it.
* assembler: Separate 'process-relocs' from 'patch-relocs!'.Ludovic Courtès2023-01-171-35/+51
| | | | | | | | * module/system/vm/assembler.scm (process-relocs): Remove 'buf' parameter and turn into a pure function. (patch-relocs!): New procedure. Perform the side effects previously done in 'process-relocs'. (link-text-object): Adjust accordingly.
* Add test for 'string-ref' with a negative index at -O2.Ludovic Courtès2023-01-171-5/+14
| | | | | | | | | | This test would segfault prior to c0004442b7691f59a0e37869ef288eb26382ad9e. See <https://bugs.gnu.org/60488>. * test-suite/tests/strings.test ("string-ref"): Use 'with-test-prefix/c&e'. ["negative index"]: Check the reported bounds.
* Document R7RS functions related to bytevectorsDaniel Llorens2023-01-173-14/+227
| | | | | | | | | | | | | | * doc/ref/api-data.texi (Bytevectors): Fix typo in (r6:bytevector-copy), index need not be positive. Fix typos in bytevector-length, bytevector=, bytevector-fill!. New node 'Bytevector Procedures in R7RS'. (Bytevector Procedures in R7RS): Document R7RS bytevector, bytevector-copy, bytevector-copy!, bytevector-append. * doc/ref/api-io.texi (Binary I/O): Document R7RS open-output-bytevector, write-u8, read-u8, peek-u8, get-output-bytevector, open-input-bytevector, read-bytevector!, read-bytevector, write-bytevector. * doc/ref/r7rs.texi (R7RS support): Link to R7RS standard.
* Doc: clarification on regexes and encodingsJean Abou Samra2023-01-171-2/+6
| | | | | * doc/ref/api-regex.texi: make it more obviously clear that regexp matching supports only characters supported by the locale encoding.
* doc: Fix eval-when exampleJean Abou Samra2023-01-171-11/+18
| | | | | | | * doc/ref/api-macros.texi: make the macro expand to the literal date, not to a call to the date function. The example previously did not actually need eval-when and did not show the intended effect.
* build: Avoid implicit 'int' return type in configure tests.Ludovic Courtès2023-01-161-2/+2
| | | | | | | Fixes <https://bugs.gnu.org/60022>. Reported by Florian Weimer <fweimer@redhat.com>. * configure.ac: Add missing implicit 'int' return type in tests.
* Do not expand 'make-vector' primcall with wrong number of arguments.Ludovic Courtès2023-01-162-5/+14
| | | | | | | | | Fixes <https://bugs.gnu.org/60522>. Reported by Sascha Ziemann <ceving@gmail.com>. * module/language/tree-il/primitives.scm (make-vector): Return #f when passed an incorrect number of arguments. * test-suite/tests/peval.test ("partial evaluation"): Add tests.
* Add 'bytevector-slice'.Ludovic Courtès2023-01-148-5/+208
| | | | | | | | | * module/rnrs/bytevectors/gnu.scm: New file. * am/bootstrap.am (SOURCES): Add it. * libguile/bytevectors.c (scm_bytevector_slice): New function. * libguile/bytevectors.h (scm_bytevector_slice): New declaration. * test-suite/tests/bytevectors.test ("bytevector-slice"): New tests. * doc/ref/api-data.texi (Bytevector Slices): New node.
* Remove Gnulib generated file.Ludovic Courtès2023-01-141-116/+0
| | | | | | This was inadvertently committed in edfca3b7e5931b5b5a83112e2a9813b068be99c2. * lib/stdbool.h: Delete.
* Bump user-visible copyright years to 2023.Ludovic Courtès2023-01-133-4/+4
| | | | | | * module/ice-9/command-line.scm (version-etc): * module/scripts/compile.scm (show-version): * module/system/repl/common.scm (*version*): Bump to 2023.
* Reduce redundant 'close' calls when forking on some systems.Andrew Whatson2023-01-132-3/+40
| | | | | | | | | | | | | | | | | Fixes <https://bugs.gnu.org/59321>. Reported by <hylophile@posteo.de>. Some systems provide "/proc/self/fd" which is a directory containing an entry for each open file descriptor in the current process. We use this to limit the number of close() calls needed to ensure file descriptors aren't leaked to the child process when forking. * libguile/posix.c (close_inherited_fds_slow): (close_inherited_fds): New static helper functions. (scm_spawn_process): Attempt to close inherited file descriptors efficiently using 'close_inherited_fds', falling back to the brute-force approach in 'close_inherited_fds_slow'. * NEWS: Update.
* Make 'system*' and 'piped-process' internally use 'spawn'.Josselin Poiret2023-01-133-155/+101
| | | | | | | | | | | | | Fixes <https://bugs.gnu.org/52835>. * libguile/posix.c (scm_system_star, scm_piped_process): Use do_spawn. (start_child): Remove function. * test-suite/tests/posix.test ("system*")["https://bugs.gnu.org/52835"]: New test. * NEWS: Update. Co-authored-by: Ludovic Courtès <ludo@gnu.org> Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* Add 'spawn'.Josselin Poiret2023-01-135-10/+303
| | | | | | | | | | | | | * libguile/posix.c: Include spawn.h from Gnulib. (do_spawn, scm_spawn_process): New functions. (kw_environment, hw_input, kw_output, kw_error, kw_search_path): New variables. * doc/ref/posix.texi (Processes): Document it. * test-suite/tests/posix.test ("spawn"): New test prefix. * NEWS: Update. Co-authored-by: Ludovic Courtès <ludo@gnu.org> Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* Update gnulib to 0.1.5414-8204d and add posix_spawn, posix_spawnp.Josselin Poiret2023-01-12531-3275/+16214
| | | | Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* Test for 'frame-local-ref' errors when printing backtrace.Andrew Whatson2023-01-111-1/+22
| | | | | | | | | | | This test reproduces the error from <https://bugs.gnu.org/56493>, and passes with the workaround which was merged in commit c7fa78fc751eb336bcfafbb5ac59c460ee2c5d7a. * test-suite/tests/eval.test ("avoid frame-local-ref out of range"): New test. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* Recognize LoongArch compilation targets.Zhang Ning2022-12-211-0/+2
| | | | | | * module/system/base/target.scm (cpu-endianness): Add case for "Loongarch" variants Signed-off-by: Zhang Ning <zhangn1985@outlook.com>
* doc: fix documented keyword argument default to match code defaultVijay Marupudi2022-12-211-1/+1
|