* module/ice-9/psyntax.scm (syntax-type): Return an additional value
that contains the entire form in _all_ cases, including for definition
forms. Previously, the entire form was not returned for definition
forms.
(expand-expr): Add an additional argument that contains the entire
form in _all_ cases, including for definition forms. Use it to
include the entire form in error messages, notably for definitions in
expression context. Include the source location information, which
was previously missing from these errors when the rhs expression was
an atom. Improve the "definition in expression context" error message
to be more comprehensible for Scheme beginners.
(expand-top-sequence, expand, expand-body): Adjust as needed to handle
the additional return value from 'syntax-type' and the additional
argument to 'expand-expr'.
* module/ice-9/psyntax-pp.scm: Regenerate.
* NEWS: Update.
* libguile/strings.c (scm_i_allocate_string_pointers): Encode strings
using the current locale. Previously, Latin-1 was used. Indirectly,
this affects the encoding of strings in `system*', `execl', `execlp',
`execle', `environ', and `dynamic-args-call'.
(scm_makfromstrs): In header comment, clarify that the C strings are
interpreted according to the current locale encoding.
* NEWS: Add NEWS entry.
* 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.
* 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/numbers.c (scm_exact_integer_sqrt): New C procedure to
compute exact integer square root and remainder.
(scm_i_exact_integer_sqrt): New Scheme procedure `exact-integer-sqrt'
from the R6RS, imported into core guile.
* libguile/numbers.h: Add prototypes.
* module/rnrs/base.scm: Remove broken stub implementation, which would
fail badly when applied to large integers.
* doc/ref/api-data.texi: Add documentation.
* doc/ref/r6rs.texi: Change documentation for `exact-integer-sqrt' to a
stub that xrefs the core docs, as is done for other operations
available in core.
* test-suite/tests/numbers.test: Add tests.
* NEWS: Add news entries.