`module-ensure-variable!'. Make sure that there really is a local
variable, not just a visible one.
(module-ensure-variable!): See above.
(module-export!): Behave like always when deprecated features are
enabled, but issue a warning when re-exporting a variable. When
deprecated features are disabled, only export local variables,
creating them uninitialized when they don't yet exist.
(module-re-export!): New. Use this for re-exporting imported
variables.
(re-export): New, to go with `module-re-export!'.
(named-module-use!, top-repl): Use resolve-interface
instead of resolve-module to get at the used module.
(module-export!): Use it to ensure that there is a variable to
export. Previously, we would always create a new variable, copy
the value over, and export the new variable. This confused
syncase since it keys important properties on variables.
(compile-interface-spec, compile-define-module-args): New.
(define-module): Use compile-define-module-args to construct
argument for process-define-module.
(use-modules, use-syntax): Use compile-interface-spec to construct
arguments for process-use-modules.
(process-define-module): Expect keywords in argument list.
to feature lists.
(cond-expand): Use feature information associated with modules.
* boot-9.scm (use-srfis): Do not extend the srfi-0 feature list.
(cond-expand-provide): New procedure.
set-current-module.
(define-module): Do it here, in the expansion.
(top-repl): Do not define '(guile-user)' module and conditionally
load `(ice-9 threads)' and/or `(ice-9 regex)' here. Do it on
top-level as the last thing in boot-9.scm instead.
(%load-path): Use `list' instead of `cons' to create a single
element list when adding "." to it.
(process-define-module, process-use-modules, module-export!): Add
dummy definitions prior to booting the mdule system.
(process-define-module): Internal proc `unrecognized'
now accepts arg; update callers.
Reverse order of interfaces added to module to be
consistent with that specified in `define-module' form.
`module-public-interface'.
(resolve-module): Extend to handle selection and renaming in spec.
Arg is now `spec' which can be a simple module name (list of symbols)
or a interface spec.
(symbol-prefix-proc): New proc.
(process-define-module): Use "define-module" in error messages
instead of "defmodule". Factor error into internal proc.
Rewrite `use-module' and `use-syntax' handlers.
Replace some single-arm `if-not' constructs w/ `or'.
(process-use-modules): Arg is now `module-interface-specs',
which is passed through to `resolve-interface' as before; nfc.
(named-module-use!, top-repl): Abstraction maintenance: Use `provided?'.
(call-with-deprecation): Removed.
(id): Use `issue-deprecation-warning' instead of
`call-with-deprecation'. Wrap definition in `begin-deprecated'.
(eval-in-module): Manifest deprecation via `begin-deprecation' and
`issue-deprecation-warning'.
(warn-autoload-deprecation): Deactivated.
`interaction-evironment'.
(define-public, defmacro-public): Use `export' instead of explicit
module magic.
(eval-when): New macro.
(define-module, use-modules, use-syntax, export): Use it to
restrict the use of these forms to the top level.
(define-public, defmacro-public): Only export binding when on
top-level.
(process-define-module): Call `set-current-module' with the
defined module.
(define-module): Simply call `process-define-module' without any
fuss (but only on top-level).
(named-module-use!): New function.
(top-repl): Do not use `define-module'. Use equivalent low-level
means instead.