guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] GNU Guile branch, master, updated. release_1-9-11-236-g1


From: Andy Wingo
Subject: [Guile-commits] GNU Guile branch, master, updated. release_1-9-11-236-g18e9086
Date: Thu, 05 Aug 2010 14:22:26 +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".

http://git.savannah.gnu.org/cgit/guile.git/commit/?id=18e90860d12c7b54192046eb877153964808cc21

The branch, master has been updated
       via  18e90860d12c7b54192046eb877153964808cc21 (commit)
      from  551b96d294f3b09c37124562e3da64a7bd399666 (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 -----------------------------------------------------------------
commit 18e90860d12c7b54192046eb877153964808cc21
Author: Andy Wingo <address@hidden>
Date:   Thu Aug 5 11:17:09 2010 +0200

    fold 1.9.11 news into main body
    
    * NEWS: Update.

-----------------------------------------------------------------------

Summary of changes:
 NEWS |  383 +++++++++++++++++++++++-------------------------------------------
 1 files changed, 132 insertions(+), 251 deletions(-)

diff --git a/NEWS b/NEWS
index 80e295d..a908379 100644
--- a/NEWS
+++ b/NEWS
@@ -10,257 +10,11 @@ prerelease, and a full NEWS corresponding to 1.8 -> 2.0.)
 
 Changes in 1.9.12 (since the 1.9.11 prerelease):
 
-** Random generator state has an external form
+** Random generator state may be serialized to a datum
 
-Now the random number generator state can be obtained in external
-(i.e. `read'/`write'-able) form via the new procedure
-`random-state->external'.  An externalized state can be reinstantiated by
-calling `external->random-state'.
-
-
-Changes in 1.9.11 (since the 1.9.10 prerelease):
-
-** Renamed module: (rnrs bytevectors)
-    
-This module was called (rnrs bytevector), its name from earlier drafts
-of the R6RS. Its name has been changed. Users of previous 1.9 preleases
-may want to search for any stale rnrs/bytevector .go or .scm file, and
-delete them.
-
-** New module: (sxml match)
-    
-Guile has incorporated Jim Bender's `sxml-match' library. See
-"sxml-match' in the manual for more information. Thanks, Jim!
-
-** New module: (srfi srfi-9 gnu)
-
-This module adds an extension to srfi-9, `set-record-type-printer!'. See
-"SRFI-9" in the manual for more information.
-
-** Support for R6RS libraries
-
-The `library' and `import' forms from the latest Scheme report have been
-added to Guile, in such a way that R6RS libraries share a namespace with
-Guile modules. R6RS modules may import Guile modules, and are available
-for Guile modules to import via use-modules and all the rest. See "R6RS
-Libraries" in the manual for more information.
-
-** Implementations of R6RS libraries
-
-Guile now has implementations for all of the libraries defined in the
-R6RS. Thanks to Julian Graham for this excellent hack. See "R6RS
-Standard Libraries" in the manual for a full list of libraries.
-
-** Partial R6RS compatibility
-
-Guile now has enough support for R6RS to run a reasonably large subset
-of R6RS programs.
-
-Guile is not fully R6RS compatible. Many incompatibilities are simply
-bugs, though some parts of Guile will remain R6RS-incompatible for the
-foreseeable future. See "R6RS Incompatibilities" in the manual, for more
-information.
-
-Please contact address@hidden if you have found an issue not
-mentioned in that compatibility list.
-    
-** Macro expansion produces structures instead of s-expressions
-
-In the olden days, macroexpanding an s-expression would yield another
-s-expression. Though the lexical variables were renamed, expansions of
-core forms like `if' and `begin' were still non-hygienic, as they relied
-on the toplevel definitions of `if' et al being the conventional ones.
-
-The solution is to expand to structures instead of s-expressions. There
-is an `if' structure, a `begin' structure, a `toplevel-ref' structure,
-etc. The expander already did this for compilation, producing Tree-IL
-directly; it has been changed now to do so when expanding for the
-evaluator as well.
-
-The real truth is somewhat more involved: Tree-IL doesn't exist until
-modules have been booted, but we need the expander to boot modules, and
-additionally we need a boot expander before psyntax is loaded. So a
-subset of Tree-IL is defined in C, and the boot expander produces these
-"macroexpanded" structures. Psyntax has been modified to produce those
-structures as well. When Tree-IL loads, it incorporates those structures
-directly as part of its language.
-
-Finally, the evaluator has been adapted to accept these "expanded"
-structures, and enhanced to better support the gamut of this subset of
-Tree-IL, including `lambda*' and `case-lambda'. This was a much-needed
-harmonization between the compiler, expander, and evaluator.
-
-** Deprecated `scm_badargsp'
-
-This function is unused in Guile, but was part of its API.
-
-** `sxml->xml' enhancement
-    
-`sxml->xml' from `(sxml simple)' can now handle the result of
-`xml->sxml'. See bug #29260 for more information.
-
-** New module: (system vm coverage)
-
-This new module can produce code coverage reports for compiled Scheme
-code on a line-by-line level. See "Code Coverage" in the manual for more
-information.
-
-** Faster VM hooks.
-
-The frame objects passed to VM hook procedures are now allocated on the
-stack instead of the heap, making the next-instruction hook practical to
-use.
-
-** New `eval-when' situation: `expand'
-
-Sometimes it's important to cause side-effects while expanding an
-expression, even in eval mode. This situation is used in
-`define-module', `use-modules', et al, in order to affect the current
-module and its set of syntax expanders.
-
-** Better module-level hygiene
-
-Instead of attempting to track changes to the current module when
-expanding toplevel sequences, we instead preserve referential
-transparency relative to where the macro itself was defined. If the
-macro should expand to expressions in the context of the new module, it
-should wrap those expressions in `@@', which has been enhanced to accept
-generic expressions, not just identifier references. For example, part
-of the definition of the R6RS `library' form:
-
-  #'(begin
-      (define-module (name name* ...) #:pure #:version (version ...))
-      (import ispec) ...
-      (re-export r ...) (export e ...)
-      (@@ (name name* ...) body)
-      ...)
-
-In this example the `import' refers to the `import' definition in the
-module where the `library' macro is defined, not in the new module.
-
-** Module system macros rewritten as hygienic macros
-
-`define-module', `use-modules', `export', and other such macros have
-been rewritten as hygienic macros. This allows the necessary referential
-transparency for the R6RS `library' form to do the right thing.
-    
-** Compiler and VM documentation updated
-
-The documentation for the compiler and VM had slipped out of date; it
-has been brought back... to the future!
-
-** Tree-IL field renaming: `vars' -> `gensyms'
-    
-The `vars' fields of <let>, <letrec>, <fix>, and <lambda-case> has been
-renamed to `gensyms', for clarity, and to match <lexical-ref>.
-
-** Removed `version' field from <language>
-    
-Language versions weren't being updated or used in any worthwhile way;
-they have been removed, for now at least.
-
-** New procedure: `module-export-all!'
-
-This procedure exports all current and future bindings from a module.
-Use as `(module-export-all! (current-module))'.
-    
-** Updates to manual
-
-The introductory sections of the manual have been reorganized
-significantly, making it more accessible to new users of Guile. Check it
-out!
-
-** The module namespace is now separate from the value namespace
-
-It was a little-known implementation detail of Guile's module system
-that it was built on a single hierarchical namespace of values -- that
-if there was a module named `(foo bar)', then in the module named
-`(foo)' there was a binding from `bar' to the `(foo bar)' module.
-
-This was a neat trick, but presented a number of problems. One problem
-was that the bindings in a module were not apparent from the module
-itself; perhaps the `(foo)' module had a private binding for `bar', and
-then an external contributor defined `(foo bar)'. In the end there can
-be only one binding, so one of the two will see the wrong thing, and
-produce an obtuse error of unclear provenance.
-
-Also, the public interface of a module was also bound in the value
-namespace, as `%module-public-interface'. This was a hack from the early
-days of Guile's modules.
-
-Both of these warts have been fixed by the addition of fields in the
-`module' data type. Access to modules and their interfaces from the
-value namespace has been deprecated, and all accessors use the new
-record accessors appropriately.
-
-When Guile is built with support for deprecated code, as is the default,
-the value namespace is still searched for modules and public interfaces,
-and a deprecation warning is raised as appropriate.
-
-Finally, to support lazy loading of modules as one used to be able to do
-with module binder procedures, Guile now has submodule binders, called
-if a given submodule is not found. See boot-9.scm for more information.
-    
-** New procedures: module-ref-submodule, module-define-submodule,
-   nested-ref-module, nested-define-module!, local-ref-module,
-   local-define-module
-
-These new accessors are like their bare variants, but operate on
-namespaces instead of values.
-
-** The (app modules) module tree is officially deprecated
-
-It used to be that one could access a module named `(foo bar)' via
-`(nested-ref the-root-module '(app modules foo bar))'. The `(app
-modules)' bit was a never-used and never-documented abstraction, and has
-been deprecated. See the following mail for a full discussion:
-
-    http://lists.gnu.org/archive/html/guile-devel/2010-04/msg00168.html
-
-The `%app' binding is also deprecated.
-
-** Deprecated address@hidden' syntax
-
address@hidden' was part of an older implementation of the Emacs Lisp language,
-and is no longer used.
-    
-** New fluid: `%file-port-name-canonicalization'
-    
-This fluid parameterizes the file names that are associated with file
-ports. If %file-port-name-canonicalization is 'absolute, then file names
-are canonicalized to be absolute paths. If it is 'relative, then the
-name is canonicalized, but any prefix corresponding to a member of
-`%load-path' is stripped off. Otherwise the names are passed through
-unchanged.
-
-** Source file name canonicalization in `compile-file', `compile-and-load'
-    
-These file-compiling procedures now bind
-%file-port-name-canonicalization to their `#:canonicalization' keyword
-argument, which defaults to 'relative. In this way, one might compile
-"../module/ice-9/boot-9.scm", but the path that gets residualized into
-the .go is "ice-9/boot-9.scm".
-
-** Deprecate arity access via (procedure-properties proc 'arity)
-
-Instead of accessing a procedure's arity as a property, use the new
-`procedure-minimum-arity' function, which gives the most permissive
-arity that the the function has, in the same format as the old arity
-accessor.
-
-** Remove redundant accessors: program-name, program-documentation,
-   program-properties, program-property
-    
-Instead, just use procedure-name, procedure-documentation,
-procedure-properties, and procedure-property.
-
-** Enhance documentation for support of Emacs Lisp's `nil'
-
-See "Nil" in the manual, for more details.
-    
-** Enhance documentation for support of other languages
-
-See "Other Languages" in the manual, for more details.
+`random-state->datum' will serialize a random state to a datum, which
+may be written out and read back in later.  That datum may be used to
+construct an equivalent random state by calling `datum->random-state'.
 
 ** And of course, the usual collection of bugfixes
  
@@ -279,7 +33,9 @@ Changes in 1.9.x (since the 1.8.x series):
 ** `(system xref)', a cross-referencing facility (FIXME undocumented)
 ** `(ice-9 vlist)', lists with constant-time random access; hash lists
 ** `(system foreign)', foreign function interface
-
+** `(sxml match)', a pattern matcher for SXML
+** `(srfi srfi-9 gnu)', extensions to the SRFI-9 record library
+** `(system vm coverage)', a line-by-line code coverage library
 ** Imported statprof, SSAX, and texinfo modules from Guile-Lib
     
 The statprof statistical profiler, the SSAX XML toolkit, and the texinfo
@@ -375,6 +131,33 @@ warranty disclaimer on startup, along with pointers to 
more information.
 
 * Changes to Scheme functions and syntax
 
+** Support for R6RS libraries
+
+The `library' and `import' forms from the latest Scheme report have been
+added to Guile, in such a way that R6RS libraries share a namespace with
+Guile modules. R6RS modules may import Guile modules, and are available
+for Guile modules to import via use-modules and all the rest. See "R6RS
+Libraries" in the manual for more information.
+
+** Implementations of R6RS libraries
+
+Guile now has implementations for all of the libraries defined in the
+R6RS. Thanks to Julian Graham for this excellent hack. See "R6RS
+Standard Libraries" in the manual for a full list of libraries.
+
+** Partial R6RS compatibility
+
+Guile now has enough support for R6RS to run a reasonably large subset
+of R6RS programs.
+
+Guile is not fully R6RS compatible. Many incompatibilities are simply
+bugs, though some parts of Guile will remain R6RS-incompatible for the
+foreseeable future. See "R6RS Incompatibilities" in the manual, for more
+information.
+
+Please contact address@hidden if you have found an issue not
+mentioned in that compatibility list.
+    
 ** New implementation of `primitive-eval'
 
 Guile's `primitive-eval' is now implemented in Scheme. Actually there is
@@ -562,6 +345,11 @@ export, it now also accepts a pair of symbols, indicating 
that a binding
 should be renamed on export. See "Creating Guile Modules" in the manual
 for more information.
 
+** New procedure: `module-export-all!'
+
+This procedure exports all current and future bindings from a module.
+Use as `(module-export-all! (current-module))'.
+    
 ** `eval-case' has been deprecated, and replaced by `eval-when'.
 
 The semantics of `eval-when' are easier to understand. See "Eval When"
@@ -585,6 +373,19 @@ feedback about this change (a consequence of using psyntax 
as the
 default expander), and may choose to revisit this situation before 2.0
 in response to user feedback.
 
+** Macro expansion produces structures instead of s-expressions
+
+In the olden days, macroexpanding an s-expression would yield another
+s-expression. Though the lexical variables were renamed, expansions of
+core forms like `if' and `begin' were still non-hygienic, as they relied
+on the toplevel definitions of `if' et al being the conventional ones.
+
+The solution is to expand to structures instead of s-expressions. There
+is an `if' structure, a `begin' structure, a `toplevel-ref' structure,
+etc. The expander already did this for compilation, producing Tree-IL
+directly; it has been changed now to do so when expanding for the
+evaluator as well.
+
 ** Defmacros must now produce valid Scheme expressions.
 
 It used to be that defmacros could unquote in Scheme values, as a way of
@@ -744,6 +545,55 @@ because of hygiene and macros, all modules have names. If 
a module was
 created without a name, the first time `module-name' is called on it, a
 fresh name will be lazily generated for it.
 
+** The module namespace is now separate from the value namespace
+
+It was a little-known implementation detail of Guile's module system
+that it was built on a single hierarchical namespace of values -- that
+if there was a module named `(foo bar)', then in the module named
+`(foo)' there was a binding from `bar' to the `(foo bar)' module.
+
+This was a neat trick, but presented a number of problems. One problem
+was that the bindings in a module were not apparent from the module
+itself; perhaps the `(foo)' module had a private binding for `bar', and
+then an external contributor defined `(foo bar)'. In the end there can
+be only one binding, so one of the two will see the wrong thing, and
+produce an obtuse error of unclear provenance.
+
+Also, the public interface of a module was also bound in the value
+namespace, as `%module-public-interface'. This was a hack from the early
+days of Guile's modules.
+
+Both of these warts have been fixed by the addition of fields in the
+`module' data type. Access to modules and their interfaces from the
+value namespace has been deprecated, and all accessors use the new
+record accessors appropriately.
+
+When Guile is built with support for deprecated code, as is the default,
+the value namespace is still searched for modules and public interfaces,
+and a deprecation warning is raised as appropriate.
+
+Finally, to support lazy loading of modules as one used to be able to do
+with module binder procedures, Guile now has submodule binders, called
+if a given submodule is not found. See boot-9.scm for more information.
+    
+** New procedures: module-ref-submodule, module-define-submodule,
+   nested-ref-module, nested-define-module!, local-ref-module,
+   local-define-module
+
+These new accessors are like their bare variants, but operate on
+namespaces instead of values.
+
+** The (app modules) module tree is officially deprecated
+
+It used to be that one could access a module named `(foo bar)' via
+`(nested-ref the-root-module '(app modules foo bar))'. The `(app
+modules)' bit was a never-used and never-documented abstraction, and has
+been deprecated. See the following mail for a full discussion:
+
+    http://lists.gnu.org/archive/html/guile-devel/2010-04/msg00168.html
+
+The `%app' binding is also deprecated.
+
 ** Many syntax errors have different texts now
 
 Syntax errors still throw to the `syntax-error' key, but the arguments
@@ -905,6 +755,13 @@ arities of compiled procedures may be accessed via 
procedures from the
 `(system vm program)' module; see "Compiled Procedures", "Optional
 Arguments", and "Case-lambda" in the manual. 
 
+** Deprecate arity access via (procedure-properties proc 'arity)
+
+Instead of accessing a procedure's arity as a property, use the new
+`procedure-minimum-arity' function, which gives the most permissive
+arity that the the function has, in the same format as the old arity
+accessor.
+
 ** `lambda*' and `define*' are now available in the default environment
 
 As with `case-lambda', `(ice-9 optargs)' continues to be supported, for
@@ -1162,6 +1019,21 @@ backtrace. This has been fixed.
 
 These are analogous to %load-path and %load-extensions.
 
+** New fluid: `%file-port-name-canonicalization'
+    
+This fluid parameterizes the file names that are associated with file
+ports. If %file-port-name-canonicalization is 'absolute, then file names
+are canonicalized to be absolute paths. If it is 'relative, then the
+name is canonicalized, but any prefix corresponding to a member of
+`%load-path' is stripped off. Otherwise the names are passed through
+unchanged.
+
+In addition, the `compile-file' and `compile-and-load' procedures bind
+%file-port-name-canonicalization to their `#:canonicalization' keyword
+argument, which defaults to 'relative. In this way, one might compile
+"../module/ice-9/boot-9.scm", but the path that gets residualized into
+the .go is "ice-9/boot-9.scm".
+
 ** New procedure, `make-promise'
 
 `(make-promise (lambda () foo))' is equivalent to `(delay foo)'.
@@ -1202,6 +1074,11 @@ respectively.
 crazy. Please change to use `catch', possibly with a throw-handler, or
 `with-throw-handler'.
 
+** Deprecated address@hidden' syntax
+
address@hidden' was part of an older implementation of the Emacs Lisp language,
+and is no longer used.
+    
 ** Last but not least, the `λ' macro can be used in lieu of `lambda'
 
 * Changes to the C interface
@@ -1384,6 +1261,10 @@ procedure, then return a specialized "call" procedure. 
However this
 optimization wasn't actually an optimization, so it is now deprecated.
 Just use `scm_call_0', etc instead.
 
+** Deprecated `scm_badargsp'
+
+This function is unused in Guile, but was part of its API.
+
 ** Better support for Lisp `nil'.
 
 The bit representation of `nil' has been tweaked so that it is now very


hooks/post-receive
-- 
GNU Guile



reply via email to

[Prev in Thread] Current Thread [Next in Thread]