summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* 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
|
* Patch for bug #60234Daniel Llorens2022-12-211-1/+2
| | | | | | | See https://debbugs.gnu.org/60234. gcc warns about the extra extern, but we get rid of the tls model mismatch error.
* fix Apple Silicon JIT compilationAleix Conchillo Flaqué2022-12-202-1/+27
| | | | | | | | * configure.ac: check for pthread_jit_write_protect_np. * libguile/jit.c: add support for Apple Silicon JIT compilation. Fixes https://debbugs.gnu.org/cgi/bugreport.cgi?bug=44505
* Doc: document that eq?, eqv? and equal? take any number of argumentsJean Abou Samra2022-12-111-12/+14
|
* doc: Lee Thomas suggested the name change.Arne Babenhauserheide2022-12-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | See (1994-11-04) https://groups.google.com/g/gnu.misc.discuss/c/0VtEf1fgEJk/m/IMBs2o-ftrgJ > If GEL and GUL and GLUE don't work for the name of the scripting > language, how about: > > GUILE - GNU's Universal Interpreted Language Extension > > (This also implies Scheme-ing, and means that the GNU's Universal > Interpreted Language Developers would be part of a ...) > -- > Lee Thomas and (1994-11-22) https://groups.google.com/g/gnu.misc.discuss/c/9pD9yVoRYFw/m/0z7SLYbx8loJ > Why "GUILE"? (GNU's Universal Interpreted Language Extension) > Two additional reasons: > > 1. It does not give deliberate offense to Dr. Ousterhout or his > supporters, thereby allowing the warring factions to eventually > make peace (along with some others, perhaps - Gloria's 'Usband Is > Linguistically Educated) and get back to work. > 2. By pronunciation it offers appreciation to one of the co-inventors > of Scheme. (Maybe a library package could be named "Scheme User > Supported System Macros And Native-code"? OK, that's a stretch ...) > -- > Lee Thomas, and https://groups.google.com/g/comp.lang.scheme/c/X5GrLVAvGLU/m/Xk11xCrbzCcJ > A while back, I started calling the language being built by the GNU Project > GEL. It turns out that GEL is a trademark of Sybase Inc. Therefore, > we must choose a new name. Please do not refer to the GNU language > as GEL. > > My favorite proposed name, posted recently to comp.lang.scheme, is GUILE. > I like the name, because i think programmers should be encouraged to use > GUILE when writing programs. The name may change yet again; but for now, > please refer to the GNU language as GUILE. > > -t
* doc: Fix minor typosColin Woodbury2022-12-092-2/+2
| | | | | | | | | | | The spelling mistake is a clear fix, but the Arrays fix might not be as obvious. Previously, with the "arrays" alias, the @ref macro would render a superfluous period after the word "arrays", rendering (at least within Emacs) as: you may wish to use see arrays. instead. Signed-off-by: Mikael Djurfeldt <mikael@djurfeldt.com>
* Fix peval bug when expand-primitives introduces lexicalsAndy Wingo2022-12-012-3/+47
| | | | | | | | * module/language/tree-il/peval.scm (augment-var-table-with-externally-introduced-lexicals): New helper. * module/language/tree-il/peval.scm (peval): Augment store with any lexicals introduced by expand-primitives. * test-suite/tests/peval.test ("partial evaluation"): Add tests.
* Fix order-of-side-effects bug in (eq? x y z) expansionAndy Wingo2022-12-012-12/+45
| | | | | | | | | * module/language/tree-il/primitives.scm (bind-lexicals): New helper. (expand-eq, expand-chained-comparisons): Ensure all arguments are eagerly evaluated. Previously an intermediate #f result would shortcut the evaluation. * test-suite/tests/compiler.test ("size effects in multi-arg eq / <"): Add test.
* Avoid 'frame-local-ref' errors when printing backtrace.Andrew Whatson2022-11-291-2/+10
| | | | | | | Workaround for <https://bugs.gnu.org/57948>. * module/system/vm/frame.scm (frame-call-representation): Treat a binding as "unspecified" if its slot exceeds 'frame-num-locals'.
* Add tests for warning locations.Andrew Whatson2022-11-291-1/+47
| | | | | | | | These would have caught <https://bugs.gnu.org/56493>. * test-suite/tests/tree-il.test ("warnings")("location")["unused variable", "unbound variable (spaces)", "unbound variable (tabs)"]: New tests.