* 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.
* 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.
Also continue adding a bit more structure to the introductory "what is
Guile" material.
* doc/ref/intro.texi (Introduction): Split `What is Guile?' (which is
a bad heading, since we've already answered that...) into `Guile and
Scheme' and `Combining with C'. Further splits will follow, to
cover the other toplevel bullet points.
(Guile and Scheme): Remove `packaged for use in a wide variety of
environments', as I don't see what this can mean to the reader at
this point. Add text about R6RS and SRFIs.
(Reporting Bugs fits better immediately after the tour of how to use
Guile)
* doc/ref/intro.texi: Move `Manual Conventions' to after `Reporting
Bugs', and rename to `Typographical Conventions'.
* doc/ref/intro.texi (Discouraged and Deprecated): Move from here...
* doc/ref/api-discdepr.texi: ...to new file here.
* doc/ref/guile.texi: Include api-discdepr.texi, and include
`Discouraged and Deprecated' in API chapter menu.
* doc/ref/Makefile.am (guile_TEXINFOS): Add api-discdepr.texi.
(The principle here is that Preface should only contain
meta-information about the manual, such as how to use it and who wrote
it; plus any political points that we want to draw attention to.)
* doc/ref/preface.texi (Preface): Make unnumbered, for consistency
with other GNU manuals (e.g. Emacs, GSL). Merge layout text into
top level. Simplify first sentence. Move section on conventions
away...
* doc/ref/intro.texi (Introduction to Guile): ...to here.
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.
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
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
* 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.
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.
* 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.
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.
* 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.
* 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).