* module/ice-9/boot-9.scm (before-signal-stack): Remove. We're moving
away from using the-last-stack, so this backup copy is not much use.
(top-repl): Don't bother saving a before-signal-stack.
* module/ice-9/debugger/command-loop.scm (debugger-handler): No need to
restore here either.
* module/ice-9/boot-9.scm (*repl-level*): New global fluid, moved here
from (system repl common).
(batch-mode?): Reimplement in terms of *repl-level*.
(ensure-batch-mode!): A replacement for set-batch-mode?!.
* module/ice-9/deprecated.scm (set-batch-mode?!): Deprecate.
* module/ice-9/popen.scm (open-process): Use ensure-batch-mode!.
* module/ice-9/scm-style-repl.scm (error-catching-loop): Override
ensure-batch-mode!.
* module/system/repl/common.scm: Remove *repl-level*.
* module/ice-9/boot-9.scm:
* module/ice-9/deprecated.scm (set-repl-prompt!): Deprecate, but wrap
the (system repl common) implementation instead of the scm-style-repl.
* module/ice-9/boot-9.scm:
* module/ice-9/scm-style-repl.scm (scm-repl-silent, assert-repl-silence)
(scm-repl-print-unspecified, assert-repl-print-unspecified)
(scm-repl-verbose, assert-repl-verbosity)
(scm-repl-prompt): Move these definitions here from boot-9.scm.
* module/ice-9/deprecated.scm (assert-repl-silence):
(assert-repl-print-unspecified, assert-repl-verbosity): Deprecated
wrappers for the functions. I'm not sure if the variables can be
helped though.
* module/ice-9/psyntax.scm (chi-body): Whoops, actually render internal
definitions into a letrec* in the right order.
* module/ice-9/psyntax-pp.scm: Regenerate.
* test-suite/tests/syntax.test: Add some letrec* tests.
* module/ice-9/boot-9.scm (make-struct/no-tail): Define a version of
this function. Because during optimization we resolve make-struct to
make-struct/no-tail, we need an implemented make-struct/no-tail if we
are to be able to run scheme made from tree-il->scheme.
* module/language/tree-il/compile-glil.scm (*primcall-ops*): Remove
variable-set case, as there is no "variable-set!" primitive.
(flatten): Add a special hack for variable-set!. Ugly, I know.
* module/language/tree-il/primitives.scm (*effect-free-primitives*): Add
make-struct/no-tail.
(*effect+exception-free-primitives*): Remove make-struct, as it could
raise an exception.
(variable-set!): Remove expansion to variable-set.
* module/ice-9/psyntax.scm (chi-body): Internal definitions are now
letrec* instead of letrec, following the R6RS.
* module/ice-9/psyntax-pp.scm: Regenerated.
* libguile/expand.c (expand_letrec_helper): Factor out common code.
(expand_letrec): Use expand_letrec_helper.
(expand_letrec_star): New primitive syntax: letrec*.
* libguile/memoize.c (memoize): Add memoizer support for in-order letrec
(letrec*).
* module/ice-9/psyntax.scm (build-letrec): Another arg, `in-order?'.
(chi-body): Adapt to build-letrec change. We don't yet use letrec* for
internal definitions.
(letrec): Adapt to build-letrec change.
(letrec*): New expander.
* module/ice-9/psyntax-pp.scm: Regenerated.
* libguile/expand.h (SCM_EXPANDED_LETREC_IN_ORDER_P)
(SCM_MAKE_EXPANDED_LETREC): Add a new field to letrec, in-order?. Will
be used to support letrec*.
* libguile/expand.c (LETREC, expand_named_let, expand_letrec): Adapt
code.
* module/language/elisp/compile-tree-il.scm (compile-pair):
* module/ice-9/psyntax.scm (build-named-let, build-letrec): Pass #f for
in-order? to `make-letrec'.
* module/ice-9/psyntax-pp.scm: Regenerate.
* module/language/tree-il.scm: Add letrec-in-order? accessor.
(parse-tree-il, unparse-tree-il): Parse and unparse an in-order?
letrec as `letrec*'.
(tree-il->scheme): Serialize letrec*.
* module/ice-9/boot-9.scm (find-versioned-module): Remove. Still had
some bugs (e.g. for "." in the path and in finding compiled files),
did too much computation and statting, and we don't really want to
promote versioning. Nor do we want to hard-code a particular encoding
of versions in the file-system. Perhaps the real way to do this is to
be extensible somehow.
(try-module-autoload): Just dispatch to primitive-load-path in all cases.
* module/rnrs
* module/rnrs.scm:
* module/rnrs/arithmetic/bitwise.scm:
* module/rnrs/arithmetic/fixnums.scm:
* module/rnrs/arithmetic/flonums.scm:
* module/rnrs/base.scm:
* module/rnrs/conditions.scm:
* module/rnrs/control.scm:
* module/rnrs/enums.scm:
* module/rnrs/eval.scm:
* module/rnrs/exceptions.scm:
* module/rnrs/files.scm:
* module/rnrs/hashtables.scm:
* module/rnrs/io/simple.scm:
* module/rnrs/lists.scm:
* module/rnrs/mutable-pairs.scm:
* module/rnrs/mutable-strings.scm:
* module/rnrs/programs.scm:
* module/rnrs/r5rs.scm:
* module/rnrs/records/inspection.scm:
* module/rnrs/records/procedural.scm:
* module/rnrs/records/syntactic.scm:
* module/rnrs/sorting.scm:
* module/rnrs/syntax-case.scm:
* module/rnrs/unicode.scm: Move these files, eliding the "6/" infix, so
that they are in the normal (unversioned) module path.
* module/ice-9/eval.scm (primitive-eval): Try using list-ref instead of
cdring in the vm. We'll check the hydra build times to see if this has
any actual merit. Surely the best solution is another representation
of environments, though.
* module/ice-9/psyntax.scm: Fix bug in which the whole syntax object was
being recorded as the name of the operator in a lexical call, instead
of just the symbolic name.
* module/ice-9/psyntax-pp.scm: Regenerated.
* module/ice-9/boot-9.scm (resolve-interface): Pass #:ensure #f to
resolve-module, so that in the case of module-not-found we don't leave
behind an empty module without an interface.
* module/ice-9/boot-9.scm:
* module/ice-9/deprecated.scm (get-option, for-next-option)
(display-usage-report, transform-usage-lambda): Deprecate these
option-parsing utils. We can revive them in a non-deprecated module if
there is interest, but I suspect there will be no interest.
* module/ice-9/boot-9.scm:
* module/ice-9/scm-style-repl.scm (bad-throw): Move here. This function
was never documented, but has been around since guile-ii. It's not
used with current code though.
* module/ice-9/deprecated.scm: Provide bad-throw in default env.
* module/ice-9/debugger/commands.scm: Import bad-throw from
scm-style-repl.
* module/Makefile.am:
* module/ice-9/scm-style-repl.scm: New file, to hold the old
scm-style-repl.
* module/ice-9/deprecated.scm: Provide scm-style-repl and
error-catching-loop and error-catching-repl in the default env, but
with deprecation warnings.
* module/ice-9/boot-9.scm (resolve-module): Add #:ensure kwarg,
defaulting to true. If true we make an empty module if none was found
(the old behavior). Otherwise we return false.
* test-suite/tests/modules.test ("resolve-module"): Add tests for old
and new behavior.
* module/ice-9/boot-9.scm (top-repl): This use of @ is not safe, because
it will cause (system repl repl) to be loaded at expand time, which
will eventually cause (srfi srfi-1) to be loaded, which won't work
with a fresh build tree because the helper lib isn't compiled. Gross.
(load): Add a note about why this use of @ is safe.
* module/ice-9/boot-9.scm (find-versioned-module): Perform a stable sort on
version numbers of matched libraries; eliminate extra path separator in
library file path.
* module/ice-9/boot-9.scm (module-filename, set-module-filename!): Add a
new field to modules, the filename that is associated with the module.
For debugging purposes.
(process-define-module): Parse out a #:filename argument.
(make-module, make-autoload-interface): Adapt to module-constructor
change.
(define-module): Init module-filename from (current-source-location).
* module/ice-9/format.scm (format:parse-float): Accept a number, and
when stringifying the number, first convert to inexact.
* test-suite/tests/format.test ("~f fixed-point"): Add exact rational
test.
* module/ice-9/psyntax.scm (chi-install-global, chi-macro)
(eval-local-transformer): Now that we handle module hygiene through
syntax objects, there is no more need to record the current module
when installing syntax transformers.
* module/ice-9/psyntax-pp.scm: Regenerated (trickily).
* libguile/_scm.h: Bump objcode version for macro representation change.
* libguile/macros.c (scm_macro_transformer): Adapt to change in macro
representation.