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

4452 commits

Author SHA1 Message Date
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
Ludovic Courtès
d967913f05 Use Alex Shinn's pattern matcher for (ice-9 match).
* module/ice-9/match.scm: Rewrite to simply load `match.upstream.scm'.

* module/ice-9/match.upstream.scm: New file.

* module/Makefile.am (NOCOMP_SOURCES): Add `ice-9/match.upstream.scm'.

* test-suite/Makefile.am (SCM_TESTS): Add `tests/match.test'.

* test-suite/tests/match.test: New file.
2010-06-17 00:45:21 +02:00
Andy Wingo
e44d2e4d98 remove encoding of versions into the file system (for now?)
* 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.
2010-06-16 22:20:28 +02:00
Andy Wingo
e5602ce73e set module version in module-export-all!
* module/ice-9/boot-9.scm (module-export-all!): Set the interface
  version as well.
2010-06-16 21:32:52 +02:00
Andy Wingo
393929957d load modules from within a known environment
* module/ice-9/boot-9.scm (try-module-autoload): Init the module
  excursion with a fresh user module.
2010-06-16 09:38:36 +02:00
Andy Wingo
1772145c02 fix bug in collect
* module/ice-9/deprecated.scm (collect): Fix bug.
2010-06-14 10:46:02 +02:00
Andy Wingo
bb0c815741 attempted microoptimization in eval.scm.
* 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.
2010-06-13 20:17:49 +02:00
Andy Wingo
2a8a127bbe compile (ice-9 deprecated) earlier
* module/Makefile.am (ICE_9_SOURCES): Reorder placement of (ice-9
  deprecated), as it's getting bigger, so we should compile it earlier.
2010-06-11 23:04:42 +02:00
Andy Wingo
b920418560 handler of a prompt is in tail context
* module/language/tree-il/analyze.scm (analyze-lexicals): The handler of
  a prompt is in tail context.
2010-06-11 17:16:12 +02:00
Andy Wingo
10e69149f6 while in terms of syntax-case
* module/ice-9/boot-9.scm (while): Reimplement in terms of syntax-case.
  Prompt inlining is coming later.

* test-suite/tests/syntax.test ("while"): Update the expected syntax
  errors.
2010-06-11 16:58:36 +02:00
Andy Wingo
322a36ce9f comment in fix-letrec
* module/language/tree-il/fix-letrec.scm (simple-expression?): Add a
  small FIXME.
2010-06-11 16:58:36 +02:00
Andy Wingo
d71cc612c3 fix lexical call naming bug
* 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.
2010-06-11 16:58:36 +02:00
Andy Wingo
2bcf97a643 unparse the tag of a prompt
* module/language/tree-il.scm (unparse-tree-il): Properly unparse the
  tag of a prompt.
2010-06-11 16:58:36 +02:00
Andy Wingo
38030bdf5d make-prompt-tag is an effect-free primitive
* module/language/tree-il/primitives.scm
  (*interesting-primitive-names*, *effect-free-primitives*): Recognize
  make-prompt-tag as interesting and effect-free.
2010-06-11 16:58:36 +02:00
Andy Wingo
0e4b781898 add inliner cases for conditionals
* module/language/tree-il/inline.scm (boolean-value, inline!): Add a
  case for inlining conditional expressions.

* test-suite/tests/tree-il.test: Fix conditional tests to have a
  non-inlinable condition.
2010-06-11 16:58:31 +02:00
Andy Wingo
5c0450b249 deprecate `collect'
* module/ice-9/boot-9.scm:
* module/ice-9/deprecated.scm (collect): Deprecate, and fix to ensure
  sequential collection.
2010-06-11 16:58:31 +02:00
Andy Wingo
122f296ddc define-option-interface in terms of syntax-rules
* module/ice-9/boot-9.scm (define-option-interface): Rewrite using
  syntax-rules.
2010-06-11 16:58:31 +02:00
Andy Wingo
47aabe86ca a failed resolve-interface does not leave behind an empty module
* 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.
2010-06-11 16:58:31 +02:00
Andy Wingo
befd1df991 cleanups to version-matches?
* module/ice-9/boot-9.scm (version-matches?): Some cleanups: use
  and-map, or-map; prefer case to cond; abbreviate and scope helper
  functions.
2010-06-11 16:58:31 +02:00
Andy Wingo
c3aaf3cf7a deprecate get-option, for-next-option, display-usage-report, transform-usage-lambda
* 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.
2010-06-11 16:58:31 +02:00
Andy Wingo
0bbe199d4d deprecate `scheme-file-suffix'
* module/ice-9/boot-9.scm:
* module/ice-9/deprecated.scm (scheme-file-suffix): Deprecate.
2010-06-11 16:58:31 +02:00
Andy Wingo
b38507c1af comments in boot-9
* module/ice-9/boot-9.scm: Add comments.
2010-06-11 16:58:31 +02:00
Andy Wingo
4100dc5dee deprecate `bad-throw'
* 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.
2010-06-11 16:58:31 +02:00
Andy Wingo
4eeaf67c8c error in terms of case-lambda
* module/ice-9/boot-9.scm (error): Redefine using case-lambda.
2010-06-11 16:58:31 +02:00
Andy Wingo
010b159f56 deprecate has-suffix?
* module/ice-9/boot-9.scm:
* module/ice-9/deprecated.scm (has-suffix?): Deprecate.

* test-suite/guile-test:
* benchmark-suite/guile-benchmark: Fix uses of deprecated has-suffix?.
2010-06-11 16:58:24 +02:00
Andy Wingo
02b582cef5 comments in boot-9
* module/ice-9/boot-9.scm: Add some comments about the nature of
  properties.
2010-06-11 00:13:12 +02:00