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

12192 commits

Author SHA1 Message Date
Andy Wingo
3c98a49cbd in the load path, look in library-dir before site-dir
* libguile/load.c (scm_init_load_path): Search first in Guile's
  version-specific path (the library path), *then* in the site dir. This
  should allow us to import some of Guile-lib's modules into Guile,
  perhaps customizing them with Guile-version-specific foo, without
  accidentally falling back to system-installed guile-lib in the
  sitedir. Also should reduce the number of stats by half, in the common
  case.
2009-12-20 15:34:19 +01:00
Andy Wingo
fd5985271f psyntax's labels and marks now unique over a read/write boundary
* module/ice-9/psyntax.scm (gen-label, new-mark): Labels and marks need
  to be unique across read/write boundaries -- it's not sufficient for
  them to simply be unique within a process by virtue of (string #\i)
  constructing a new object. This used to mostly work before, because
  the collapsing of duplicate constants didn't catch many syntax-object
  cases -- but for some reason the attached test case brings out the
  problem. So switch to use gensyms. Potentially more costly, but it's
  what upstream psyntax does now.

  This bug took me fully two days to figure out.

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

* test-suite/tests/syncase.test ("serializable labels and marks"): Add
  test case.
2009-12-20 15:30:32 +01:00
Neil Jerram
ef73663576 Document need for pkg-config to build Guile
* README: Say that ./configure needs pkg-config; why; and how to work
  around it.
2009-12-19 22:37:24 +00:00
Neil Jerram
3733df073f Update and simplify statement about RnRS support
* doc/ref/scheme-intro.texi (Guile Scheme): Mention R6RS as well as
  R5RS.  Simplify text.
2009-12-18 01:21:55 +00:00
Brian Gough
2c18ac5f8e make the use of the 5-argument @xref command consistent
A few of the @xref references to external manuals in the documentation
are using an old 4-argument form that produces an undefined reference
in the printed manual.  The following patch makes them consistent with
the 5-argument @xrefs used elsewhere in the manual.

--
Brian Gough

Network Theory Ltd,
Publishing Free Software Manuals --- http://www.network-theory.co.uk/

>From 6ca0417830dc5a98699a15808591dc1f2a90dfac Mon Sep 17 00:00:00 2001
From: Brian Gough <bjg@gnu.org>
Date: Mon, 14 Dec 2009 21:34:59 +0000
Subject: [PATCH] make the use of the 5-argument @xref command consistent
 when referring to other manuals.
2009-12-18 01:21:55 +00:00
Ken Raeburn
6751d6db6b Allow more characters in coding system names in Emacs-style declarations.
* libguile/read.c (scm_i_scan_for_encoding): Allow more punctuation
  symbols in coding system names.
2009-12-17 20:02:35 -05:00
Brian Gough
72b3aa56af more typo fixes
More spelling corrections and fixes for doubled words (e.g. "the the")

--
Brian Gough

Network Theory Ltd,
Publishing Free Software Manuals --- http://www.network-theory.co.uk/

>From 7be02beedc739c32cce2c8ec8f4ac814c994a13f Mon Sep 17 00:00:00 2001
From: Brian Gough <bjg@gnu.org>
Date: Mon, 14 Dec 2009 22:06:22 +0000
Subject: [PATCH] fix various documentation typos (spelling & doubled words)
2009-12-18 00:53:34 +00:00
Brian Gough
2e4ef7eda1 typo fix
Correction for garbled sentence.

--
Brian Gough

Network Theory Ltd,
Publishing Free Software Manuals --- http://www.network-theory.co.uk/

>From f819b597a46ad4ed23597e5a81d1acab46f15147 Mon Sep 17 00:00:00 2001
From: Brian Gough <bjg@gnu.org>
Date: Mon, 14 Dec 2009 20:04:34 +0000
Subject: [PATCH] typo fix
2009-12-18 00:53:07 +00:00
Brian Gough
93b645239b added brief introduction about SLIB
This patch adds a short introduction to the SLIB section of the manual
with a link to the SLIB homepage.

--
Brian Gough

Network Theory Ltd,
Publishing Free Software Manuals --- http://www.network-theory.co.uk/

>From 60548b6e039bf57694b7841996cfda011cb8a4bf Mon Sep 17 00:00:00 2001
From: Brian Gough <bjg@gnu.org>
Date: Mon, 14 Dec 2009 20:49:27 +0000
Subject: [PATCH] added brief introduction about SLIB
2009-12-18 00:51:20 +00:00
Brian Gough
8d7ee181be Hash Table examples - hashq takes different number of arguments
In the "Hash Tables Example" in the manual, hashq needs 2 arguments
instead of 1 (patch below).  I've updated the hash table output as
well to match the current version.

--
Brian Gough

Network Theory Ltd,
Publishing Free Software Manuals --- http://www.network-theory.co.uk/

>From fdb6101d2e064620746ebfc9f9cd28bbdd2470e8 Mon Sep 17 00:00:00 2001
From: Brian Gough <bjg@gnu.org>
Date: Mon, 14 Dec 2009 19:59:32 +0000
Subject: [PATCH] update docs for Hash Table Examples
 hashq now takes two arguments
 order of elements in hash table is different now
2009-12-18 00:49:20 +00:00
Brian Gough
e163dd343b replace ascii figures with scalable ps/pdf versions.
use ascii figures in HTML output, to work around deficiency in makeinfo
where images are not copied to target directory.
2009-12-17 23:17:59 +00:00
Brian Gough
e03d96363f use explicit ./scriptname to help novice users 2009-12-17 23:17:50 +00:00
Brian Gough
d746e18ef5 use correct url to ftp.gnu.org 2009-12-17 23:17:41 +00:00
Ludovic Courtès
4cd894a5aa Bump version number for 1.9.6.
* GUILE-VERSION (GUILE_MICRO_VERSION): Increment.
2009-12-15 23:45:37 +01:00
Ludovic Courtès
bc4adf1739 Remove unneeded #include <assert.h>.
* libguile/backtrace.c, libguile/eval.c, libguile/gc.c,
  libguile/goops.c, libguile/memoize.c, libguile/threads.c,
  libguile/uniform.c, libguile/vm.c,
  test-suite/standalone/test-conversion.c,
  test-suite/standalone/test-list.c: Don't include <assert.h>.
2009-12-15 20:20:38 +01:00
Ludovic Courtès
1cd4fffcde Use Gnulib's `sys_stat' module; update Gnulib.
* .x-sc_prohibit_S_IS_definition: New file.

* m4/gnulib-cache.m4: Add `sys_stat'.

* libguile/filesys.c: Remove `S_IS*' macro definitions for Ultrix and
  MinGW.
2009-12-15 20:14:19 +01:00
Ludovic Courtès
20ccae8dbb Remove obsolete test-suite makefile snippets.
* test-suite/Makefile.am (SCM_TESTS_DIRS): Remove.
  (dist-hook): Remove target.
2009-12-15 19:23:08 +01:00
Ludovic Courtès
d7297d3923 Disable thread-local storage on Solaris 8.
* acinclude.m4 (GUILE_THREAD_LOCAL_STORAGE): Special-case `*solaris2.8'.
2009-12-15 19:22:19 +01:00
Ludovic Courtès
eb80072df0 Change the Elisp compiler from GPLv2+ to LGPLv3+.
* module/language/elisp/bindings.scm, module/language/elisp/lexer.scm,
  module/language/elisp/parser.scm, module/language/elisp/runtime.scm,
  module/language/elisp/runtime/function-slot.scm,
  module/language/elisp/runtime/macro-slot.scm,
  module/language/elisp/runtime/value-slot.scm: Switch from GPLv2+ to
  LGPLv3+; fix copyright year.
2009-12-15 19:10:48 +01:00
Ludovic Courtès
66e18d1c7c Use portable shell in `meta/uninstalled-env'.
* meta/uninstalled-env.in: Don't use the `-q' and `-E' options, which are
  specific to GNU grep.  Don't set-and-export environment variables at
  once since this is a GNU Bash extension.
2009-12-15 01:11:01 +01:00
Ludovic Courtès
5c14636357 Use the right `grep' command.
* libguile/Makefile.am (.c.i): Use $(GREP), not `grep'.
  (check_signals, check_errnos): Use $(EGREP), not `egrep'.
2009-12-15 01:01:17 +01:00
Ludovic Courtès
4ea57d5b48 Remove GNU Make-specific function call.
* libguile/Makefile.am (c-tokenize.$(OBJEXT)): Remove use of GNU Make's
  `filter-out' function.
2009-12-15 01:01:17 +01:00
Ludovic Courtès
f65e0168d5 Remove extraneous semicolon after `SCM_ARRAY_IMPLEMENTATION' & co.
* libguile/bitvectors.c, libguile/srfi-4.c, libguile/strings.c,
  libguile/vectors.c: Remove extraneous semicolon after
  `SCM_ARRAY_IMPLEMENTATION' and `SCM_VECTOR_IMPLEMENTATION'
  invocations.
2009-12-15 01:01:17 +01:00
Ludovic Courtès
1bf291e497 Remove extraneous functions from `AC_REPLACE_FUNCS'.
* configure.ac: Remove `inet_aton' and `putenv' from `AC_REPLACE_FUNCS'.
2009-12-15 01:01:17 +01:00
Ludovic Courtès
62316c7f81 Avoid `SCM_UNPACK ()' in constant expressions.
They made Sun C 5.8 emit a warning such as:

  line 71: warning: dead part of constant expression is nonconstant

* libguile/print.c (scm_print_opts): Don't use `SCM_UNPACK ()' here.

* libguile/read.c (scm_read_opts): Likewise.
2009-12-15 01:01:17 +01:00
Ludovic Courtès
ab33782cb3 Remove return' from void' function.
* libguile/print.c (scm_print_symbol_name): Remove `return' statement.
2009-12-15 01:01:17 +01:00
Ludovic Courtès
3dbbe28dfd Don't use GCC zero-length arrays.
* libguile/frames.c, libguile/objcodes.c, libguile/programs.c,
  libguile/vm-engine.c, libguile/vm-i-system.c, libguile/vm.c: Use
  `SCM_C_OBJCODE_BASE ()' instead of accessing the `base' field of
  `struct scm_objcode'.

* libguile/objcodes.h (struct scm_objcode)[base]: Remove.
2009-12-15 01:01:16 +01:00
Ludovic Courtès
cd169c5a22 Remove uses of the non-standard `__FUNCTION__'.
* libguile/gc.c (scm_gc_sweep): Replace `__FUNCTION__' by `FUNC_NAME'.

* libguile/read.c (scm_read_r6rs_block_comment): Likewise.
2009-12-15 01:01:16 +01:00
Andy Wingo
93dbc31b9a expose frame-previous, once again
* libguile/frames.h:
* libguile/frames.c (scm_frame_previous): Rename from scm_c_frame_prev,
  and expose to Scheme. Skip boot frames.

* libguile/stacks.c (stack_depth, narrow_stack, scm_make_stack)
  (scm_stack_ref): Adjust for scm_frame_previous skipping boot frames.
2009-12-15 00:22:02 +01:00
Ludovic Courtès
5b98517a65 Fix test environment issue with ltdl from Libtool 2.2.6b.
Earlier versions of ltdl would look for extensions under $PWD; this
behavior changed in 2.2.6b.

* test-suite/standalone/Makefile.am (TESTS_ENVIRONMENT): Define
  $builddir.

* test-suite/standalone/test-asmobs: Specify the full path to
  `libtest-asmobs', using $builddir.

* test-suite/standalone/test-extensions: Likewise.
2009-12-14 10:59:25 +01:00
Andy Wingo
61521ea034 more NEWS updates
* NEWS: Update some more.
2009-12-13 20:18:50 +01:00
Andy Wingo
9331f91cc4 primitive-eval passes first N args on stack directly, not via apply
* libguile/memoize.c (MAKMEMO_CALL): Memoize in the number of arguments
  at the call site.
  (memoize, scm_m_cond, memoize_named_let, unmemoize):
* libguile/eval.c (eval): Adapt to changes in call memoization.

* module/ice-9/eval.scm (primitive-eval): For calls, pass the first N
  arguments directly on the stack, and only the rest as a consed
  argument list to apply. Currently N is 4.
2009-12-13 17:19:59 +01:00
Andy Wingo
4abb824cdb interpreted closures cons less.
* module/ice-9/eval.scm (primitive-eval): When making a closure with N
  formals, actuall return a closure with N formals, if N is less than
  *max-static-argument-count*, which currently is 8. If N is greater
  than 8, do the arg-parsing loop as we did before. Requires some
  macrology, but should reduce unnecessary consing for interpreted
  closures.

* test-suite/tests/goops.test:
* test-suite/tests/hooks.test: Now that checks like (thunk? foo) are
  going to work as a for interpreted code, remove some (throw
  'unresolved).
2009-12-13 16:18:39 +01:00
Andy Wingo
271a32dbc2 commit draft of NEWS 2009-12-12 00:10:36 +01:00
Andy Wingo
492e7efe6d lame tweak to the inliner
* module/language/tree-il/inline.scm: Tweak to avoid a (if #t #t #f).
  Yes, it's lame.
2009-12-12 00:10:35 +01:00
Andy Wingo
5bb408ccaf prepare NEWS for 1.9.6
* NEWS: Prepare NEWS for 1.9.6.
2009-12-12 00:10:35 +01:00
Ludovic Courtès
9035e9d6db Tweak the "unused modules are removed" test.
* test-suite/tests/gc.test ("gc")["unused modules are removed"]: Add
  loop to clean up stale references from the stack.
2009-12-11 23:27:47 +01:00
Ludovic Courtès
2cf7ff2e79 SRFI-1: Use the built-in optional argument support.
* module/srfi/srfi-1.scm (iota, unfold, unfold-right, alist-delete,
  alist-delete!): Use `define*' and optional arguments instead of rest
  arguments.
2009-12-11 15:20:12 +01:00
Ludovic Courtès
dd902692fd Fix expansion of `(+ 1 x)'.
* module/language/tree-il/primitives.scm (+): Fix typo.
2009-12-11 14:56:49 +01:00
Ludovic Courtès
056905c3cf Typo.
* test-suite/Makefile.am (SCM_TESTS): Fix typos:
  `.text' -> `.test'.
2009-12-11 14:32:34 +01:00
Ludovic Courtès
fe258c43a1 SRFI-9: Make accessors inlinable.
* module/srfi/srfi-9.scm (define-inlinable): New macro.
  (define-record-type): Use it.
2009-12-11 13:03:46 +01:00
Ludovic Courtès
09a8dc97db SRFI-9: Reimplement in terms of structs, using `syntax-case'.
* module/srfi/srfi-9.scm (define-record-type): Rewrite to use raw
  structs instead of records.  Use `syntax-case' instead of
  `define-macro'.
2009-12-11 13:03:46 +01:00
Ludovic Courtès
f680bdd762 Add struct & vector benchmarks.
* benchmark-suite/benchmarks/structs.bm,
  benchmark-suite/benchmarks/vectors.bm: New files.

* benchmark-suite/Makefile.am (SCM_BENCHMARKS): Add.

* benchmark-suite/benchmarks/bytevectors.bm: Fix copyright.
2009-12-11 13:03:46 +01:00
Ludovic Courtès
bd91ecce14 Add opcodes for struct?', struct-vtable', and `make-struct'.
* libguile/vm-engine.c (VM_NAME)[vm_error_not_a_struct]: New label.

* libguile/vm-i-scheme.c (VM_VALIDATE_STRUCT): New macro.
  (struct_p, struct_vtable, make_struct): New instructions.

* module/language/tree-il/compile-glil.scm (*primcall-ops*): Add
  `struct?', `struct-vtable', and `make-struct'.

* module/language/tree-il/primitives.scm (*interesting-primitive-names*,
  *effect-free-primitives*): Likewise.
2009-12-11 13:03:45 +01:00
Andy Wingo
6c20a0b34b vm no longer measures bogoclock or times, relies on os for that
* libguile/vm.h (struct scm_vm): Remove "time" and "clock" members. The
  time was bogusly measured, and the "clock" measured instructions
  retired, which is not a very useful measurement, and it was causing
  lots of memory accesses. Not that I have done a proper profile,
  though...
  (scm_vm_stats): Remove this procedure, which provided access to "time"
  and "clock".

* libguile/vm.c:
* libguile/vm-engine.h:
* libguile/vm-engine.c:
* libguile/vm-i-system.c: Adapt to scm_vm changes and scm_vm_stats
  removal.

* module/system/repl/command.scm:
* module/system/vm/vm.scm: Adapt to vm-stats removal by removing
  vm-stats from <repl>.
2009-12-11 12:39:02 +01:00
Andy Wingo
349d5c4428 inline calls to (memv foo CONSTANT-LIST)
* module/language/tree-il/primitives.scm
  (*interesting-primitive-names*): Recognize memv and memq as well.

* module/language/tree-il/inline.scm (inline!): Inline calls to memq and
  memv where the list is a constant.
2009-12-11 12:20:55 +01:00
Andy Wingo
b6d93b1182 rename <conditional> then and else to consequent and alternate
* module/language/tree-il.scm (<tree-il>): Rename the "then" and "else"
  clauses of <conditional> to "consequent" and "alternate". More
  verbose, yes, but that way we avoid unexpected behavior with "else".
  (parse-tree-il, unparse-tree-il, tree-il->scheme, tree-il-fold):
  (make-tree-il-folder, post-order!, pre-order!)
* module/language/tree-il/analyze.scm (analyze-lexicals):
* module/language/tree-il/compile-glil.scm (flatten):
* module/language/tree-il/fix-letrec.scm (simple-expression?): Update
  callers.
2009-12-11 12:00:27 +01:00
Andy Wingo
3a88cb3b17 rename lambda-case-else to lambda-case-alternate
* module/language/tree-il.scm (<tree-il>): Rename the "else" field of
  <lambda-case> to "alternate". Conflicts less with the "else" keyword
  as used by case, cond, record-case, pmatch, etc.
  (parse-tree-il, unparse-tree-il, tree-il->scheme, tree-il-fold)
  (make-tree-il-folder, post-order!, pre-order!): Adapt traversal
  operators for <lambda-case> change.

* module/language/tree-il/analyze.scm (analyze-lexicals)
  (validate-arity):
* module/language/tree-il/compile-glil.scm (flatten):
* module/language/tree-il/inline.scm (inline!): Adapt for <lambda-case>
  change.
2009-12-11 11:49:14 +01:00
Andy Wingo
5b09b37f81 vm: handle interrupts on backwards jumps
* libguile/vm-i-system.c (BR, br): Handle interrupts on backwards jumps,
  so we can Ctrl-C an endless loop.
2009-12-11 11:17:03 +01:00
Andy Wingo
e8c3777214 less overhead for handling interrupts in the vm
* libguile/__scm.h (SCM_ASYNC_TICK): Add some branch prediction.
  (SCM_ASYNC_TICK_WITH_CODE): New helper for when BUILDING_LIBGUILE,
  runs code only if we're going to call async_click().
* libguile/vm-engine.h (VM_HANDLE_INTERRUPTS): New helper, uses
  SCM_ASYNC_TICK_WITH_CODE to only save regs if we'll handle an
  interrupt.
* libguile/vm-i-system.c (call, goto/args, return): use
  VM_HANDLE_INTERRUPTS.
2009-12-11 11:15:12 +01:00