[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Guile 188.8.131.52 available
Guile 184.108.40.206 available
Wed, 12 Sep 2007 16:00:17 +0200
usual assortment of bugfixes plus new stuff. on the meta level,
although i haven't given up hope of regaining cvs write privs to the
GNU Guile repo, the license and copyright notice changes in .108
reflect a realization that such privs maybe aren't so desirable
after all. the GPL is flesh holding coded uneroded bones; let the
stubborn will supply spark to bring motion to old stones.
meth(odology)heads will note shellscript am/sofix. probably we can
turn that into a guile-tools scheme script rather easily. slowly
creeping up on full $src/module.scm -> $inst/module.so flow; a
little C parsing to go, that's all...
next step, get emacs' vc-git up to snuff and let 1.4.x spread all
over! (note: this may take a few months/years, in parallel w/ all
the other "next steps" in the works.)
- 220.127.116.11 | 2007-09-12
- license now straight GPL
NB: This differs from other versions of Guile which provide
libguile under the GNU Lesser General Public License (LGPL).
Guile 18.104.22.168 and derivatives are not to be lessened so.
- new dependency: libgdbm
This is to support new module (database gnudbm), a transplant of
Guile-GDBM <http://www.gnuvola.org/software/guile-gdbm/>. Note
that this is a hard-dependency; there is presently no option to
- bugfix: SRFI-19 `date->julian-day' accounts for timezone offset
- boot-9.scm procs now autoloaded + new module: (ice-9 cmdline-opts)
These procs used to be available on boot, from module (guile):
They are now autoloaded into module (guile-user) from new module
NB: Autoloading of (ice-9 cmdline-opts) into (guile-user) is a
transition-easing feature and will be removed after 2008-04-20.
Callers should arrange to import the module explicitly.
- false-if-exception can take a sequence of expressions
Before, somewhat strangely, you might see:
(false-if-exception (write-line 1) 2)
=| ERROR: Wrong number of arguments to #<procedure (expr)>
Now, you see:
(false-if-exception (write-line 1) 2)
- new interpreter command-line option: -L DIR
This prefixes DIR to `%load-path'. If specified multiple times,
the directories accumulate in the order given. DIRs specified
thusly take precedence over those in env var `GUILE_LOAD_PATH',
but only after ~/.guile processing.
- new (ice-9 rw) proc: read-string!/partial/never-fewer
- new (ice-9 rw) proc: write-string!/partial/never-fewer
Note that for reading, the interface is different than that of
`read-string!/partial'. These procs are basically loops around
their more-concisely-named sibling procs.
- changes to (ice-9 gap-buffer)
- make-gap-buffer now also takes integer or port INIT
An integer specifies how much memory (in bytes) to allocate.
(The user-visible buffer contents remains empty, however.)
A port is read until drained. See "editing-buffer" below.
- new procs: gb-char-after, gb-char-before
These are also reflected in (ice-9 editing-buffer) bodies.
See Emacs funcs `char-after' and `char-before' for details.
- new (ice-9 editing-buffer) object property: filename:
- new (ice-9 editing-buffer) proc: find-file-read-only
- new (ice-9 editing-buffer) proc: find-file
These are convenience procedures that make use of the new
port INIT feature of the underlying gap-buffer.
- changes to executable modules (scripts)
- better error if given -d but no -o
The case where auto*-tools compatible dependency tracking is
enabled but no output file is specified used to signal a
mysterious wrong-type-arg error (because it is impossible to
write a Makefile fragment without knowing a filename). Now, the
situation is detected earlier and the error message is more to
the point: "missing -o OUTFILE".
- no more initial "generated file" comment
This comment used to be output as the first line.
Unfortunately, that interfered with `\input texinfo'.
- new command-line option: --scheme-implied
Procedure and variable entries used to unconditionally say
"Scheme Procedure" or "Scheme Macro". Now, if the documentation
is for a Scheme-only package (no C API), the "Scheme " part can
be omitted by specifying `--scheme-implied' to the twerp2texi
program, yielding simply "Procedure" or "Macro", respectively.
- setsearchpath elements may be symbols
You can now say address@hidden (top_srcdir)', for example,
to specify the environment variable `top_srcdir' in the search
path. Null values, where (getenv VAR) => #f, are omitted.
- nontrivial REQ/OPT/VAR output after "C Function" signature
For "trivial" -- defined as either (zero? (+ req opt var))
or (zero? (+ opt var)) -- the output is as before. Otherwise,
the output looks something like:
-- C Function: scm_getpwuid (user) |0 |1 |0
-- C Function: scm_append (args) |0 |0 |1
- mkpimmc temporary catalog names based on output filename
Previously, the temporary catalog names were hardcoded as
.module-catalog, which interferes when the output filename
is also .module-catalog. Now, the temporary catalog names are
constructed by appending "TEM" to the output filename.
- new command-line option for generate-autoload: --sexp
This option inhibits display of the `define-module' form. Instead,
the program displays (RESULT ...), with each RESULT being the form
produced by applying `module-name/exports' to the respective arg.
- default catalog for module-doc-coverage now ".module-catalog"
It used to be "pre-inst.merged-module-catalog".
- punify handles `(quote foo)'
Such forms are now output as " 'foo" (note preceding space).
- read-scheme-source includes line number for comments and whitespace
- gxsed bugfixes
Although it still fails many tests from the GNU Sed 4.1.5
test-suite (see Commentary for partial list), gxsed can be
used for many "non-guru" stream editing tasks. NB: YMMV.
- bugfix: handle `(do (A B C) ...)' w/ non-pair C correctly
Previously, C was assumed to be a parenthesized form, e.g.,
`(1+ i)', and lint died otherwise. Now a non-pair form in
that position is handled as well.
- new test: roaming
A "roaming guest" is an imported binding that is unused and not
re-exported (i.e., "not seated at the table"). If roaming
guests are found, lint lists all guests, w/ status "-" (roaming)
or "+" (situated somewhere).
- c2doc changes
- bugfix: no longer trip on SCM_REGISTER_PROC
This C macro expands, like SCM_DEFINE, into a declaration that
includes a count of the required, optional and variable
arguments. Unlike SCM_DEFINE, however, the expansion does not
include variable names.
Previously, c2doc would signal a "sig not clean" error due to
the mismatch between total argument count and the parsed arglist
(which is always empty when via SCM_REGISTER_PROC). Now, this
error is suppressed, and dummy args (arg1, arg2, ...) generated.
- new support for "Emacs-style doc: comments"
Less quoting, less pain. See database/gdbm.c for example (the
extra asterisks help convince Emacs's CC Mode `c-indent-sexp' on
the column-0 opening paren to take a break and leave things
alone). See (info "(guile) guile-tools c2doc") for details.
- formatted arglist includes "#(REQ OPT VAR)" suffix
(append [args ...])
(getpw [user]#(0 1 0))
(append [args ...]#(0 0 1))
- changes to read-text-outline
- uses pretty-print for display
The parsed TREE used to be displayed with `write'. Now this is
done with `(pretty-print TREE #:escape-strings? #t)'.
- new spec: more-lines? BOOL
Normally, only header lines are considered. Use `more-lines?'
with a non-#f value to specify that non-header lines be included
as well. The structure of the output will be the same, however
a header that is not immediately followed by another will result
in a string with embedded (and possibly trailing) newline chars.
- pretty-print can return the string instead of sending it to PORT
If PORT is #f, `pretty-print' from module (ice-9 pretty-print)
returns the formatted-object string.
- module (ice-9 testing-lib) outputs `misc-error' args prettily
The reporter used to say:
... - arguments: ((misc-error "foo" "bad ~A: ~S" ("bar" "baz") #f))
Now it says:
... - in procedure foo: bad bar: "baz"
- new (ice-9 gumm) proc: module-catalog-manager
This proc accepts a keyword command with which you can interact
with (query, config, rehash) Guile's module catalog subsystem.
- GH_MODULE_LINK_FUNC and GH_NEEDY_MODULE_LINK_FUNC make forward decls
These macros, installed in <guile/modsup.h>, now generate a
forward declaration for the function immediately prior to its
definition. This silences "gcc -Wmissing-prototypes" warnings.
- more efficient support for compiled-module exports extraction
Previously, scripts c2x and generate-autoload conspired (along
w/ the help of guile-snarf.in for modules distributed w/ Guile)
to embed into, and subsequently read out of, a compiled module
the list of "exported procedures". This was implemented w/ a
long C string and the external program strings(1), which was
functional but not very pretty, especially since C strings over
509 bytes provoke a gcc warning.
Now, embedding is subsumed by walking `scm_make_gsubr' over a
table (actually a pair of tables, see libguile/modsup.h) and
extraction from the name-table is done using only the external
program `objdump' (plus some grotty text crawling). Thus we
undo the bloatage introduced w/ Guile 22.214.171.124, although the
approach still loses once the compiled module is stripped (so
don't do that, or do it only after scanning). We hope someone
will write module (database bfd) RSN, so as to be able to drop
external program dependency altogether, thus transforming the
grotty text crawling into grotty bfd_section crawling...
- new boot-9.scm proc: unspecified
This returns the "unspecified value".
- new module: (ice-9 accumulate)
- new config.status command: module-catalog-clean-local
This is defined when you use macro GUILE_MODULE_CATALOG_PREP
from guile.m4. See node "Autoconf Macros" in the manual.
- new EXPERIMENTAL support for spec-based compiled-module loading
A compiled module is a dynamically shared object library that
follows certain conventions. Previously (and still to be
supported for the forseeable future), the "version 0" of these
conventions specifies a single opaque C thunk to be called to
init the module.
With this Guile release, we introduce a completely declarative
mechanism comprising lots of C structs gathered into a single
`struct scm_module_initspec', and appropriate module system (and
guile-tools) support for mining this out of the module both at
catalog-making (installation) and at run- (load/link-) time.
The following can now be initialized by including in the
initspec entries that specify their name and storage info:
gsubrs (normal SCM* -> SCM as by GH_DEFPROC, for example),
strings, symbols, keywords, "imported" objects. The latter
covers both interpreter-provided objects (such as the proc
`seek' or the number `SEEK_SET') as well as those that require
upstream modules to be loaded prior to use (such as the procs
from `(ice-9 q) q?' or `(database tmpfile) tmpfile'). Note that
`(database tmpfile)' is itself a compiled module. Additionally,
non-gsubr objects can also be declared for export.
NB: This feature is considered VERY EXPERIMENTAL. Most likely
after some real-world thrashing things will change incompatibly
to better handle some currently unforseen situation or other.
To underscore this status, there is (as yet) no documentation;
see libguile/modules.[hc] and ice-9/boot-9/module-system.scm for
the gory details. Use w/ caution! Remember to exhale!
- maintenance uses GNU Autoconf 2.61 and GNU Libtool 1.5.24
tarball, online docs, etc, in dir:
|[Prev in Thread]
||[Next in Thread]|
- Guile 126.96.36.199 available,
Thien-Thi Nguyen <=