* libguile/hashtab.c (vacuum_weak_hash_table): Don't abort if we
apparently remove more items than are in the table; instead print a
warning. "Fixes" #19180.
* libguile/posix.c (scm_getaffinity, scm_setaffinity): Clean up
docstrings. Obviously if you have the function, you don't need to be
told that you have it in the docstring.
* libguile/posix.c (scm_kill): Only provide if the host has `kill'. An
incompatible change on MinGW, where this function would work only if
the PID was the current PID, but that will be fixed by the next
process.
* configure.ac: Check for getuid, getgid, setuid, and setgid.
* libguile/posix.c (scm_getuid, scm_getgid, scm_setuid, scm_setgid):
Only provide Scheme functions if the OS provides these facilities.
(scm_geteuid, scm_getegid, scm_seteuid, scm_setegid): Provide if the
host has getuid, getgid, etc, instead of being in a MinGW guard.
* libguile/ports.c (scm_init_ports): Use the locale as the default
charset. This allows GUILE_INSTALL_LOCALE=1 to work properly,
harmonizing the default port encoding with the installed locale.
* meta/build-env.in: New file which sets up an environment that does not
inherit GUILE_LOAD_PATH / GUILE_LOAD_COMPILED_PATH (unless
cross-compiling).
* doc/ref/Makefile.am (autoconf-macros.texi):
* libguile/Makefile.am (snarf2checkedtexi):
* module/Makefile.am (ice-9/psyntax-pp.go):
* test-suite/standalone/Makefile.am (GUILE_INSTALL_LOCALE):
* am/guilec (.scm.go): Use build-env.
* configure.ac: Create build-env.
* libguile/load.c (load_thunk_from_path, try_load_thunk_from_file):
New functions.
(search_path): Simplify.
(scm_primitive_load_path, scm_init_eval_in_scheme): Use the new
functions to load compiled files.
* module/ice-9/boot-9.scm (load-in-vicinity): Skip invalid .go files.
Inspired by a patch from Jan Nieuwenhuizen <janneke@gnu.org>.
* doc/ref/api-control.texi (Prompt Primitives): Remove mention of
one-shot continuations, as it's possible to invoke them multiple times
if the continuation is re-entered through other means.
Based on a patch by Andy Stormont <astormont@racktopsystems.com>.
* configure.ac: Check for strtod_l.
* libguile/i18n.c (scm_locale_string_to_integer): Fix style.
(scm_locale_string_to_inexact): Check for strtod_l.
* module/texinfo/html.scm (itemize, acronym, tag-replacements, rules):
Fix HTML serialization of @itemize and @acronym. Fixes#21772.
* test-suite/tests/texinfo.html.test: New file.
* test-suite/Makefile.am: Add new file.
* doc/ref/api-memory.texi (Garbage Collection Functions):
* doc/ref/libguile-concepts.texi (Garbage Collection): Attempt to be
clear that scanning is a thing that happens in the mark phase. Fixes
#20907 I think.
* module/language/tree-il/effects.scm (make-effects-analyzer):
Fix analysis for list, cons, make-prompt-tage, and vector; &allocation
is a `cause' effect. Fixes#21899.
* test-suite/tests/cse.test ("cse"): Add test case.
* libguile/bytevectors.c (sym_big, sym_little): Rename from scm_sym_big
and scm_sym_little, and don't use the snarf mechanism as we need to
initialize this value eagerly in case the C API is used before the
Scheme module is loaded.
(scm_bootstrap_bytevectors): Initialize the endianness symbols here.
* libguile/r6rs-ports.c (scm_register_r6rs_ports): Register the R6RS
port kinds here, for the same reason.
* libguile/conv-integer.i.c (SCM_FROM_TYPE_PROTO):
* libguile/conv-uinteger.i.c (SCM_FROM_TYPE_PROTO): Fix a big in which
scm_from_int64 and scm_from_uint64 on a 32-bit platform leaked memory
if they needed to allocate a bignum. Fixes#20079.
* libguile/smob.c (clear_smobnum): New helper.
(finalize_smob): Re-set the smobnum to the "finalized smob" type
before finalizing. Fixes#19883.
(scm_smob_prehistory): Pre-register a "finalized smob" type, which has
no mark procedure.
* test-suite/standalone/test-smob-mark-race.c: New file.
* test-suite/standalone/Makefile.am: Arrange to build and run the new
test.
* libguile/i18n.c (str_upcase, str_downcase, str_upcase_l)
(str_downcase_l): Remove unused inline functions. Based on a patch by
Pedro Aguilar <paguilar@paguilar.org>. Fixes#19172.
* module/system/base/compile.scm (call-with-output-file/atomic): Use the
permissions of the source file, if available, as the permissions of
the compiled file. Fixes#18477.