[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] GNU Guile branch, master, updated. release_1-9-1-75-gacf
[Guile-commits] GNU Guile branch, master, updated. release_1-9-1-75-gacf04ab
Sat, 15 Aug 2009 10:49:37 +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 acf04ab4621d9b558f0c403897d36ef9369d1dfc (commit)
from 7577d1c4bac443a6cf220cbdbf0d637b6d388431 (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 Aug 15 12:49:44 2009 +0200
update NEWS for 1.9.2
* NEWS: Update.
Summary of changes:
NEWS | 118 ++++++++++++++++++++++++++++++++++++-----------------------------
1 files changed, 65 insertions(+), 53 deletions(-)
diff --git a/NEWS b/NEWS
index 96c3a9b..f8aea59 100644
@@ -10,87 +10,99 @@ prerelease, and a full NEWS corresponding to 1.8 -> 2.0.)
Changes in 1.9.2 (since the 1.9.1 prerelease):
-** Global variables `scm_charnames' and `scm_charnums' are removed.
+** VM speed improvements
-These variables contained the names of control characters and were
-used when writing characters. While these were global, they were
-never intended to be public API. They have been replaced with private
+Closures now copy the free variables that they need into a flat vector
+instead of capturing all heap-allocated variables. This speeds up access
+to free variables, avoids unnecessary garbage retention, and allows all
+variables to be allocated on the stack.
-** EBCDIC support is removed.
+Variables which are `set!' are now allocated on the stack, but in
+"boxes". This allows a more uniform local variable allocation
+discipline, and allows faster access to these variables.
-There was an EBCDIC compile flag that altered some of the character
-processing. It appeared that full EBCDIC support was never completed
-and was unmaintained.
+The VM has new special-case operations, `add1' and `sub1'.
-Changes in 1.9.1 (since the 1.9.0 prerelease):
+** VM robustness improvements
-** `scm_set_port_seek' and `scm_set_port_truncate' use the `scm_t_off' type
+The maximum number of live local variables has been increased from 256
-Previously they would use the `off_t' type, which is fragile since its
-definition depends on the application's value for `_FILE_OFFSET_BITS'.
+The default VM stack size is 64 kilo-words, up from 16 kilo-words. This
+allows more programs to execute in the default stack space. In the
+future we will probably implement extensible stacks via overflow
-** Automatically compiled files will be placed in ~/.cache, not
+Some lingering cases in which the VM could perform unaligned accesses
+have been fixed.
-Actually, they will be placed in $XDG_CACHE_HOME/guile/ccache/1.9,
-defaulting to XDG_CACHE_HOME=~/.cache. Users may remove their
+The address range for relative jumps has been expanded from 16-bit
+addresses to 19-bit addresses via 8-byte alignment of jump targets. This
+will probably change to a 24-bit byte-addressable strategy before Guile
-** New language: Brainfuck.
+** Compiler optimizations
-Brainfuck is a toy language that closely models Turing machines. Guile's
-brainfuck compiler is meant to be an example of implementing other
-languages. See the manual for details, or
-http://en.wikipedia.org/wiki/Brainfuck for more information about the
-Brainfuck language itself.
+Procedures bound by `letrec' are no longer allocated on the heap,
+subject to a few constraints. In many cases, procedures bound by
+`letrec' and `let' can be rendered inline to their parent function, with
+loop detection for mutually tail-recursive procedures.
+Unreferenced variables are now optimized away.
-** A number of Scheme files were corrected to be LGPLv3+.
+** Compiler robustness
-Some Scheme files imported for the compiler were erroneously labeled as
-being LGPLv2+ or GPLv2+. This oversight has been fixed.
+Guile may now warn about unused lexically-bound variables. Pass
+`-Wunused-variable' to `guile-tools compile', or `#:warnings
+(unused-variable)' within the #:opts argument to the `compile' procedure
+from `(system base compile)'.
-** Bytevectors may now be accessed with a C-friendly API.
+** Incomplete support for Unicode characters and strings
-New functions: `scm_is_bytevector ()', `scm_c_bytevector_length ()',
-`scm_c_bytevector_length ()', and `scm_c_bytevector_set_x ()'. See the
-manual for details.
+Preliminary support for Unicode has landed. Characters may be entered in
+octal format via e.g. `#\454', or created via (integer->char 300). A hex
+external representation will probably be introduced at some point.
-** Bytevectors are now accessible using the generalized-vector API.
+Internally, strings are now represented either in the `latin-1'
+encoding, one byte per character, or in UTF-32, with four bytes per
+character. Strings manage their own allocation, switching if needed.
-As a side effect, this change allows compilation of literal bytevectors
+Currently no locale conversion is performed. Extended characters may be
+written in a string using the hexadecimal escapes `\xXX', `\uXXXX', or
+`\UXXXXXX', for 8-bit, 16-bit, or 24-bit codepoints, respectively.
-** Meta-commands to the REPL work better with strange languages.
+This support is obviously incomplete. Many C functions have not yet been
+updated to deal with the new representations. Users are advised to wait
+for the next release for more serious use of Unicode strings.
-Specifically, meta-commands that take expressions as arguments will use
-the current language's reader to read those expressions, which may span
-multiple lines, with readline integration if the user has that enabled.
+** `defined?' may accept a module as its second argument
-** The object code file format has changed.
+Previously it only accepted internal structures from the evaluator.
-The objcode loader will complain about a "bad header cookie" if it
-happens to find an old file. The workaround for that is currently to
-find all stale .go files and remove them. This is likely to affect users
-who have checked out Guile's git repository, not those that build from
+** `let-values' is now implemented with a hygienic macro
-** Vector access has been sped up considerably.
+This could have implications discussed below in the NEWS entry titled,
+"Lexical bindings introduced by hygienic macros may not be referenced by
-Guile's virtual machine now has vector and bytevector operations. Using
-Guile to process large amounts of data is now easier. This is because
-`vector-ref' and `vector-set!' now have fast opcodes. In addition, there
-are opcodes for `ref' and `set' operations on bytevectors for everything
-from 8-bit integers to 64-bit floating-point values.
+** Global variables `scm_charnames' and `scm_charnums' are removed
-In the next release, we hope to extend this speedup to other kinds of
+These variables contained the names of control characters and were
+used when writing characters. While these were global, they were
+never intended to be public API. They have been replaced with private
-** The `long_long' C type, deprecated in 1.8, has been removed.
+** EBCDIC support is removed
-** And of course, the usual collection of bugfixes.
+There was an EBCDIC compile flag that altered some of the character
+processing. It appeared that full EBCDIC support was never completed
+and was unmaintained.
+** And of course, the usual collection of bugfixes
Interested users should see the ChangeLog for more information.
Changes in 1.9.x (since the 1.8.x series):
* New modules (see the manual for details)
|[Prev in Thread]
||[Next in Thread]|
- [Guile-commits] GNU Guile branch, master, updated. release_1-9-1-75-gacf04ab,
Andy Wingo <=