1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-08 21:20:19 +02:00
Commit graph

1088 commits

Author SHA1 Message Date
Andy Wingo
fc835b1b14 better procedure-arguments for interpreted procs with opt, rest, kwargs
* module/ice-9/session.scm (procedure-arguments): Arrange to interpret
  numbers in the "req" and "opt" positions of an 'arglist as N arguments
  with unknown name.

* module/ice-9/eval.scm (primitive-eval): Set 'arglist on "complex"
  procedures.  Fixes http://bugs.gnu.org/10922.

* test-suite/tests/session.test ("procedure-arguments"): Add a test.
2012-07-06 12:19:12 +02:00
Andy Wingo
d0491c9a16 dead code elimination
* module/ice-9/psyntax.scm: Remove commented-out definitions of `do' and
  `case'.
2012-07-02 23:02:20 +02:00
Ludovic Courtès
a8215aedad Have procedure-arguments' always return the allow-other-keys?' pair.
Fixes <http://bugs.gnu.org/10938>.
Based on a patch by Stefan Israelsson Tampe <stefan.itampe@gmail.com>.

* module/ice-9/session.scm (procedure-arguments): When the 'arglist
  property is available, emit the `allow-other-keys?' pair.  Use
  `match-lambda'.

* test-suite/tests/session.test ("procedure-arguments")["aok? is
  preserved"]: New test.
2012-07-02 15:08:25 +02:00
Andy Wingo
0dd7c54075 Merge remote-tracking branch 'origin/stable-2.0'
Conflicts:
	libguile/deprecated.c
	libguile/ports.c
	libguile/ports.h
	libguile/strports.c
	test-suite/tests/cse.test
2012-06-22 13:18:02 +02:00
Andy Wingo
5cfa385db7 update version-etc copyright year
* module/ice-9/command-line.scm (version-etc): Update copyright year to
  2012.
2012-06-22 12:33:20 +02:00
Andy Wingo
378daa5fa5 scandir: select? takes basenames, operates on (sub)dirs also
* module/ice-9/ftw.scm (scandir): Run the select? procedure on all
  items, including subdirs and the `.' and `..' entries.  Pass it the
  basename of the file in question instead of the full name.

* test-suite/tests/ftw.test ("scandir"): Adapt expectation for the .test
  selector.  Add test for a selector that rejects everything.
2012-06-22 12:33:20 +02:00
Ludovic Courtès
0a3ac81a1c Update (ice-9 match) from Chibi-Scheme.
Fixes <http://bugs.gnu.org/10651>.

* module/ice-9/match.upstream.scm: Update.
2012-06-08 12:42:08 +02:00
Ludovic Courtès
9f6e3f5a99 Have string ports honor `%default-port-conversion-strategy'.
* libguile/strports.c (scm_mkstrport): Remove initialization of
  `pt->ilseq_handler'.

* module/ice-9/pretty-print.scm (truncated-print)[ellipsis]: Set
  %DEFAULT-PORT-CONVERSION-STRATEGY to 'error.

* test-suite/tests/ports.test ("string
  ports")["%default-port-conversion-strategy is honored"]: New test.
  ["wrong encoding"]: Rename to...
  ["wrong encoding, error"]: ... this.  Explicitly set
  %DEFAULT-PORT-CONVERSION-STRATEGY to 'error.  Return #f when no
  exception is raised.
2012-05-31 00:54:21 +02:00
Andy Wingo
747747ee06 Merge remote-tracking branch 'origin/stable-2.0'
This commit removes code that was newly deprecated in stable-2.0.

Conflicts:
	libguile/deprecated.c
	libguile/deprecated.h
	libguile/modules.c
	module/ice-9/boot-9.scm
	module/ice-9/deprecated.scm
2012-05-23 12:38:56 +02:00
Andy Wingo
2de74cb56e finish deprecating eval closures
* libguile/deprecated.h:
* libguile/deprecated.c (scm_eval_closure_lookup)
  (scm_standard_eval_closure, scm_standard_interface_eval_closure)
  (scm_eval_closure_module): Deprecate these, as they are unused.

* libguile/modules.h:
* libguile/modules.c: Remove deprecated code.

* module/oop/goops/util.scm (top-level-env, top-level-env?): Deprecate.

* module/ice-9/deprecated.scm (set-system-module!): Deprecate.
  (module-eval-closure): Deprecate, by overriding the core definition to
  return a fresh eval closure.

* module/ice-9/boot-9.scm (make-module): Don't set an eval closure on
  the module.
  (the-root-module, the-scm-module): Don't call set-system-module!.
2012-05-23 12:29:15 +02:00
Andy Wingo
688291fe19 add guile-2.2 feature
* module/ice-9/boot-9.scm (%cond-expand-features): Add guile-2.2
  feature.
2012-05-17 10:38:54 +02:00
Andy Wingo
ee6207d6f5 Merge remote-tracking branch 'origin/stable-2.0' 2012-05-11 14:31:17 +02:00
Andy Wingo
da874e5415 fix more assumptions that the frame-procedure is a procedure
* libguile/frames.c (scm_frame_source, scm_frame_previous):
* libguile/stacks.c (scm_make_stack):
* module/ice-9/boot-9.scm (exception-printers):
* module/system/vm/frame.scm (frame-call-representation): Fix more
  assumptions that frame-procedure is a program, or even a procedure.
2012-05-11 14:30:43 +02:00
Andy Wingo
9d8a10a94c Merge remote-tracking branch 'origin/stable-2.0'
Conflicts:
	test-suite/tests/cse.test
2012-04-26 23:40:57 +02:00
Andy Wingo
4bd53c1ba3 vlist performance improvements; allocate vhash data inline
* module/ice-9/vlist.scm (make-block): If we are making a hash table,
  allocate it inline with the contents.  Otherwise don't even add a
  pointer to the block.
  (block-hash-table?): New internal accessor.
  (block-ref*): Remove.  Vhash entries are no longer wrapped.
  (block-ref):
  (block-hash-table-next-offset):
  (block-hash-table-set-next-offset!):
  (block-hash-table-ref):
  (block-hash-table-set!):
  (block-hash-table-add!): Adapt to take content vector explicitly, and
  to expect the hash table inline with the contents.  Some of these
  accessors are new.  Adapt callers.
  (assert-vlist): New helper.
  (vlist-cons): Update comment.
  (vhash?): Update scheme to allocate the hash table and chain links
  inline with the contents.
  (%vhash-fold*, %vhash-assoc): Rewrite to be more performant.
2012-04-23 21:52:25 +02:00
Andy Wingo
f6a554a6aa vlist-cons micro-optimizations
* module/ice-9/vlist.scm (set-block-next-free!): Define this instead of
  increment-block-next-free!.
  (block-append!): Refactor to take an offset, and only append if the
  offset is the next free value, and there is space in the block.
  (block-cons): Refactor to not be a loop.  The partial evaluator would
  have to understand effects analysis in order to be able to unroll it,
  and there's at most one recursion.

  Recovers the performance loss resulting from the previous commit.
2012-04-23 21:52:25 +02:00
Andy Wingo
299ce911f9 slight vlist refactor
* module/ice-9/vlist.scm: Use define-inlinable instead of define-inline,
  to ensure strict argument evaluation.  There is a slight performance
  penalty, but I hope subsequent hacks make it up.
2012-04-23 21:52:25 +02:00
Andy Wingo
bc61280992 Merge remote-tracking branch 'local-2.0/stable-2.0'
Conflicts:
	configure.ac
	libguile/finalizers.c
	libguile/finalizers.h
	libguile/gc.c
	libguile/gc.h
	libguile/inline.c
	libguile/inline.h
	libguile/ports.c
	libguile/smob.c
	libguile/smob.h
	module/ice-9/deprecated.scm
	module/ice-9/r4rs.scm
2012-03-08 13:22:09 +01:00
Andy Wingo
283ab48d3f faster (make-prompt-tag); default-prompt-tag is a parameter
* module/ice-9/boot-9.scm (default-prompt-tag): Once parameters have
  booted, redefine as a parameter.
  (make-prompt-tag): Change from a gensym to a list.  Thanks to Mark
  Weaver for the suggestion.

* doc/ref/api-control.texi (Prompt Primitives): Update docs.
2012-03-07 19:02:00 +01:00
Andy Wingo
a62b5c3d54 call-with-{input,output}-string implemented in scheme
* module/ice-9/boot-9.scm (call-with-input-string)
  (call-with-output-string): Implement in Scheme.

* libguile/strports.c (scm_call_with_output_string):
  (scm_call_with_input_string): Dispatch to Scheme.
2012-03-07 13:34:06 +01:00
Andy Wingo
f6e6b5181a shuffle r4rs procedures into boot-9
* module/ice-9/boot-9.scm: Refine a comment about low-level port
  functions.  Move call-with-foo-port, with-input-from-foo, etc later in
  the file, and define using `parameterize' instead of `dynamic-wind'.
  Somewhat cleaner, and avoids thunk? checks for "swaports" in the old
  implementation.
2012-03-06 00:51:50 +01:00
Andy Wingo
124bc316a6 load parameters earlier in boot-9
* module/ice-9/boot-9.scm: Move parameters earlier in the boot process.
  The new with-output-to-port code will use it.
2012-03-06 00:51:49 +01:00
Andy Wingo
d867c7496c slight tweak to file-exists?, file-is-directory?
* module/ice-9/boot-9.scm (file-exists?, file-is-directory?): For the
  fallback cases, use open-input-file instead of open-file with
  OPEN_READ.
2012-03-06 00:51:49 +01:00
Andy Wingo
f7955da966 bootstrapping shenanigans in `warn'
* module/ice-9/boot-9.scm (warn): Don't use with-output-to-port, as
  we'll move that definition after the psyntax boot.
2012-03-06 00:51:49 +01:00
Andy Wingo
f28dc43c95 more clear comments in boot-9.scm
* module/ice-9/boot-9.scm: Update comment header for language
  primitives.
2012-03-06 00:51:49 +01:00
Andy Wingo
0f6f5fb7f8 remove deprecated close-io-port
* module/ice-9/boot-9.scm (close-io-port): Remove proc that was
  deprecated in 2.0.
2012-03-06 00:51:49 +01:00
Andy Wingo
418321524a inline ice-9/r4rs.scm into ice-9/boot-9.scm
* module/ice-9/boot-9.scm: Inline r4rs.scm, in anticipation of more
  refactorings.

* module/ice-9/r4rs.scm: Remove.
* module/Makefile.am: Update.
2012-03-06 00:51:49 +01:00
Andy Wingo
1fa0fde495 deprecate close-io-port
* module/ice-9/r4rs.scm:
* module/ice-9/deprecated.scm (close-io-port): Deprecate.
2012-03-05 23:52:28 +01:00
Mark H Weaver
3fafc52afb Comment out unused definitions of 'do' and 'case' in psyntax.scm
* module/ice-9/psyntax.scm (do, case): Comment out these definitions,
  which are never used and immediately replaced by definitions in
  boot-9.scm.

* module/ice-9/psyntax-pp.scm: Regenerate.
2012-03-04 12:01:10 -05:00
Mark H Weaver
1948b38d88 Fix syntax wrap comments; remove old unused cruft
* module/ice-9/psyntax.scm (subst-rename?, rename-old, rename-new,
  rename-marks, make-rename): Remove these unused syntax rules.
  Fix description of syntax wraps to match current reality.
2012-03-04 12:00:57 -05:00
Mark H Weaver
d019ef9288 Merge branch 'stable-2.0'
Conflicts:
	module/ice-9/psyntax-pp.scm
	module/language/tree-il.scm
2012-03-03 20:20:16 -05:00
Mark H Weaver
1af6d2a717 Minimize size of embedded syntax objects in psyntax-pp.scm
* module/ice-9/compile-psyntax.scm: Minimize syntax object literals
  embedded in psyntax-pp.scm.

* module/ice-9/psyntax.scm: Rename a few variables so that syntax
  objects embedded in macros have no lexical bindings, so that their
  minimized syntax objects will have no embedded labels.  These labels
  were the last remaining gensym counters in psyntax-pp.scm.

* module/ice-9/psyntax-pp.scm: Regenerate.  It is now less than one
  quarter of its previous size!  More importantly, this file no longer
  contains any gensym counters, which means that in the future, local
  changes to psyntax.scm will usually result in only local changes to
  psyntax-pp.scm.
2012-03-03 18:06:59 -05:00
Mark H Weaver
72ee0ef71b tree-il->scheme improvements
* module/language/tree-il.scm (tree-il->scheme): New implementation that
  simply calls 'decompile-tree-il'.

* module/language/scheme/decompile-tree-il.scm (choose-output-names,
  do-decompile): New internal procedures.

  (decompile-tree-il): New and improved implementation.  Print source
  identifiers where possible, otherwise add minimal numeric suffixes.
  Previously we printed the gensyms.  Avoid 'begin' in contexts that
  provide an implicit 'begin'.  Produce 'cond', 'case', 'and', 'or',
  'let*', named let, and internal defines where appropriate.  Recognize
  keyword arguments in 'opts' to disable the production of these derived
  syntactic forms, and to optionally strip numeric suffixes from
  variable names.

* module/ice-9/compile-psyntax.scm: Disable partial evaluation, letrec
  fixing, and primitive expansion when producing psyntax-pp.scm, in
  order to produce output as close to the original source as practical.
  Disable production of derived syntactic forms as needed during
  bootstrap.  Strip numeric suffixes from variable names.  Adjust
  pretty-printing parameters.

* module/ice-9/psyntax-pp.scm: Regenerate.  It is now less than half
  of the original size.
2012-03-03 18:05:21 -05:00
Mark H Weaver
8c43b28a11 pretty-print: allow max-expr-width to be set; recognize more keywords
* module/ice-9/pretty-print.scm (pretty-print): Add new keyword argument
  '#:max-expr-width'.

  (generic-write): Add new argument 'max-expr-width'.  Previously this
  was internally defined to the constant value 50.
2012-03-02 18:29:29 -05:00
Mark H Weaver
9120f130a8 Fix typos in psyntax.scm
* module/ice-9/psyntax.scm (gen-syntax-case): #'pad --> #'pat
  (define*): #'x --> #'id

* module/ice-9/psyntax-pp.scm: Regenerate
2012-03-02 18:28:06 -05:00
Andy Wingo
9d15db65ff Merge remote-tracking branch 'local-2.0/stable-2.0'
Conflicts:
	module/language/tree-il/analyze.scm
2012-02-23 14:10:22 +01:00
Andy Wingo
a2e946f1ef rewrite open-process in C, for robustness
* libguile/posix.c (scm_open_process): Rewrite in C, so as to avoid
  allocations and other calls that are not async-signal-safe.
  (scm_init_popen, scm_init_posix): Register popen extension.

* module/ice-9/popen.scm: Load the popen extension, to get open-process.
2012-02-23 13:56:54 +01:00
Andy Wingo
917b0e72f7 tune default hash table sizes
* libguile/modules.c: In my current image, there are 1790 bindings in
  the root module, which tips over to the next hash vector size, so
  declare that to prevent rehashing.
* libguile/srcprop.c (scm_init_srcprop): Don't preallocate a big
  source_whash table, as we might not need it (if everything is
  compiled, for example).
* module/ice-9/boot-9.scm (make-module): Don't preall-cate big hash
  tables for imported bindings.  Instead trust that resizing works
  correctly.
2012-02-19 20:46:14 +01:00
Andy Wingo
bc1bc9e320 ice-9/poll optimization
* module/ice-9/poll.scm (poll-set-add!): Use fileno instead of
  port->fdes, to avoid manipulating revealed counts.
2012-02-19 13:30:30 +01:00
Andy Wingo
58565208bd Merge remote-tracking branch 'local-2.0/stable-2.0'
Conflicts:
	libguile/read.c
	libguile/srcprop.c
	module/ice-9/psyntax-pp.scm
2012-02-17 10:21:50 +01:00
Andy Wingo
2988685d84 Merge remote-tracking branch 'origin/stable-2.0'
Conflicts:
	module/ice-9/psyntax-pp.scm
2012-02-15 23:04:53 +01:00
Mark H Weaver
32fbc38fbb psyntax: access source properties for all supported objects
* module/ice-9/psyntax.scm (decorate-source): Set source properties on
  any object that satisfies 'supports-source-properties?'.  Previously
  we used 'pair?' as the predicate.

  (source-annotation): Apply 'source-properties' to _any_ kind of source
  expression, where previously only pairs were queried.  If the argument
  is a syntax-object, apply the source-properties to the syntax-object's
  expression.

  In the peculiar case of a syntax-object whose expression is also a
  syntax-object: previously we would iterate, but with this commit we
  now call 'syntax-object-expression' only once.

* module/ice-9/psyntax-pp.scm: Regenerate.
2012-02-15 11:24:43 -05:00
Mark H Weaver
bbd1281ae5 syntax-violation: prefer 'subform' for source info, with 'form' as fallback
* module/ice-9/psyntax.scm (syntax-violation): Look for source
  properties of 'subform' first.  If 'subform' has none, 'form' is used.
  Previously, the source information of 'form' was used unless 'form'
  _itself_ was '#f', in which case 'subform' was used.

* module/ice-9/psyntax-pp.scm: Regenerate.
2012-02-15 00:41:24 -05:00
Mark H Weaver
30398e94f9 Fix psyntax bugs that would cause bad source annotations
* module/ice-9/psyntax.scm (rebuild-macro-output): Fix two bugs that
  would cause bogus source properties to be added to vectors and
  macro-introduced syntax objects.  These bugs were masked by the
  limitation that only pairs can be decorated with source properties.
  Due to a typo, each vector in the macro output was decorated using the
  vector itself as its source.  Due to accidental variable capture, each
  syntax-object introduced by the macro had its expression decorated
  with its own wrap-subst.

* module/ice-9/psyntax-pp.scm: Regenerate.
2012-02-15 00:17:18 -05:00
Andy Wingo
a41bed83ab Merge remote-tracking branch 'origin/stable-2.0'
Conflicts:
	libguile/read.c
	test-suite/tests/tree-il.test
2012-02-11 18:14:48 +01:00
Mark H Weaver
e7cf0457d7 Support => within case, and improve error messages for cond and case
* module/ice-9/boot-9.scm (cond, case): Reimplement using syntax-case,
  with improved error messages and support for '=>' within 'case' as
  mandated by the R7RS.  Add warnings for duplicate case datums and
  case datums that cannot be meaningfully compared using 'eqv?'.

* module/system/base/message.scm (%warning-types): Add 'bad-case-datum'
  and 'duplicate-case-datum' warning types.

* test-suite/tests/syntax.test (cond, case): Update tests to reflect
  improved error reporting.  Add tests for '=>' within 'case'.

* test-suite/tests/tree-il.test (partial evaluation): Update tests to
  reflect changes in how 'case' is expanded.

* doc/ref/api-control.texi (Conditionals): Document '=>' within 'case'.
2012-02-08 16:27:48 -05:00
Andy Wingo
0858753e82 Merge remote-tracking branch 'origin/stable-2.0'
Conflicts:
	GUILE-VERSION
	libguile/gc-malloc.c
	libguile/ports.c
2012-02-08 11:48:08 +01:00
Ludovic Courtès
e7f7691f5f i18n: Provide default values for when Gnulib has no replacement.
This reverts parts of a0919aefee ("i18n:
Use Gnulib's `nl_langinfo' module.").

* module/ice-9/i18n.scm (define-simple-langinfo-mapping): Re-add
  `default' parameter, and update users accordingly.
2012-02-03 20:11:00 +01:00
Ludovic Courtès
afd08fdf87 format: Add specifier ~h for localized number output.
* doc/ref/misc-modules.texi (Formatted Output): Document ~h.  Recommend
  use of ~h instead of ~:d.

* module/ice-9/format.scm (format): Add support for ~h.

* test-suite/tests/format.test ("~h localized number"): New test prefix.

* test-suite/tests/i18n.test (%american-english-locale-name,
  %american-english-locale): New variables.
  (under-american-english-locale-or-unresolved): New procedure.
  ("format ~h"): New test prefix.
2012-02-03 16:35:06 +01:00
Ludovic Courtès
a0919aefee i18n: Use Gnulib's `nl_langinfo' module.
* configure.ac: Remove checks for <langinfo.h> and <nl_types.h>, and
  `nl_langinfo'.

* libguile/i18n.c: Remove #ifdefs for HAVE_LANGINFO_H, HAVE_NL_TYPES_H,
  HAVE_NL_ITEM, and HAVE_LANGINFO_CODESET.
  (SCM_VALIDATE_OPTIONAL_LOCALE_COPY): Use `SCM_UNBNDP'.

* m4/gnulib-cache.m4 (gl_MODULES): Add `nl_langinfo'.

* module/ice-9/i18n.scm (define-vector-langinfo-mapping): Remove
  `defaults' parameter; assume (provided? 'nl-langinfo) is always true.
  Update users accordingly.
  (define-simple-langinfo-mapping): Likewise.
  (define-monetary-langinfo-mapping): Likewise, but do not assume
  LOCAL-ITEM and INTL-ITEM are always defined.
2012-02-03 14:14:14 +01:00