1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-02 13:00:26 +02:00
Commit graph

4577 commits

Author SHA1 Message Date
Andy Wingo
1623ca6849 more aspiration in boot-9
* module/ice-9/boot-9.scm: Spacing fixes for local-ref et al.
2010-06-22 21:47:15 +02:00
Andy Wingo
ec0f307ee9 begin-deprecated using syntax-case
* module/ice-9/boot-9.scm (begin-deprecated): In terms of syntax-case.
2010-06-22 21:43:09 +02:00
Andy Wingo
7cdd1615e0 relax restriction on _ in literals
* module/ice-9/psyntax.scm: Relax restriction on _ in literals.

* module/ice-9/psyntax-pp.scm: Regen.
2010-06-21 21:47:42 +02:00
Andy Wingo
b78d91d517 syntax-case treats _ as placeholder
* module/ice-9/psyntax.scm (underscore?): New helper, like ellipsis?.
  (syntax-case): Treat the _ pattern as a matches-all pattern,
  disallowing it from the keyword list. Another well-thought part of the
  R6RS.
  ($sc-dispatch): Dispatch _ patterns.

* module/ice-9/psyntax-pp.scm: Regenerated.

* test-suite/tests/syncase.test ("_ is a placeholder"): Add a test.
2010-06-21 20:56:05 +02:00
Andy Wingo
77b79cce0c freshly regenerate psyntax-pp
* module/ice-9/psyntax-pp.scm: A fresh regen to get the lowest gensyms
  we can. Needs a better solution in the end.
2010-06-21 11:02:00 +02:00
Andy Wingo
8d10ccae79 fix rnrs duplicate bindings warnings
* module/rnrs.scm: Fix i/o duplicate bindings warnings by excluding some
  bindings.
2010-06-21 00:07:46 +02:00
Andy Wingo
1052739b74 rnrs modules #:replace as appropriate
* module/ice-9/boot-9.scm (export!): New syntax, as export is to
  module-export!, export! is to module-replace!. I thought that taking
  up the name `replace' would be presumptuous, hence the name mismatch.

* module/ice-9/r6rs-libraries.scm (library): Calculate not only
  re-exports, but replacements as well.
2010-06-20 23:59:57 +02:00
Andy Wingo
73b03e98a7 ensure unicode-capable rnrs string ports
* module/rnrs/io/ports.scm (open-string-input-port):
  (open-string-output-port): Ensure that the ports are unicode-capable
  by binding %default-port-encoding to "UTF-8".
2010-06-20 23:15:29 +02:00
Andy Wingo
35d70eccac repl compiles with warnings by default
* module/system/repl/command.scm (compile): Remove the bitrotten
  options.

* module/system/repl/common.scm (repl-default-options): Add
  'compile-options option.
  (repl-compile-options): Accessor for compile-options.
  (repl-compile): Use repl-compile-options.
  (repl-eval): Adapt to repl-compile interface change.
2010-06-19 20:21:22 +02:00
Andy Wingo
23b4c817b1 typo in mutable-strings
* module/rnrs/mutable-strings.scm: Fix typo.
2010-06-19 15:40:25 +02:00
Andy Wingo
0f8e69a44e *unspecified* in rnrs exceptions
* module/rnrs/exceptions.scm (rnrs): Import *unspecified*.
2010-06-19 15:40:11 +02:00
Andy Wingo
0feb833d22 don't unconditionally restore signals in ensure-batch-mode!
* module/ice-9/boot-9.scm (ensure-batch-mode!): Remove comment about
  restoring signals, and that behavior, as it was making popen.test
  hang. I should investigate further, but instead I'm just going to hope
  that this fixes it.
2010-06-19 15:20:02 +02:00
Andreas Rottmann
c4a8200fa0 Fix SRFI-9 for records without fields
* module/srfi/srfi-9.scm (define-record-type): Deal with fieldless records.
* test-suite/tests/srfi-9.test: Add a fieldless record definition.
2010-06-19 14:52:56 +02:00
Andreas Rottmann
b1e5445f77 Ignore the SRFI name component(s) in R6RS imports
* module/ice-9/r6rs-libraries.scm (resolve-r6rs-interface): To avoid having to
  create alias libraries for all the SRFIs, we simply ignore the name
  components, so (srfi :n foo bar) will resolve to (srfi :n).
2010-06-19 14:52:21 +02:00
Andreas Rottmann
e5b218826a ice-9 receive without define-macro
* module/ice-9/receive.scm: Replace define-macro usage with syntax-rules.
2010-06-19 14:51:48 +02:00
Andreas Rottmann
a2e0b12608 add rnrs unicode to the compound rnrs module
* module/rnrs.scm: import rnrs unicode and export all of its procedures.
2010-06-19 14:51:04 +02:00
Andy Wingo
0ce1c83bbe fix ^L typo
* module/rnrs/mutable-pairs.scm: Fix ^L typo.
2010-06-19 14:45:03 +02:00
Andy Wingo
37620f3f4e set! name (lambda ...) names the lambda
* module/ice-9/psyntax.scm (build-lexical-assignment)
  (build-global-assignment): Maybe name the RHS.

* module/ice-9/psyntax-pp.scm: Regenerated.

* module/ice-9/boot-9.scm (catch, with-throw-handler, throw): Rework to
  use set! instead of define! so that we get names.
2010-06-19 13:56:16 +02:00
Andy Wingo
ec16eb7847 deprecate the-last-stack
* libguile/backtrace.h (scm_the_last_stack_fluid_var)
* libguile/backtrace.c (scm_init_backtrace): No more
  scm_the_last_stack_fluid_var. The replacement is to resolve
  `the-last-stack' in (ice-9 stack-catch).
  (scm_backtrace_with_highlights): Accordingly, instead of backtracing
  the last stack, backtrace the current stack.

* libguile/throw.h:
* libguile/throw.c:
* libguile/deprecated.h:
* libguile/deprecated.c (scm_internal_stack_catch): Deprecate this
  function.

* module/ice-9/save-stack.scm (the-last-stack): Move here from boot-9.

* module/ice-9/debug.scm:
* module/ice-9/debugger.scm: Use (ice-9 save-stack) for the-last-stack.

* module/ice-9/deprecated.scm (the-last-stack): Add deprecated shim.
2010-06-19 13:43:33 +02:00
Andy Wingo
a0d57eedfa don't bind the-last-stack in repl.scm
* module/system/repl/repl.scm (start-repl): Don't bind the-last-stack.
2010-06-19 13:36:53 +02:00
Andy Wingo
4c5412a288 no the-last-stack in ice-9 threads
* module/ice-9/threads.scm (thread-handler): Don't muck with
  the-last-stack.
2010-06-19 13:36:23 +02:00
Andy Wingo
27ae3651bd remove the-last-stack from boot-9
* module/ice-9/boot-9.scm (false-if-exception): Use syntax-rules. Don't
  muck with the-last-stack, it is going away. Remove a later comment
  about the-last-stack.
2010-06-19 13:35:36 +02:00
Andy Wingo
d8158b837e deprecate save-stack, stack-saved?
* module/Makefile.am:
* module/ice-9/boot-9.scm:
* module/ice-9/save-stack.scm (stack-saved?, save-stack): Move these
  bindings to their own module.

* module/oop/goops.scm (goops-error):
* module/ice-9/boot-9.scm (error, top-repl): Remove calls to save-stack.

* module/ice-9/deprecated.scm (stack-saved?, save-stack): Add deprecated
  shims.

* module/ice-9/emacs.scm:
* module/ice-9/stack-catch.scm:
* module/ice-9/debugger/command-loop.scm:
* module/ice-9/scm-style-repl.scm: Import (ice-9 save-stack).
2010-06-19 12:57:31 +02:00
Andy Wingo
bfccdcd530 add support for variable transformers: settable identifier syntax
* module/ice-9/psyntax.scm (set!): Handle variable transformers; though,
  they cannot produce definitions.
  (make-variable-transformer): New procedure.
  (identifier-syntax): Allow the R6RS form that makes variable
  transformers.

* module/ice-9/psyntax-pp.scm: Regenerated.

* doc/ref/r6rs.texi (R6RS Incompatibilities): Remove letrec* item, and
  add set! restriction.
2010-06-19 12:43:40 +02:00
Andy Wingo
7034da249b handle-system-error to scm-style-repl
* module/ice-9/boot-9.scm:
* module/ice-9/scm-style-repl.scm (handle-system-error): Move here from
  boot-9.

* module/ice-9/deprecated.scm (handle-system-error): Keep a deprecated
  wrapper in the root environment.
2010-06-19 11:43:48 +02:00
Andy Wingo
c399333044 add open-string-{input,output}-port to rnrs io ports
* module/rnrs/io/ports.scm (open-string-input-port)
  (open-string-output-port): New procedures.

* module/rnrs.scm (rnrs): Export the new (rnrs io ports) procedures.
2010-06-18 19:27:52 +02:00
Julian Graham
00f79aa4a0 Fix `define-condition-type' to use condition-accessors, not record
accessors.

* module/rnrs/conditions.scm (define-condition-type): The generated
  accessors should be condition accessors, which know how to unpack a
  compound condition; these can then delegate to the appropriate record
  accessors.
* test-suite/tests/r6rs-conditions.test: New test case to verify above.
2010-06-18 09:49:30 -04:00
Andy Wingo
5827e220ab `(debug)' debugs the current stack.
* module/system/vm/debug.scm (debug): Change to debug the current stack
  instead of the last stack.
2010-06-18 13:10:33 +02:00
Andy Wingo
48201a94eb remove before-signal-stack
* 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.
2010-06-18 13:01:14 +02:00
Andy Wingo
352b99c43d has-shown-debugger-hint? to scm-style-repl
* module/ice-9/boot-9.scm:
* module/ice-9/scm-style-repl.scm (has-shown-debugger-hint?): Move to
  scm-style-repl.
2010-06-18 12:54:22 +02:00
Andy Wingo
8942e7a1d7 reorder hooks in boot-9
* module/ice-9/boot-9.scm: Reorder hooks.
2010-06-18 12:51:43 +02:00
Andy Wingo
fede5c8977 default-pre-unwind-handler to scm-style-repl
* module/ice-9/boot-9.scm:
* module/ice-9/deprecated.scm (default-pre-unwind-handler): Deprecate
  root-module definition.

* module/ice-9/scm-style-repl.scm (default-pre-unwind-handler): Move
  here.

* module/ice-9/debugging/traps.scm:
* module/ice-9/debugger.scm:
* module/ice-9/stack-catch.scm: Use default-pre-unwind-handler from
  scm-style-repl.
2010-06-18 12:50:32 +02:00
Andy Wingo
38008a7517 finish deprecating pre-unwind-handler-dispatch
* module/ice-9/boot-9.scm:
* module/ice-9/deprecated.scm (pre-unwind-handler-dispatch): Properly
  deprecate.

* module/ice-9/debugger.scm (debug-on-error):
* module/ice-9/debugging/traps.scm (on-pre-unwind-handler-dispatch):
  Update remaining pre-unwind-handler-dispatch uses.
2010-06-18 12:43:04 +02:00
Andy Wingo
a29e5b632e deprecate `repl'
* module/ice-9/boot-9.scm:
* module/ice-9/deprecated.scm (repl): Deprecate.
2010-06-18 12:30:45 +02:00
Andy Wingo
9346b857af batch-mode? in terms of *repl-level*
* 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*.
2010-06-18 12:28:18 +02:00
Andy Wingo
410e83c012 *unspecified* is identifier syntax
* module/ice-9/boot-9.scm (*unspecified*): Define using
  identifier-syntax. Should also prevent it from being set!.
  (unspecified?): Move up.
2010-06-18 11:46:41 +02:00
Andy Wingo
39d950fd21 repl whitespace fix
* module/system/repl/repl.scm: Fix whitespace.
2010-06-18 11:44:26 +02:00
Andy Wingo
4f99a49919 deprecate set-repl-prompt!
* 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.
2010-06-18 11:33:16 +02:00
Andy Wingo
91037860bd add repl-default-option-set! in (system repl common)
* module/system/repl/common.scm (repl-default-option-set!): New
  interface.
  (repl-default-prompt-set!): New procedure, sets the 'prompt property
  in the default env.
  (repl-prompt): Use the 'prompt repl option if available.
2010-06-18 11:29:25 +02:00
Andy Wingo
40f17f1e0a assert-repl-* and associated state variables to 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.
2010-06-18 11:15:18 +02:00
Andy Wingo
9081209547 build psyntax-pp.go from psyntax.scm
* module/Makefile.am (ice-9/psyntax-pp.go): Build from psyntax.scm, so
  we get proper debugging information and variable names.
2010-06-17 17:52:11 +02:00
Andy Wingo
5f8c55ce3b fix order of internal definitions
* 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.
2010-06-17 14:39:32 +02:00
Andy Wingo
417ee09802 compile-psyntax "optimizes" psyntax-pp
* module/ice-9/compile-psyntax.scm (source): "Optimize" psyntax-pp
  before writing it out.

* module/ice-9/psyntax-pp.scm: Regenerated.
2010-06-17 13:43:27 +02:00
Andy Wingo
57086a19d0 tree-il->scheme renders fix as letrec*
* module/language/tree-il.scm (tree-il->scheme): Expand out to letrec*,
  as it doesn't matter, and this avoids a let when running through the
  evaluator.
2010-06-17 13:43:26 +02:00
Andy Wingo
9b3cc65965 resolve-primitives tweaks
* 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.
2010-06-17 13:43:26 +02:00
Andy Wingo
0f2b9f6252 internal definitions expand out to letrec* instead of letrec
* 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.
2010-06-17 13:43:26 +02:00
Andy Wingo
60d4b22448 compiler support for letrec*
* test-suite/tests/tree-il.test ("letrec"): Add some tests.
* module/language/tree-il/compile-glil.scm (flatten): Add support for
  compiling letrec* in its unoptimized form.

* module/language/tree-il/fix-letrec.scm (simple-expression?):
  Parameterize, so that letrec* will not treat `(car x)' as primitive
  (because it could raise an exception).
  (partition-vars): Lump unreferenced vars in with complex vars, when
  compiling letrec*.
  (fix-letrec!): No need to evaluate inits within a let for letrec*.
2010-06-17 13:43:26 +02:00
Andy Wingo
4ee781a688 add effect+exception-free-primitive? predicate
* module/language/tree-il/primitives.scm
  (effect+exception-free-primitive?): New predicate, like
  effect-free-primitive?, but excludes accessors that could raise
  exceptions.
2010-06-17 13:43:26 +02:00
Andy Wingo
826373a25d psyntax, primitive expander, and memoizer support for letrec*
* 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.
2010-06-17 13:43:26 +02:00
Andy Wingo
fb6e61ca21 beginnings of letrec* support in the expander
* 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*.
2010-06-17 13:43:26 +02:00