Suggested by David Kastrup <dak@gnu.org> in <http://bugs.gnu.org/13644>.
* libguile/read.c (scm_read_string_like_syntax): Accept "\(" as
equivalent to "(".
* doc/ref/api-data.texi (String Syntax): Document it.
* test-suite/tests/reader.test ("reading"): Add test.
Fixes <http://bugs.gnu.org/17869>.
Reported and fixed by Alexei Matveev <alexei.matveev@gmail.com>.
* doc/ref/api-modules.texi (Accessing Modules from C): Change documented
return type of 'scm_c_export' to 'void' to reflect reality.
* THANKS: Add Alexei Matveev to the fixes section.
Fixes <http://bugs.gnu.org/17634>.
Reported by Josep Portella Florit <jpf@primfilat.com>.
* module/language/tree-il/peval.scm (inlined-application): When inlining
an application whose operator is a lambda expression with optional
arguments that rely on default initializers, expand into a series of
nested let expressions, to ensure that previous arguments are in scope
when the default initializers are evaluated.
* test-suite/tests/peval.test ("partial evaluation"): Add tests.
Fixes <http://bugs.gnu.org/18495>.
* libguile/smob.h (SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_0_LOC)
(SCM_SMOB_OBJECT_1_LOC, SCM_SMOB_OBJECT_2_LOC)
(SCM_SMOB_OBJECT_3_LOC): These elementary API macros have been broken
by commit 56164dc47f in 2009.
Signed-off-by: David Kastrup <dak@gnu.org>
Subset of a patch by Andreas Schwab <schwab@linux-m68k.org>.
Reported by Rob Browning <rlb@defaultvalue.org>.
* libguile/vm-engine.h (IP_REG)[__mc68000__]: Use register "a3".
Reported by Rob Browning <rlb@defaultvalue.org>.
* libguile/vm-engine.h (IP_REG)[__arm__]: Remove explicit register
choice ("r7") for FP_REG, which was reported to cause compilation
failures on ARM.
Reported by Rob Browning <rlb@defaultvalue.org>.
* libguile/vm-i-scheme.c (ASM_MUL)[ARM]: Add earlyclobber (&) constraint
to the SMULL output registers.
Reported by Eli Zaretskii <eliz@gnu.org>.
* test-suite/standalone/Makefile.am (test_scm_take_locale_symbol_LDADD):
Add libgnu.la, for the 'strdup' replacement.
Fixes <http://bugs.gnu.org/18299>.
Reported by Frank Terbeck <ft@bewatermyfriend.org>.
* module/language/tree-il/analyze.scm (format-string-argument-count):
Add case for ~p.
* test-suite/tests/tree-il.test ("warnings")["format"]("~p", "~p, too
few arguments", "~:p", "~:@p, too many arguments", "~:@p, too few
arguments"): New tests.
Based on a patch by Eli Zaretskii <eliz@gnu.org>.
* libguile/i18n.c (copy_string_or_null): New static function.
(scm_nl_langinfo): Use 'copy_string_or_null' to copy the result from
'nl_langinfo' and 'nl_langinfo_l' before the next call and before
releasing the locale mutex.
* test-suite/tests/coding.test (with-temp-file): Instead of
hard-coding "/tmp" as the temporary directory, use $TMPDIR or
$TEMP from the environment, and fall back on "/tmp" if none of
those 2 is defined.
* doc/ref/api-utility.texi (Object Properties)[make-object-property]:
Clarify that object-properties cannot be reliably applied to numbers.
Signed-off-by: David Kastrup <dak@gnu.org>
* module/ice-9/boot-9.scm (add-to-load-path): Remove argument from
%load-path (if it exists) before pushing. This also means that the
`elt' will always be at the front of %load-path.
Suggested by Dale P. Smith.
* module/system/base/target.scm (cpu-endianness): Add cases for
"arm.*eb", "^aarch64.*be", and "aarch64". Change "arm" case to
"arm.*".
(triplet-pointer-size): Allow underscore as in 'aarch64_be'.
* test-suite/tests/asm-to-bytecode.test ("cross-compilation")["armeb-unknown-linux-gnu",
"aarch64-linux-gnu", "aarch64_be-linux-gnu"]: New tests.
* libguile/bitvectors.c (scm_bit_count_star): Fix typo introduced in
2005 refactor (!) in which the second arg was erroneously taken from
the first arg.
* test-suite/tests/bitvectors.test: Add test.
* doc/ref/api-compound.texi: Fix doc example for u32vector selector.
Reported by Sylvain Beucler <beuc@beuc.net>.
* configure.ac: Check for 'pthread_cancel'.
* libguile/threads.c (scm_cancel_thread): Conditionalize on
!SCM_USE_PTHREAD_THREADS || defined HAVE_PTHREAD_CANCEL.
* test-suite/tests/threads.test (require-cancel-thread): New procedure.
("timed joining fails if timeout exceeded", "join-thread returns
timeoutval on timeout", "cancel succeeds", "handler result passed to
join", "can cancel self"): Use it.
Reported by Sylvain Beucler <beuc@beuc.net>.
* module/system/base/target.scm (cpu-endianness): Add case where CPU is
"arm".
* test-suite/tests/asm-to-bytecode.test ("cross-compilation")["arm-unknown-linux-androideabi"]:
New test.
* libguile/load.c (scm_i_mirror_backslashes): New function.
(scm_init_load_path): Call it to produce MS-Windows file names
with forward slashes.
(FILE_NAME_SEPARATOR_STRING): Define as "/" on all platforms.
* libguile/load.h (scm_i_mirror_backslashes): Add prototype.
* libguile/init.c (scm_boot_guile): Call scm_i_mirror_backslashes
on argv[0].
* libguile/filesys.c (scm_getcwd): Call scm_i_mirror_backslashes
on the directory name returned by getcwd.
* test-suite/tests/ports.test ("file name separators"): New test.
* libguile/simpos.c (scm_system_star) [!HAVE_FORK]: An
implementation of 'system*' for MS-Windows, which doesn't have
'fork', but can use 'spawnvp' in this case.
* test-suite/tests/ports.test ("fdes->port", "seek")
("truncate-file"): Close every file and port we open, to avoid
failure to delete the test file on MS-Windows when the test is
completed.
Suggested by Eli Zaretskii <eliz@gnu.org>.
* test-suite/test-suite/lib.scm (%null-device): Test for Windows based
by checking for a drive letter in the current directory name.
* test-suite/tests/i18n.test (mingw?): New variable.
(%french-locale-name, %french-utf8-locale-name,
%turkish-utf8-locale-name, %german-utf8-locale-name,
%greek-utf8-locale-name): Add name of corresponding Windows codepage,
when MINGW? is true.
(under-turkish-utf8-locale-or-unresolved): Add exception for
"mingw32".
Co-authored-by: Eli Zaretskii <eliz@gnu.org>
Reported by Eli Zaretskii <eliz@gnu.org>.
* test-suite/test-suite/lib.scm (%null-device): New variable.
* test-suite/tests/c-api.test (egrep): Use %NULL-DEVICE instead of
/dev/null.
* test-suite/tests/popen.test ("open-input-pipe")["no duplicate"]:
Likewise.
* libguile/list.c (scm_ilength): Test for SCM_NULL_OR_NIL_P only after
testing scm_is_pair. Conform to GNU coding standards.
* libguile/srfi-1.c (scm_srfi1_length_plus): Ditto.