* libguile/random.c (random_state_of_last_resort): Simplify optional
inclusion of PID in the random state. Clarify in the comments that
the PID is only included where scm_getpid is present.
* doc/ref/api-data.texi (Random): Clarify that
'random-state-from-platform' includes the PID in the random state only
if scm_getpid is present.
* module/language/glil/decompile-assembly.scm: Remove. This module
never worked, and even failed to compile.
* module/language/glil/spec.scm:
* module/Makefile.am: Remove references to (language glil
decompile-assembly).
* module/ice-9/mapping.scm (mapping-create-handle!): INIT is required.
(mapping-ref): Rewrite. Fix problem with DFLT.
(hash-table-mapping-hooks): Drop DELETE-PROC, hash-table accessors
only use ASSOC-PROC. Add INIT to create-handle hook. Use correct
hash-table accessors.
(make-hash-table-mapping): Drop DELETE-PROC.
(hash-table-mapping): Rewrite. Drop DELETE-PROC.
* libguile/filesys.c (is_file_name_separator): New helper, as in
load.c.
(scm_dirname, scm_basename, scm_i_relativize_path): Use
is_file_name_separator.
* libguile/load.c (is_file_name_separator, is_drive_letter):
(is_absolute_file_name): New helpers, like the ones in boot-9.
Perhaps we should just define them in C.
(search_path, scm_try_auto_compile, canonical_suffix): Rewrite using
the new helpers.
* module/ice-9/boot-9.scm (absolute-file-name?) [WINDOWS]: Allow '/' as
well as '\' when detecting UNC names.
(load-in-vicinity): Add a comment about the purpose of
canonical->suffix.
* libguile/mkstemp.c (mkstemp): Add O_BINARY. Since temp files are
empty at the beginning, we're not changing the behavior for reading
files. For writing files `newline' and ~% can add \r elements as
needed. So this is a reasonable thing to do, and it prevents mangling
of temp files for the compiler.
* module/system/base/compile.scm (call-with-output-file/atomic): Call
close-port before deleting the temporary file name, otherwise deletion
fails on MS-Windows (cannot delete a file that is still open).
* libguile/filesys.c (scm_system_file_name_convention): New function.
Exported to Scheme only.
* module/ice-9/boot-9.scm (file-name-separator?, absolute-file-name?):
New predicates.
(file-name-separator-string): New global variable.
(in-vicinity): Use the new procedures.
(load-user-init, try-module-autoload): Use file-name-separator-string.
(load-in-vicinity): Update canonical->suffix. Consistently use the
term "file name" throughout.
* module/ice-9/psyntax.scm (include): Use global `absolute-file-name?'.
* module/ice-9/psyntax-pp.scm: Regenerate.
Should fix fport_input_waiting when neither poll nor select nor FIONREAD
are available, which is the case on MinGW. Thanks to Eli Zaretskii for
the report.
* libguile/array-handle.c (scm_array_handle_pos_1):
(scm_array_handle_pos_2): New functions.
* libguile/generalized-arrays.c (scm_c_array_ref_1, scm_c_array_ref_2):
(scm_c_array_set_1_x, scm_c_array_set_2_x): New functions.
(scm_i_array_ref, scm_i_array_set_x): New subr bindings for array-ref
and array-set! that avoid consing for arrays of rank 1 or 2.
* test-suite/tests/arrays.test ("array-set!"): Fix expected exception
for wrong number of indices.
* libguile/inline.h:
* libguile/array-handle.h (scm_array_handle_ref):
(scm_array_handle_set): Move definitions here from inline.h.
* libguile/inline.c: Include array-handle.h.
* libguile/hashtab.c (scm_hash_count): New function. Count the number
of elements in a hash table.
* doc/ref/api-compound.texi (Hash Tables): Update examples and
reference.
* test-suite/tests/hash.test (hash-count): New test.
* module/language/tree-il/peval.scm (peval): Add a special-case inlining
pattern for apply to a let-bound rest arg that preserves effect
ordering.
* test-suite/tests/peval.test ("partial evaluation"): Add a test, and
update an older test with a better result.
* module/language/tree-il/peval.scm (peval): Correct comment on
find-definition, and allow a find-definition to fall back on a source
expression. Avoid copying non-constant expressions.
* test-suite/tests/peval.test ("partial evaluation"): Add a test that
inlining rest arguments works with complicated argument expressions,
and a test that order of effects in rest args is preserved.
* module/language/tree-il/peval.scm (peval): Move up the find-definition
helper. Use it to speculatively destructure conses and lists into the
tail position of an `apply' form.
* test-suite/tests/peval.test ("partial evaluation"): Add tests.
* doc/ref/api-foreign.texi (Foreign Types): Replace references to the
old foreign->bytevector and bytevector->foreign with the new procedure
names using pointer.
* test-suite/tests/foreign.test ("make-pointer")["equal? modulo
finalizer", "equal? modulo finalizer (set-pointer-finalizer!)"]: Skip
when `scm_is_pair' cannot be found, as is the case on Cygwin.
Reported by "objc" <objcjohn@hotmail.com>.