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

16114 commits

Author SHA1 Message Date
Andy Wingo
d59dd06eb9 add ice-9 eval-string
* module/Makefile.am:
* module/ice-9/eval-string.scm: New module, for use in implementing the
  scm_c_eval_string_from_file_line suggestion.

* test-suite/Makefile.am:
* test-suite/tests/eval-string.test: New tests.
2011-03-05 23:16:11 +01:00
Andy Wingo
b6b84131cd remove obsolete comments
* libguile/eval.c (scm_nconc2last):
* libguile/strports.c (scm_c_read_string): Remove some obsolete
  comments.
2011-03-05 21:48:47 +01:00
Mark Harig
900a6f87ba Updated Guile manual page.
* doc/guile.1: Added the current month and year, Guile version
  descriptive text, and the text GNU to the title.

  Updated the nroff formatting commands for the SYNOPSIS and OPTIONS
  sections to what 'man' prescribes.  See 'man(1)', 'man(7)', and
  'man-pages(7)'.

  Corrected grammar, spelling, and capitalization (for example,
  'scheme' to 'Scheme').

  Vertical white-space was non-standard (two lines between some
  sections, one space between others).  Changed this to the standard
  one empty line before each section heading, and added dots (a single
  period on a line) before every section heading (.SH) so that
  maintainers will find the readability unchanged.

  Added white space to follow the 'groff' recommendation of starting
  every sentence on its own line, and breaking sentences at
  punctuation.

  Corrected an error in description of the info command.

  Added the missing option '--no-debug', and the short switches '-h'
  and '-v'.

  Changed the description of the environment variable
  GUILE_LOAD_COMPILED_PATH so that it references the Guile variable
  `%load-compiled-path' instead of the variable `%load-path'.

  Updated the copyright to include 2011.
2011-03-05 20:27:08 +01:00
BT Templeton
fd029c35de guile-snarf: allow multiple init actions on one line
* libguile/guile-snarf.in (modern_snarf): Allow programs to specify
  multiple initialization actions on a single line. This makes it
  possible for C programs to define multiple subrs with a single macro
  invocation.

* test-suite/standalone/test-guile-snarf: Enable more tests.
2011-03-04 11:34:24 +01:00
BT Templeton
2dea6a4d33 add guile-snarf tests
* test-suite/standalone/test-guile-snarf: New file.
* test-suite/standalone/Makefile.am: Add `test-guile-snarf'.
2011-03-04 11:32:18 +01:00
Andy Wingo
090f14b890 repl: terminal-width by default
* module/system/repl/command.scm (terminal-width): New parameter that
  will use the true terminal width if unset.
  (backtrace, locals): Default to (terminal-width).
  (width): Simplify.
2011-03-04 11:16:15 +01:00
Michael Gran
47b86dbf4d Add ,width meta-command to set screen width in debug output
This meta-command allows one to set the default number of columns
that output from ,backtrace and ,locals shall occupy.

* doc/ref/scheme-using.texi (Debug Commands): document ,width
* module/system/repl/command.scm (*width*): new var
  (backtrace, locals): use *width* in optarg
  (width): new meta-command
2011-03-04 11:01:48 +01:00
Andy Wingo
c7d6f8b279 fix ,stat
* module/system/repl/command.scm (statistics): Fix for BDW-GC.
  Unfortunately we still don't have mallocation or time taken.
2011-03-04 10:33:51 +01:00
Andy Wingo
65fa60ca7a repl.scm understands comments
* module/system/repl/repl.scm (read-comment, read-scheme-line-comment)
  (read-scheme-datum-comment): New helpers.
  (meta-reader): Take a language instead of a reader.  If we have a
  nonwhitespace char, first check to see that it's a comment, and if so,
  read it off and loop.
  (prompting-meta-read): Call meta-reader with the lang.
2011-03-03 23:51:20 +01:00
Andy Wingo
859e58ae8a repl.scm refactor
* module/system/repl/repl.scm (flush-leading-whitespace): Rename from
  next-char.
  (meta-reader): Use flush-leading-whitespace.
  (run-repl): Use flush-to-newline after the evaluation, which seems to
  be the same as what we did before.
2011-03-03 23:19:35 +01:00
Andy Wingo
d900843c72 fix encoding scanning for non-seekable ports
* libguile/read.c (scm_i_scan_for_encoding): If possible, just use the
  read buffer for the encoding scan, and avoid seeking.  Fixes
  `(open-input-file "/dev/urandom")', because /dev/urandom can't be
  seeked backwards.
2011-03-03 12:57:46 +01:00
Andy Wingo
8d795c83d4 more module-use-interfaces! tweaks
* module/ice-9/boot-9.scm (module-use-interfaces!): Fix up to prevent
  duplication in the use list of multiple incoming interfaces.

* test-suite/tests/modules.test ("module-use"): Add tests.
2011-03-03 11:29:27 +01:00
Andreas Rottmann
51c0fd8086 Use module identity to filter for existing modules
This fixes a problem with R6RS's `import' in particuliar: when importing
a subset of a library/module, the interface created for that purpose
inherits the name of the module it is derived from.  The low-level
primitives that are used for importing would then disregard earlier
imports from the same module.

An example for this bug can be seen with the following library
definition:

(library (test-guile2)
  (export foo)
  (import (only (rnrs base) define)
          (only (rnrs base) error))

  (define (foo . args)
    #t))

In the above, the import of `define' would be disregarded when `error'
is imported, thus leading to a syntax error, since `(foo . args)' is
treated as an application, since the binding of `define' would be not
present.

* module/ice-9/boot-9.scm (module-use!): Remove the filtering of the
  existing imports of the module by name; a check for identity is
  already done beforehand.
  (module-use-interfaces!): Filter the existing imports by identity
  instead of filtering them by their names.
2011-03-03 11:09:54 +01:00
Ludovic Courtès
9c3fa20a56 Remove extra comma after `SCM_ARRAY_ELEMENT_TYPE_LAST'.
* libguile/array-handle.h (scm_t_array_element_type): Remove extra comma
  after last element.  Reported by David Fang <fang@csl.cornell.edu>.
  Indent.
2011-03-03 00:13:30 +01:00
Ludovic Courtès
fba502dbcc Improve the documentation for `dynamic-link'.
* doc/ref/api-foreign.texi (Foreign Libraries): Make it clear that the
  LIBRARY argument of `dynamic-link' should not contain an extension.
  (Foreign Functions): Add cross-reference from `load-extension' to
  `dynamic-link'.  Typeset file names and module names correctly.
2011-03-02 22:12:56 +01:00
Mark H Weaver
0176bbb717 Portability fixes for popen.test (for when /bin/sh is not bash)
* test-suite/tests/popen.test (open-input-pipe no-duplicate): Pass
  "read REPLY" command instead of "read" to the subshell, for improved
  portability.  In particular, it is needed when /bin/sh is dash.

  (open-output-pipe no-duplicate): Pass "exec guile [...]" instead of
  "guile [...]" to the subshell, to ensure that the subshell will not
  run guile as a subprocess while holding a duplicate of STDIN, which
  would cause this test to fail.  This is needed when /bin/sh is dash.
2011-03-02 14:15:30 -05:00
Mark H Weaver
bd79ebf318 Portability fixes for popen.test (for when /bin/sh is not bash)
* test-suite/tests/popen.test (open-input-pipe no-duplicate): Pass
  "read REPLY" command instead of "read" to the subshell, for improved
  portability.  In particular, it is needed when /bin/sh is dash.

  (open-output-pipe no-duplicate): Pass "exec guile [...]" instead of
  "guile [...]" to the subshell, to ensure that the subshell will not
  run guile as a subprocess while holding a duplicate of STDIN, which
  would cause this test to fail.  This is needed when /bin/sh is dash.
2011-03-02 14:12:53 -05:00
Ludovic Courtès
58b1db5f24 Have `read' update line/column numbers when reading SCSH block comments.
* libguile/read.c (scm_read_scsh_block_comment): Use `scm_getc' instead
  of `scm_get_byte_or_eof'.

* test-suite/tests/reader.test ("read-options")["position of SCSH block
  comment"]: New test.
2011-02-28 23:33:47 +01:00
Andy Wingo
ac012a27a2 update port-filename docs
* doc/ref/api-io.texi (File Ports):
* libguile/ports.c (scm_port_filename): Fix docs to match
  implementation.
2011-02-28 20:54:03 +01:00
Ludovic Courtès
6a94e6e1ae Link stand-alone tests against libgc.
Reported by Andreas Rottmann <a.rottmann@gmx.at>.

* test-suite/standalone/Makefile.am (LIBGUILE_LDADD): New variable.
  (test_num2integral_LDADD, test_round_LDADD, libtest_asmobs_la_LIBADD,
  libtest_ffi_la_LIBADD, test_list_LDADD, test_unwind_LDADD,
  test_conversion_LDADD, test_loose_ends_LDADD, test_scm_c_read_LDADD,
  test_scm_take_locale_symbol_LDADD, test_scm_take_u8vector_LDADD,
  libtest_extensions_la_LIBADD, test_with_guile_module_LDADD,
  test_scm_with_guile_LDADD): Use it.
2011-02-28 00:40:45 +01:00
Ludovic Courtès
62cdb4e478 Strip any CPPFLAGS other than -I' from guile-2.0.pc'.
* configure.ac: Strip anything beyond `-I' from $GUILE_CFLAGS so that
  `guile-2.0.pc' does not export them to the user.  Reported and fixed
  by Bruno Haible <bruno@clisp.org>.
2011-02-28 00:21:48 +01:00
Andy Wingo
dcb7c7ddf5 flush all input on a read error
* module/system/repl/repl.scm (flush-all-input): New helper.
  (prompting-meta-read): Flush all input on a read error, as we could be
  within some expression or a string or something.
2011-02-27 23:26:08 +01:00
Andy Wingo
4e33a13246 scm-error-printer resilience
* module/ice-9/boot-9.scm (scm-error-printer): Allow #f for rest args,
  interpreting it as '().  Fixes regexp throws, which are of the form:

    (regular-expression-syntax "make-regexp" "Invalid preceding regular expression" #f ("?.*"))
2011-02-27 23:15:13 +01:00
Andy Wingo
450aee6790 update R6RS incompatibilities
* doc/ref/r6rs.texi (R6RS Incompatibilities): Update.
2011-02-27 13:07:04 +01:00
Andy Wingo
4335366389 regenerate psyntax-pp
* module/ice-9/psyntax-pp.scm: Regenerate.
2011-02-27 12:59:44 +01:00
Andy Wingo
fa3df855e8 add syncase test
* test-suite/tests/syncase.test ("top-level expansions"): New test.
2011-02-27 12:59:04 +01:00
Andy Wingo
4da326f25d chi-top-sequence defines macros before expanding other exps
* module/ice-9/psyntax.scm (chi-top-sequence): Manually inline
  eval-if-c&e into its two call sites; I found it hard to understand
  otherwise.  If the mode is just 'e, defer expansion of definitions and
  expressions until the end, so that they can be expanded in a context
  of all syntax expanders defined in the sequence.
2011-02-27 12:59:03 +01:00
Andy Wingo
4c2e13e548 psyntax: fold chi-top-sequence into chi-top
* module/ice-9/psyntax.scm (chi-top-sequence): Pull chi-top into the
  body of this toplevel begin expander.  This will let us do r6rs
  toplevel expansion correctly.
  (chi-top): Remove.
  (macroexpand): Dispatch to chi-top-sequence directly.
2011-02-27 12:59:03 +01:00
Ludovic Courtès
249f2788c6 Fix `gc-profile.scm'.
* gc-benchmarks/gc-profile.scm (memory-mappings)[mapping-line-rx]: Fix
  and give an example.
  (total-heap-size): Fix docstring.
2011-02-25 14:54:36 +01:00
Andy Wingo
6800f86d63 make-weak-key-hash-table vacuuming
* libguile/hashtab.c (scm_make_weak_key_hash_table): Whoops, fix the
  case I actually cared about.
2011-02-25 10:48:35 +01:00
Ludovic Courtès
080a9d4f56 Revert ""latin1" -> "Latin-1"."
This reverts commit c2c550ca9d.

The name "latin1" is standardized by IANA, unlike the other one.
Reported by Bruno Haible.
2011-02-24 23:17:23 +01:00
Ludovic Courtès
914c4300b2 Make `locale-digit-grouping' more robust.
* libguile/i18n.c (scm_nl_langinfo)[GROUPING]: Consider negative numbers
  like `CHAR_MAX'.  Reported by David Fang <fang@csl.cornell.edu>.
  Fix suggested by Bruno Haible <bruno@clisp.org>.
2011-02-24 23:17:06 +01:00
Ludovic Courtès
cfad56a444 Fix README.
* README: Remove mention of an alpha release.  Reported by
  Mark H. Weaver.
2011-02-24 23:13:54 +01:00
Andy Wingo
62c290e977 weak hash tables vacuum stale entries after a gc
* libguile/hashtab.c (scm_c_register_weak_gc_callback): New private
  helper, arranges for a C function to be called with a SCM as an
  argument, as long as the argument is reachable by GC.
  (scm_make_weak_key_hash_table)
  (scm_make_weak_value_hash_table)
  (scm_make_doubly_weak_hash_table): Register a weak GC callback to
  vacuum_weak_hash_table.
2011-02-24 17:01:38 +01:00
Andy Wingo
ec7f624d65 re-enable the after-gc-hook
* libguile/gc.c (scm_gc): No need to take a mutex here.  Don't run the
  hook, the hook will run itself.
  (scm_c_register_gc_callback): New private helper, registers a callback
  the next time GC happens.
  (system_gc_callback): Guile's internal callback that runs
  scm_after_gc_c_hook, which itself queues a call to the after-gc-hook.
  (scm_storage_prehistory): Queue up a call to system_gc_callback.
2011-02-24 16:30:08 +01:00
Andy Wingo
574b7be0ba pointerless backing buffers for string ports
* libguile/strports.c (scm_mkstrport): String port string buffer
  allocated atomically.
2011-02-24 13:12:58 +01:00
Andy Wingo
b2548e2344 errno saving in display_string
* libguile/print.c (display_string): Fix a case in which perhaps `errno'
  could have been stompled.
2011-02-24 13:10:16 +01:00
Andy Wingo
a964aa62c2 web server more assiduous about closing ports
* module/web/uri.scm:
* module/web/server.scm (call-with-output-string*):
  (call-with-output-bytevector*): Local procs to output to strings or
  bytevectors, *and then close the port*.  We can't make this change in
  call-with-output-string because it would be incompatible.

* module/web/uri.scm (call-with-encoded-output-string, decode-string)
  (uri-decode)
* module/web/server.scm (call-with-encoded-output-string): Use the new
  helpers.
2011-02-24 11:10:49 +01:00
Andy Wingo
4a2ac0623c open-pipe* pumps pipes guardian
* module/ice-9/popen.scm (open-pipe*): Hack around the lack of an
  after-gc hook, and pump the pipes guardian here in the procedure that
  adds to the guardian.
2011-02-23 21:04:26 +01:00
Andy Wingo
40d2a0076a GC dead links in weak hash tables before a possible rehash
* libguile/hashtab.c (vacuum_weak_hash_table): New helper, goes through
  the entirety of a weak hash table, vacuuming dead entries.
  (scm_hash_fn_create_handle_x): If when adding to a weak hash table, we
  would trigger a rehash, vacuum the table first.  The weak_bucket_assoc
  would have only caught dead entries within one bucket.

  Without this patch, the following code leaks:

  (let lp ()
    (call-with-output-string
      (lambda (port)
        (display "foo" port)))
    (lp))
2011-02-23 11:59:38 +01:00
Ludovic Courtès
229b4bd538 Switch to 2.1.0.
* GUILE-VERSION (GUILE_MAJOR_VERSION, GUILE_MINOR_VERSION,
  GUILE_MINOR_VERSION): Switch to 2.1.0.
2011-02-23 11:05:54 +01:00
Mark H Weaver
18966b8d5e Portability fix for new log and log10
* libguile/numbers.c: Define M_LN2 if it's not already defined.
  Fix error in comment.
2011-02-22 21:06:26 -05:00
Mark H Weaver
85bdb6ac9c Portability fix for new log and log10
* libguile/numbers.c: Define M_LN2 if it's not already defined.
  Fix error in comment.
2011-02-22 21:04:08 -05:00
Ludovic Courtès
da0c22b5d3 Fix a bug in `vhash-delete'.
* module/ice-9/vlist.scm (vhash-delete): Honor HASH.
* test-suite/tests/vlist.test ("vhash")["vhash-delete honors HASH"]: New test.
2011-02-22 00:37:26 +01:00
Ludovic Courtès
1e1808c920 Use vhash-delq' in (language tree-il analyze)'.
* module/language/tree-il/analyze.scm (unbound-variable-analysis): Use
  `vhash-delq' instead of `vhash-delete'.
2011-02-22 00:32:42 +01:00
Ludovic Courtès
2a39def1a8 Optimize `vhash-delete'.
* module/ice-9/vlist.scm (vhash-delete): Check whether KEY is in VHASH
  and return VHASH if it's not.
2011-02-22 00:32:42 +01:00
Ludovic Courtès
8bc5b79df7 Add omitted exports from `(ice-9 vlist)'.
* module/ice-9/vlist.scm: Export `vhash-delq' and `vhash-delv'.
2011-02-22 00:32:42 +01:00
Ludovic Courtès
9d798af739 Compile `(rnrs)' after all other RNRS modules, potentially.
* module/Makefile.am (RNRS_SOURCES): Move `rnrs.scm' last.
2011-02-22 00:32:42 +01:00
Ludovic Courtès
630b6588b7 Make `(rnrs base)' independent of other rnrs modules.
* module/rnrs/base.scm (define-proxy): New macro.
  (raise, condition, make-error, make-assertion-violation,
  make-who-condition, make-message-condition, make-irritants-condition):
  Use it.
2011-02-22 00:32:39 +01:00
Andy Wingo
0e8a11c49a update examples in manual to use PKG_CHECK_MODULES
* doc/ref/autoconf.texi (Using Autoconf Macros): Switch example to use
  PKG_CHECK_MODULES.
* doc/ref/libguile-linking.texi (A Sample Guile Main Program): Likewise,
  and change from configure.in to configure.ac, and recommend
  autoreconf.
2011-02-20 22:08:27 +01:00