[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] GNU Guile branch, master, updated. release_1-9-10-188-g2
[Guile-commits] GNU Guile branch, master, updated. release_1-9-10-188-g29b98fb
Mon, 24 May 2010 07:24:47 +0000
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Guile".
The branch, master has been updated
via 29b98fb2566e0b021ddbfaac70b6951bcb775cf3 (commit)
via 139fa149a8dbb56a35178bc898e0f0bbfc33c19a (commit)
from 43d6eb75f305cbe0ed9ca65024e6f5da597282bf (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
Author: Andy Wingo <address@hidden>
Date: Sat May 22 00:49:52 2010 +0200
update NEWS for things that were true and aren't, or vice versa
* NEWS: Misc updates.
Author: Andy Wingo <address@hidden>
Date: Sat May 22 00:13:21 2010 +0200
* NEWS: Integrate 1.9.10 entries into the main text.
Summary of changes:
NEWS | 236 +++++++++++++++++++++++++++---------------------------------------
1 files changed, 95 insertions(+), 141 deletions(-)
diff --git a/NEWS b/NEWS
index d610d83..c58e569 100644
@@ -8,83 +8,8 @@ Please send Guile bug reports to address@hidden
(During the 1.9 series, we will keep an incremental NEWS for the latest
prerelease, and a full NEWS corresponding to 1.8 -> 2.0.)
-Changes in 1.9.10 (since the 1.9.9 prerelease):
+Changes in 1.9.11 (since the 1.9.10 prerelease):
-** Hygienic macros documented as the primary syntactic extension mechanism.
-The macro documentation was finally fleshed out with some documentation
-on `syntax-case' macros, and other parts of the macro expansion process.
-See "Macros" in the manual, for details.
-** Interactive Guile follows GNU conventions
-As recommended by the GPL, Guile now shows a brief copyright and
-warranty disclaimer on startup, along with pointers to more information.
-On the other hand, changing languages is more concise.
-** Support for arbitrary procedure metadata
-Building on its support for docstrings, Guile now supports multiple
-docstrings, adding them to the tail of a compiled procedure's
-properties. For example:
- (define (foo)
- (use-modules (system vm program))
- (program-properties foo)
- => ((name . foo) (documentation . "one") (documentation . "two"))
-Also, vectors of pairs are now treated as additional metadata entries:
- (define (bar)
- #((quz . #f) (docstring . "xyzzy"))
- (use-modules (system vm program))
- (program-properties bar)
- => ((name . bar) (quz . #f) (docstring . "xyzzy"))
-This allows arbitrary literals to be embedded as metadata in a compiled
-** Better documentation infrastructure for macros
-It is now possible to introspect on the type of a macro, e.g.
-syntax-rules, identifier-syntax, etc, and extract information about that
-macro, such as the syntax-rules patterns or the defmacro arguments.
-`(texinfo reflection)' takes advantage of this to give better macro
-** Autocompilation for applications that use Guile as an extension language
-It used to be that only applications that ran Guile through the
-`scm_shell' function got the advantages of autocompilation. This has
-been changed so that all applications have autocompilation on by
-** Better integration of Lisp nil
-`scm_is_boolean', `scm_is_false', and `scm_is_null' all return true now
-for Lisp's `nil'. This shouldn't affect any Scheme code at this point,
-but when we start to integrate more with Emacs, it is possible that we
-break code that assumes that, for example, `(not x)' implies that `x' is
-`eq?' to `#f'. This is not a common assumption. Refactoring affected
-code to rely on properties instead of identities will improve code
-correctness. See "Nil" in the manual, for more details.
-** Integration of lalr-scm, a parser generator
-Guile has included Dominique Boucher's fine `lalr-scm' parser generator
-as `(system base lalr)'. See "LALR(1) Parsing" in the manual, for more
-** Documentation for the dynamic foreign function interface (FFI).
-See "Foreign Function Interface" in the manual, for more information.
-** Unicode character set update to Unicode 5.2.
** And of course, the usual collection of bugfixes
Interested users should see the ChangeLog for more information.
@@ -109,6 +34,12 @@ The statprof statistical profiler, the SSAX XML toolkit,
and the texinfo
toolkit from Guile-Lib have been imported into Guile proper. See
"Standard Library" in the manual for more details.
+** Integration of lalr-scm, a parser generator
+Guile has included Dominique Boucher's fine `lalr-scm' parser generator
+as `(system base lalr)'. See "LALR(1) Parsing" in the manual, for more
* Changes to the stand-alone interpreter
** Guile now can compile Scheme to bytecode for a custom virtual machine.
@@ -116,11 +47,11 @@ toolkit from Guile-Lib have been imported into Guile
Compiled code loads much faster than Scheme source code, and runs around
3 or 4 times as fast, generating much less garbage in the process.
-** The stack limit is now initialized from the environment.
+** Evaluating Scheme code does not use the C stack.
-If getrlimit(2) is available and a stack limit is set, Guile will set
-its stack limit to 80% of the rlimit. Otherwise the limit is 160000
-words, a four-fold increase from the earlier default limit.
+Besides when compiling Guile itself, Guile no longer uses a recursive C
+function as an evaluator. This obviates the need to check the C stack
+pointer for overflow. Continuations still capture the C stack, however.
** New environment variables: GUILE_LOAD_COMPILED_PATH,
@@ -140,7 +71,7 @@ documented in the manual. This will be fixed before 2.0.
The reader supports a new option (changeable via `read-options'),
`square-brackets', which instructs it to interpret square brackets as
-parenthesis. This option is on by default.
+parentheses. This option is on by default.
When the new `r6rs-hex-escapes' reader option is enabled, the reader
will recognize string escape sequences as defined in R6RS.
@@ -185,6 +116,10 @@ allows Guile's copy of SSAX to override any Guile-Lib copy
the user has
installed. Also it should cut the number of `stat' system calls by half,
in the common case.
+** Interactive Guile follows GNU conventions
+As recommended by the GPL, Guile now shows a brief copyright and
+warranty disclaimer on startup, along with pointers to more information.
* Changes to Scheme functions and syntax
@@ -230,8 +165,7 @@ If you think you need `local-eval', you should probably
own metacircular evaluator. It will probably be as fast as Guile's
-** Files loaded with `primitive-load-path' will now be compiled
+** Scheme source files will now be compiled automatically.
If a compiled .go file corresponding to a .scm file is not found or is
not fresh, the .scm file will be compiled on the fly, and the resulting
@@ -249,20 +183,6 @@ will be created if needed.
To inhibit autocompilation, set the GUILE_AUTO_COMPILE environment
variable to 0, or pass --no-autocompile on the Guile command line.
-** Files loaded with `load' will now be compiled automatically.
-As with files loaded via `primitive-load-path', `load' will also compile
-its target if autocompilation is enabled, and a fresh compiled file is
-There are two points of difference to note, however. First, `load' does
-not search `GUILE_LOAD_COMPILED_PATH' for the file; it only looks in the
-autocompilation directory, normally a subdirectory of ~/.cache/guile.
-Secondly, autocompilation also applies to files loaded via the -l
-command-line argument -- so the user may experience a slight slowdown
-the first time they run a Guile script, as the script is autocompiled.
** New POSIX procedures: `getrlimit' and `setrlimit'
Note however that the interface of these functions is likely to change
@@ -280,7 +200,7 @@ Scheme binding for the `getaddrinfo' C library function.
** New procedures in (ice-9 session): `add-value-help-handler!',
- `remove-name-help-handler!', `procedure-arguments',
+ `remove-name-help-handler!', `procedure-arguments'
The value and name help handlers provide some minimal extensibility to
the help interface. Guile-lib's `(texinfo reflection)' uses them, for
@@ -324,12 +244,37 @@ Guile now has an experimental Emacs Lisp compiler and
runtime. You can
now switch to Elisp at the repl: `,language elisp'. All kudos to Daniel
Kraft, and all bugs to address@hidden
-** Defmacros may now have docstrings.
+** Better documentation infrastructure for macros
+It is now possible to introspect on the type of a macro, e.g.
+syntax-rules, identifier-syntax, etc, and extract information about that
+macro, such as the syntax-rules patterns or the defmacro arguments.
+`(texinfo reflection)' takes advantage of this to give better macro
+** Support for arbitrary procedure metadata
+Building on its support for docstrings, Guile now supports multiple
+docstrings, adding them to the tail of a compiled procedure's
+properties. For example:
+ (define (foo)
+ (procedure-properties foo)
+ => ((name . foo) (documentation . "one") (documentation . "two"))
-Indeed, any macro may have a docstring. `object-documentation' from
-`(ice-9 documentation)' may be used to retrieve the docstring, once you
-have a macro value -- but see the above note about first-class macros.
-Docstrings are associated with the syntax transformer procedures.
+Also, vectors of pairs are now treated as additional metadata entries:
+ (define (bar)
+ #((quz . #f) (docstring . "xyzzy"))
+ (procedure-properties bar)
+ => ((name . bar) (quz . #f) (docstring . "xyzzy"))
+This allows arbitrary literals to be embedded as metadata in a compiled
** The psyntax expander now knows how to interpret the @ and @@ special
@@ -367,8 +312,8 @@ for more information.
** `eval-case' has been deprecated, and replaced by `eval-when'.
-The semantics of `eval-when' are easier to understand. It is still
-missing documentation, however.
+The semantics of `eval-when' are easier to understand. See "Eval When"
+in the manual, for more information.
** Guile is now more strict about prohibiting definitions in expression
@@ -455,18 +400,20 @@ the definition of `double-helper' in `eval-when':
(define-macro (double-literal x) (double-helper x))
(double-literal 2) => 4
-See the (currently missing) documentation for eval-when for more
+See the documentation for eval-when for more information.
-** New variable, %pre-modules-transformer
+** `macroexpand' produces structures, not S-expressions.
-Need to document this one some more.
+Given the need to maintain referential transparency, both lexically and
+modular, the result of expanding Scheme expressions is no longer itself
+an s-expression. If you want a human-readable approximation of the
+result of `macroexpand', call `tree-il->scheme' from `(language
-** Temporarily removed functions: `macroexpand', `macroexpand-1'
+** Removed function: `macroexpand-1'
-`macroexpand' will be added back before 2.0. It is unclear how to
-implement `macroexpand-1' with syntax-case, though PLT Scheme does prove
-that it is possible.
+It is unclear how to implement `macroexpand-1' with syntax-case, though
+PLT Scheme does prove that it is possible.
** New reader macros: #' #` #, #,@
@@ -508,7 +455,7 @@ stack will result in an empty stack. To fix this, narrow to
that is active in the current continuation, or narrow to a specific
number of stack frames.
-** backtraces through compiled procedures only show procedures that are
+** Backtraces through compiled procedures only show procedures that are
active in the current continuation
Similarly to the previous issue, backtraces in compiled code may be
@@ -528,8 +475,8 @@ Before, `(define ((f a) b) (* a b))' would translate to
(define f (lambda (a) (lambda (b) (* a b))))
Now a syntax error is signaled, as this syntax is not supported by
-default. If there is sufficient demand, this syntax can be supported
-again by default.
+default. Use the `(ice-9 curried-definitions)' module to get back the
** New procedure, `define!'
@@ -594,6 +541,12 @@ been removed, along with `defmacro-transformer',
any of these procedures provided useful facilities to you, we encourage
you to contact the Guile developers.
+** Hygienic macros documented as the primary syntactic extension mechanism.
+The macro documentation was finally fleshed out with some documentation
+on `syntax-rules' and `syntax-case' macros, and other parts of the macro
+expansion process. See "Macros" in the manual, for details.
** psyntax is now the default expander
Scheme code is now expanded by default by the psyntax hygienic macro
@@ -618,7 +571,7 @@ in psyntax since then. If you find one, please notify
There is no longer any need to import the `(ice-9 syncase)' module
(which is now deprecated). The expander may be invoked directly via
-`sc-expand', though it is normally searched for via the current module
+`macroexpand', though it is normally searched for via the current module
Also, the helper routines for syntax-case are available in the default
@@ -626,11 +579,6 @@ environment as well: `syntax->datum', `datum->syntax',
`bound-identifier=?', `free-identifier=?', `generate-temporaries',
`identifier?', and `syntax-violation'. See the R6RS for documentation.
-** Documentation of `syntax-rules' and `syntax-case' macros
-The documentation of macros in the manual is now separate from that of
-procedures. A new section on hygienic macros has been added.
** Tail patterns in syntax-case
Guile has pulled in some more recent changes from the psyntax portable
@@ -685,9 +633,12 @@ Macros still /exist/ as first-class values, but they must
/referenced/ via the module system, e.g. `(module-ref (current-module)
-This decision may be revisited before the 2.0 release. Feedback welcome
-to address@hidden (subscription required) or address@hidden (no
+** Macros may now have docstrings.
+`object-documentation' from `(ice-9 documentation)' may be used to
+retrieve the docstring, once you have a macro value -- but see the above
+note about first-class macros. Docstrings are associated with the syntax
** `case-lambda' is now available in the default environment.
@@ -695,7 +646,7 @@ The binding in the default environment is equivalent to the
one from the
`(srfi srfi-16)' module. Use the srfi-16 module explicitly if you wish
to maintain compatibility with Guile 1.8 and earlier.
-** Compiled procedures may now have more than one arity.
+** Procedures may now have more than one arity.
This can be the case, for example, in case-lambda procedures. The
arities of compiled procedures may be accessed via procedures from the
@@ -879,15 +830,6 @@ This change will in the future allow users to customize
dispatch without incurring a performance penalty, and allow us to
implement method combinations.
-** GOOPS cleanups.
-GOOPS had a number of concepts that were relevant to the days of Tcl,
-but not any more: operators and entities, mainly. These objects were
-never documented, and it is unlikely that they were ever used. Operators
-were a kind of generic specific to the Tcl support. Entities were
-applicable structures, but were unusable; entities will come back in the
-next alpha release, but with a less stupid name.
** Applicable struct support
One may now make structs from Scheme that may be applied as procedures.
@@ -899,6 +841,14 @@ that new struct are assumed to have the procedure in their
`<applicable-struct-with-setter-vtable>', which looks for the setter in
the second slot. This needs to be better documented.
+** GOOPS cleanups.
+GOOPS had a number of concepts that were relevant to the days of Tcl,
+but not any more: operators and entities, mainly. These objects were
+never documented, and it is unlikely that they were ever used. Operators
+were a kind of generic specific to the Tcl support. Entities were
+replaced by applicable structs, mentioned above.
** New struct slot allocation: "hidden"
A hidden slot is readable and writable, but will not be initialized by a
@@ -1096,12 +1046,6 @@ Removed the deprecated array functions `scm_i_arrayp',
`SCM_DEFINE1', `SCM_PRIMITIVE_GENERIC_1', `SCM_PROC1, and `SCM_GPROC1'
are no more. Use SCM_DEFINE or SCM_PRIMITIVE_GENERIC instead.
-** Add foreign value wrapper
-Guile now has a datatype for aliasing "foreign" values, such as native
-long values. This should be useful for making a proper foreign function
-interface. Interested hackers should see libguile/foreign.h.
** New functions: `scm_call_n', `scm_c_run_hookn'
`scm_call_n' applies to apply a function to an array of arguments.
@@ -1195,6 +1139,16 @@ efficient to check e.g. if a value is equal to Scheme's
Lisp's nil. Additionally there are a heap of new, specific predicates
+** Better integration of Lisp `nil'.
+`scm_is_boolean', `scm_is_false', and `scm_is_null' all return true now
+for Lisp's `nil'. This shouldn't affect any Scheme code at this point,
+but when we start to integrate more with Emacs, it is possible that we
+break code that assumes that, for example, `(not x)' implies that `x' is
+`eq?' to `#f'. This is not a common assumption. Refactoring affected
+code to rely on properties instead of identities will improve code
+correctness. See "Nil" in the manual, for more details.
** Support for static allocation of strings, symbols, and subrs.
Calls to snarfing CPP macros like SCM_DEFINE macro will now allocate
|[Prev in Thread]
||[Next in Thread]|
- [Guile-commits] GNU Guile branch, master, updated. release_1-9-10-188-g29b98fb,
Andy Wingo <=