* module/ice-9/boot-9.scm (while): Specify the return value as #f under
normal conditions, #t under (break), and arg... under (break arg...).
* test-suite/tests/syntax.test ("while"): Test.
* doc/ref/api-control.texi (while do): Document.
* module/ice-9/control.scm (reset, shift): Add implementations of these
operators from Wolfgang J Moeller, derived from implementations by
Oleg Kiselyov.
(reset*, shift*): Procedural variants.
* test-suite/tests/control.test ("shift and reset"): Add tests,
originally from Oleg Kiselyov.
* GUILE-VERSION (GUILE_MICRO_VERSION): Increment.
(LIBGUILE_INTERFACE_CURRENT): Increment to account for new C functions
such as `scm_c_public_ref' and `scm_from_latin1_keyword'.
(LIBGUILE_INTERFACE_AGE): Increment.
* test-suite/tests/ports.test ("string ports"): Add for
`test-decoding-error' tests for ill-formed UTF-8 sequences. Thanks
to Mark H Weaver <mhw@netris.org> for pointing this out.
* test-suite/tests/ports.test ("string ports")["%default-port-encoding
is honored"]: Make sure `(port-encoding p)' is as expected.
["peek-char [utf-16]"]: New test.
* test-suite/standalone/test-pthread-create.c (inner_main): New
function.
(main): Call it within `scm_with_guile', instead of using
`scm_init_guile'. This improves portability--e.g.,
`GC_get_stack_base', used by `scm_init_guile', failed on Darwin
up to BDW-GC 7.1alpha4 included (thanks, Mark, for the hint.)
* test-suite/tests/threads.test ("timed locking succeeds if mutex
unlocked within timeout", "timed unlocking returns #t if condition
signaled", "timed joining succeeds if thread exits within timeout"):
Increase the timeout. Reported by Dale P. Smith <dsmich@roadrunner.com>.
* doc/ref/api-data.texi (Conversion to/from C): In descriptions of
scm_to_stringn and scm_to_{latin1,utf8,utf32}, clarify that the
returned length is in units of bytes or code points, not characters.
Also change NULL to @code{NULL} in a few places.
* configure.ac: Add a check for GC_set_start_callback.
* libguile/gc.c (scm_i_gc): If we don't have GC_set_start_callback, run
the before-gc hook manually here.
(scm_init_gc): Otherwise set it as a start callback.
* libguile/hashtab.c (weak_gc_callback, weak_gc_hook)
(weak_gc_finalizer, scm_c_register_weak_gc_callback): Fix to work
either way, with or without GC_set_start_callback.
* libguile/hashtab.c (weak_gc_callback)
(scm_c_register_weak_gc_callback): Change implementation to use the
before-gc C hook instead of the after-gc finalizers.
* libguile/gc.c (run_before_gc_c_hook, scm_storage_prehistory)
(after_gc_async_thunk, queue_after_gc_hook, scm_init_gc): Instead of
playing our finalizer trick, connect to the GC start callback, and use
it to queue an async after-gc-hook. Seems to fix the after-gc-hook on
non-threaded builds. Though this does re-enable the before-gc C hook,
we don't wire up the Scheme hook because we're in the alloc lock; and
indeed, a before-GC scheme hook isn't a great idea...
* doc/ref/api-evaluation.texi (Compilation): Add discussion of
--fresh-auto-compile.
* doc/ref/scheme-scripts.texi (Invoking Guile): Add --fresh-auto-compile
option.
* NEWS: Add entry.
* libguile/load.c: Define %fresh-auto-compile.
(scm_primitive_load_path): Use it here.
(scm_init_load_should_auto_compile): Init from GUILE_AUTO_COMPILE env
var, with a value of "fresh".
* module/ice-9/boot-9.scm (load-in-vicinity): Auto-compilation cache is
stale if %fresh-auto-compile is true.
* module/ice-9/command-line.scm (compile-shell-switches): Parse out
--fresh-auto-compile.
* configure.ac: Check for <sched.h>.
* libguile/posix.c [HAVE_SCHED_H]: Include <sched.h>, for
`sched_setaffinity' & co.
Reported by Marco Maggi <marco.maggi-ipsu@poste.it>.
* module/ice-9/command-line.scm: New module for parsing Guile's command
line, ported from script.c. Includes local eval-string implementation
to make `guile -c 1' faster, by not having to load the compiler.
* module/Makefile.am: Add to build.
* module/rnrs/arithmetic/fixnums.scm (fixnum?): Restore this export to
be a procedure, not syntax.
(inline-fixnum?): This is what fixnum? was. Use it internally.
* libguile/threads.c (do_thread_exit_trampoline, on_thread_exit):
(scm_i_init_thread_for_guile): Only register and unregister threads
with bdw-gc when we are building with threads support. Thanks to
Marijn for the report.