update NEWS
authorAndy Wingo <wingo@pobox.com>
Wed, 13 Apr 2011 12:07:22 +0000 (14:07 +0200)
committerAndy Wingo <wingo@pobox.com>
Wed, 13 Apr 2011 12:07:22 +0000 (14:07 +0200)
* NEWS: Update for 2.0.1.

NEWS

diff --git a/NEWS b/NEWS
index 225a4ef..cd12f60 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -7,343 +7,193 @@ Please send Guile bug reports to bug-guile@gnu.org.
 
 Changes in 2.0.1 (since 2.0.0):
 
+* Notable changes
 
-
-* New modules (see the manual for details)
-
-** `(ice-9 binary-ports)', XXX
+** guile.m4 supports linking with rpath
     
-* Memory leak fixes
+The GUILE_FLAGS macro now sets GUILE_LIBS and GUILE_LTLIBS, which
+include appropriate directives to the linker to include libguile-2.0.so
+in the runtime library lookup path.
 
-close-port leaking iconv_t    
+** `begin' expands macros in its body before other expressions
 
-weak hash table pumping
+This enables support for programs like the following:
 
-* doc work
+    (begin
+      (define even?
+        (lambda (x)
+          (or (= x 0) (odd? (- x 1)))))
+      (define-syntax odd?
+        (syntax-rules ()
+          ((odd? x) (not (even? x)))))
+      (even? 10))
 
-goops mop
-
-* guile.m4 supports linking with rpath
-    
-    * guile.m4 (GUILE_FLAGS): Also set GUILE_LIBS and GUILE_LTLIBS. Fix
-      documentation.
+** REPL reader usability enhancements
 
-* Add omitted exports from `(ice-9 vlist)'.
-    
-    * module/ice-9/vlist.scm: Export `vhash-delq' and `vhash-delv'.
+The REPL now flushes input after a read error, which should prevent one
+error from causing other errors.  The REPL also now interprets comments
+as whitespace.
 
-*    re-enable the after-gc-hook
-    
-*    chi-top-sequence defines macros before expanding other exps
-    
-(begin
-  (define even?
-    (lambda (x)
-      (or (= x 0) (odd? (- x 1)))))
-  (define-syntax odd?
-    (syntax-rules ()
-      ((odd? x) (not (even? x)))))
-  (even? 10))
+** REPL output has configurable width
 
-*    flush all input on a read error
-    
-    * module/system/repl/repl.scm (flush-all-input): New helper.
-      (prompting-meta-read): Flush all input on a read error, as we could be
-      within some expression or a string or something.
-
-*    repl.scm understands comments
-    
-    * module/system/repl/repl.scm (read-comment, read-scheme-line-comment)
-      (read-scheme-datum-comment): New helpers.
-      (meta-reader): Take a language instead of a reader.  If we have a
-      nonwhitespace char, first check to see that it's a comment, and if so,
-      read it off and loop.
-      (prompting-meta-read): Call meta-reader with the lang.
-
-*    Add ,width meta-command to set screen width in debug output
-    
-terminal-width by default
-
-* man page updates
-
-Mark Harig
-
-* add ice-9 eval-string
-    
-Fly Evaluation in the manual
-
-* add scm_c_public_ref et al
-    
-    * libguile/modules.h:
-    * libguile/modules.c (scm_public_lookup, scm_private_lookup)
-      (scm_c_public_lookup, scm_c_private_lookup, scm_public_ref)
-      (scm_private_ref, scm_c_public_ref, scm_c_private_ref)
-      (scm_public_variable, scm_private_variable, scm_c_public_variable)
-      (scm_c_private_variable): New helpers to get at variables and values
-      in modules.
+The REPL now defaults to output with the current terminal's width, in
+columns.  See "Debug Commands" in the manual for more information on
+the ,width command.
 
-"Accessing Modules from C" in the manual
-
-*    add scm_call_{5,6}
-    
-    * doc/ref/api-evaluation.texi (Fly Evaluation): Document
-      scm_call_{5,6,n}.
-
-*    Add scm_from_latin1_keyword and scm_from_utf8_keyword
-    
-    * doc/ref/api-data.texi: Document new functions.  Remind users that
-      scm_from_locale_keyword should not be used when the name is a C string
-      constant.  Change formal parameter from `str' to `name'.
-
-* srfi-9 define-record-type in nested contexts
-
-* Add `get-string-n' and `get-string-n!' for binary and R6RS ports
-
-* rnrs io ports work
-
-Export `current-input-port', `current-output-port' and
-`current-error-port'.
-    
-    Enhance transcoder-related functionality of `(rnrs io ports)'
-    
-    * module/rnrs/io/ports.scm (transcoder-eol-style)
-      (transcoder-error-handling-mode): Export these.
-      (textual-port?): Implement this procedure and export it.
-    * module/rnrs.scm: Export these here as well.
-    
-    * module/rnrs/io/ports.scm (port-transcoder): Implement this procedure.
-      (binary-port?): Treat only ports without an encoding as binary ports,
-      add docstring.
-      (standard-input-port, standard-output-port, standard-error-port):
-      Ensure these are created without an encoding.
-      (eol-style): Add `none' as enumeration member.
-      (native-eol-style): Switch to `none' from `lf'.
-    
-    * test-suite/tests/r6rs-ports.test (7.2.7 Input ports)
-      (8.2.10 Output ports): Test binary-ness of `standard-input-port',
-      `standard-output-port' and `standard-error-port'.
-      (8.2.6 Input and output ports): Add test for `port-transcoder'.
-    
-    doc: Remove "lack of support for Unicode I/O and strings".
-    
-    * doc/ref/api-io.texi (R6RS I/O Ports): Remove 1.8ish comment.
-
-*    add pointer->scm, scm->pointer
-    
-    * libguile/foreign.c (scm_pointer_to_scm, scm_scm_to_pointer): New
-      functions, useful to pass and receive SCM values to and from foreign
-      functions.
-    
-    * module/system/foreign.scm: Export the new functions.
-    
-    * doc/ref/api-foreign.texi (Foreign Variables): Add docs.
+** Better C access to the module system
 
-* gc-stats update
+Guile now has convenient C accessors to look up variables or values in
+modules and their public interfaces.  See `scm_c_public_ref' and friends
+in "Accessing Modules from C" in the manual.
 
-add heap-allocated-since-gc; fix ,stat.
+** Added `scm_call_5', `scm_call_6'
     
-* allow ,option on-error report instead of debug
-    
-"System Commands" in the manual.
+See "Fly Evaluation" in the manual.
 
-* Make VM string literals immutable.
+** Added `scm_from_latin1_keyword', `scm_from_utf8_keyword'
     
-* don't redirect pthread_create et al
+See "Keyword Procedures" in the manual, for more.  Note that
+`scm_from_locale_keyword' should not be used when the name is a C string
+constant.
 
-    * libguile/bdw-gc.h: Don't do pthread redirects, because we don't want
-      to affect applications' pthread_* bindings.
-    
-    * libguile/pthread-threads.h (scm_i_pthread_create)
-      (scm_i_pthread_detach, scm_i_pthread_exit, scm_i_pthread_cancel)
-      (scm_i_pthread_sigmask): Do pthread redirects here, in this internal
-      header.
+** R6RS unicode and string I/O work
 
-*    Document SRFI-23
-    
-     * doc/ref/srfi-modules.texi: mention that we support SRFI 23
-     * module/ice-9/boot-9.scm (%cond-expand-features): add srfi-23
+Added efficient implementations of `get-string-n' and `get-string-n!'
+for binary ports.  Exported `current-input-port', `current-output-port'
+and `current-error-port' from `(rnrs io ports)', and enhanced support
+for transcoders.
 
-*    with-continuation-barrier calls exit(3) _after_ unwinding
+** Added `pointer->scm', `scm->pointer' to `(system foreign)'
     
-    * libguile/continuations.c (scm_handler, c_handler)
-      (scm_c_with_continuation_barrier, scm_with_continuation_barrier):
-      Instead of calling scm_handle_by_message_noexit in the pre-unwind
-      handler, roll our own exception printing in the pre-unwind, and do to
-      exit()-on-quit in the post-unwind handler.  This lets the stack unwind
-      at exit-time so that pending dynwinds run.
-    
-    * test-suite/tests/continuations.test ("continuations"): Add a test.
-
-*    string->pointer and pointer->string have optional encoding arg
+These procedure are useful if one needs to pass and receive SCM values
+to and from foreign functions.  See "Foreign Variables" in the manual,
+for more.
     
-"Void Pointers and Byte Access" in the manual.
+** Added `heap-allocated-since-gc' to `(gc-stats)'
 
-* Several optimizations for R6RS fixnum arithmetic
+Also fixed the long-standing bug in the REPL `,stat' command.
     
-*    Move `define-inlinable' into the default namespace
+** Add `on-error' REPL option
     
-    * module/ice-9/boot-9.scm (define-inlineable): Moved here from SRFI-9.
-    * module/srfi/srfi-9 (define-inlinable): Removed here.
-    
-    * doc/ref/api-procedures.texi (Inlinable Procedures): Add subsection
-      about `define-inlinable'.
-
-*    Implement R6RS' `fixnum?' in a smarter way
-    
-    * module/rnrs/arithmetic/fixnums.scm (fixnum?): Implemented using
-      bit-twiddling, and using `define-inlinable'.
+This option controls what happens when an error occurs at the REPL, and
+defaults to `debug', indicating that Guile should enter the debugger.
+Other values include `report', which will simply print a backtrace
+without entering the debugger.  See "System Commands" in the manual.
 
-commit 882c89636a2a4afa26cff17c7cdbc1d8c1cb2745
-Author: Mark H Weaver <mhw@netris.org>
-Date:   Wed Apr 6 15:09:42 2011 -0400
+** Enforce immutability of string literals
 
-    Fix the R6RS exact-integer-sqrt and import into core guile
-    
-    * libguile/numbers.c (scm_exact_integer_sqrt): New C procedure to
-      compute exact integer square root and remainder.
-      (scm_i_exact_integer_sqrt): New Scheme procedure `exact-integer-sqrt'
-      from the R6RS, imported into core guile.
-    
-    * libguile/numbers.h: Add prototypes.
+Attempting to mutate a string literal now causes a runtime error.
     
-    * module/rnrs/base.scm: Remove broken stub implementation, which would
-      fail badly when applied to large integers.
+** Fix pthread redirection
+
+Guile 2.0.0 shipped with headers that, if configured with pthread
+support, would re-define `pthread_create', `pthread_join', and other API
+to redirect to the BDW-GC wrappers, `GC_pthread_create', etc.  This was
+unintended, and not necessary: because threads must enter Guile with
+scm_with_guile, Guile can handle thread registration itself, without
+needing to make the GC aware of all threads.  This oversight has been
+fixed.
+
+** `with-continuation-barrier' now unwinds on `quit'
+
+A throw to `quit' in a continuation barrier will cause Guile to exit.
+Before, it would do so before unwinding to the barrier, which would
+prevent cleanup handlers from running.  This has been fixed so that it
+exits only after unwinding.
     
-    * doc/ref/api-data.texi: Add documentation.
+** `string->pointer' and `pointer->string' have optional encoding arg
     
-    * doc/ref/r6rs.texi: Change documentation for `exact-integer-sqrt' to a
-      stub that xrefs the core docs, as is done for other operations
-      available in core.
-    
-    * test-suite/tests/numbers.test: Add tests.
-    
-    * NEWS: Add news entries.
-
-commit adf43b3f081878860ed1d4d5091b9a432b44da90
-Author: Andy Wingo <wingo@pobox.com>
-Date:   Mon Apr 11 10:13:48 2011 +0200
+This allows users of the FFI to more easily deal in strings with
+particular (non-locale) encodings, like "utf-8".  See "Void Pointers and
+Byte Access" in the manual, for more.
 
-    ignore SIGPIPE in (system repl server)
+** R6RS fixnum arithmetic optimizations
     
-    * module/system/repl/server.scm (run-server): Ignore SIGPIPE when we run
-      a server, as otherwise a rudely disconnected client could cause the
-      server to quit.  Thanks to John Proctor for the report, and Detlev
-      Zundel for the debugging.
+R6RS fixnum operations are are still slower than generic arithmetic,
+however.
 
-commit 15671c6e7fd86160b415b5373b2c1539e23556f3
-Author: Andy Wingo <wingo@pobox.com>
-Date:   Mon Apr 11 11:52:35 2011 +0200
-
-    refactor scm_i_print_symbol_name
+** New procedure: `define-inlinable'
     
-    * libguile/print.c (symbol_has_extended_read_syntax)
-      (print_normal_symbol, print_extended_symbol, scm_i_print_symbol_name):
-      Factor scm_i_print_symbol_name into separate routines.  Add comments.
-      There are a number of bugs here.
+See "Inlinable Procedures" in the manual, for more.
 
-commit d9527cfafdad1046770437a7a59d3745e7243c67
-Author: Andy Wingo <wingo@pobox.com>
-Date:   Mon Apr 11 12:48:06 2011 +0200
+** New procedure: `exact-integer-sqrt'
 
-    read-extended-symbol handles backslash better, including r6rs hex escapes
-    
-    * libguile/read.c (scm_read_extended_symbol): Interpret '\' as an escape
-      character.  Due to some historical oddities we have to support '\'
-      before any character, but since we never emitted '\' in front of
-      "normal" characters like 'x' we can interpret "\x..;" to be an R6RS
-      hex escape.
+See "Integer Operations" in the manual, for more.
     
-    * test-suite/tests/reader.test ("#{}#"): Add tests.
+** "Extended read syntax" for symbols parses better
 
-commit 2e9fc9fc73a8157152e6b2e122ec545d96478c2a
-Author: Andy Wingo <wingo@pobox.com>
-Date:   Mon Apr 11 13:38:27 2011 +0200
+In #{foo}# symbols, backslashes are now treated as escapes, as the
+symbol-printing code intended.  Additionally, "\x" within #{foo}# is now
+interpreted as starting an R6RS hex escape.  This is backward compatible
+because the symbol printer would never produce a "\x" before.  The
+printer also works better too.
 
-    symbols with odd characters print better in #{}#
-    
-    * libguile/print.c (symbol_has_extended_read_syntax): Use a more
-      general, unicode-appropriate algorithm.  Hopefully doesn't cause
-      any current #{}# cases to be unescaped.
-      (print_extended_symbol): Use more appropriate unicode algorithm, and
-      emit unicode hex escapes instead of our own lame escapes.
-    
-    * test-suite/tests/symbols.test: Add tests.
+* Manual updates
 
-commit b9e22602bb9c7d82500e4e5612bf80e478e28b8c
-Author: Andy Wingo <wingo@pobox.com>
-Date:   Mon Apr 11 13:49:29 2011 +0200
+** GOOPS documentation updates
 
-    regen psyntax-pp.scm
-    
-    * module/ice-9/psyntax-pp.scm: Regenerate, to take advantage of better
-      #{}# serialization.
+** New man page
 
-commit 62ef23cbb828accf1f5b9622ff17775aa539d354
-Author: Andy Wingo <wingo@pobox.com>
-Date:   Mon Apr 11 17:21:20 2011 +0200
+Thanks to Mark Harig for improvements to guile.1.
 
-    fix reader.test for --disable-deprecated
-    
-    * test-suite/tests/reader.test: Fix deprecated tests; begin-deprecated
-      was splicing in expression context before, which is a no-no.
+** SRFI-23 documented
 
-commit cf9d4a82146556ff45d40d6eec8579082287900e
-Author: Ian Price <ianprice90@googlemail.com>
-Date:   Wed Apr 6 01:53:38 2011 +0100
+The humble `error' SRFI now has an entry in the manual.
 
-    Added optional second arg to R6RS log function
-    
-    * module/rnrs/base.scm (log): now takes a base argument, using the
-      change of base formula for logs.
-    * test-suite/tests/r6rs-base.test ("log (2nd arg)"): Add test cases.
-
-commit 15993bce1cd0a2e69f11a6ac1725fa7a219c5b7c
-Author: Ian Price <ianprice90@googlemail.com>
-Date:   Wed Apr 6 13:51:44 2011 +0100
-
-    fix assert to return true value.
-    
-    * module/rnrs/base.scm (assert): returns value instead of void.
-    
-    * test-suite/tests/r6rs-base.test ("assert"): add test cases.
-
-commit c89b45299329d034875429804f18768c1ea96713
-Author: Ian Price <ianprice90@googlemail.com>
-Date:   Fri Apr 8 02:49:20 2011 +0100
-
-    Fix fencepost error in bip_seek
-    
-    * libguile/r6rs-ports.c (bip_seek): Fix to allow seeking to end of port.
-    
-    * test-suite/tests/r6rs-ports.test ("bytevector input port can seek to
-      very end"): Add tests.
+* New modules
 
-commit dcb1e3b0f8c79d1373f334909fa5d653ec7674eb
-Author: Andy Wingo <wingo@pobox.com>
-Date:   Wed Apr 13 12:03:50 2011 +0200
-
-    --disable-threads fix
+** `(ice-9 binary-ports)': XXX, in the manual
+** `(ice-9 eval-string)': "Fly Evaluation", in the manual
     
-    * libguile/threads.c (do_thread_exit_trampoline, on_thread_exit):
-      (scm_i_init_thread_for_guile): Only register and unregister threads
-      with bdw-gc when we are building with threads support.  Thanks to
-      Marijn for the report.
-
-
-
-
-
-* New procedures (see the manual for details)
-
-** exact-integer-sqrt, imported into core from (rnrs base)
-
 * Bugs fixed
 
-** exact-integer-sqrt now handles large integers correctly
+** Fixed iconv_t memory leak on close-port
+** Fixed some leaks with weak hash tables
+** Export `vhash-delq' and `vhash-delv' from `(ice-9 vlist)'
+** `after-gc-hook' works again
+** `define-record-type' now allowed in nested contexts
+** `exact-integer-sqrt' now handles large integers correctly
+** Fixed C extension examples in manual
+** `vhash-delete' honors HASH argument
+** Make `locale-digit-grouping' more robust
+** Default exception printer robustness fixes
+** Fix presence of non-I CPPFLAGS in `guile-2.0.pc'
+** `read' updates line/column numbers when reading SCSH block comments
+** Fix imports of multiple custom interfaces of same module
+** Fix encoding scanning for non-seekable ports
+** Fix `setter' when called with a non-setter generic
+** Fix f32 and f64 bytevectors to not accept rationals
+** Fix description of the R6RS `finite?' in manual
+** Quotient, remainder and modulo accept inexact integers again
+** Fix `continue' within `while' to take zero arguments
+** Fix alignment for structures in FFI
+** Fix port-filename of stdin, stdout, stderr to match the docs
+** Fix weak hash table-related bug in `define-wrapped-pointer-type'
+** Fix partial continuation application with pending procedure calls
+** scm_{to,from}_locale_string use current locale, not current ports
+** Fix thread cleanup, by using a pthread_key destructor
+** Fix `quit' at the REPL
+** Fix a failure to sync regs in vm bytevector ops
+** Fix (texinfo reflection) to handle nested structures like syntax patterns
+** Fix stexi->html double translation
+** Fix tree-il->scheme fix for <prompt>
+** Fix compilation of <prompt> in <fix> in single-value context
+** Fix race condition in ensure-writable-dir
+** Fix error message on ,disassemble "non-procedure"
+** Fix prompt and abort with the boot evaluator
+** Fix `procedure->pointer' for functions returning `void'
+** Fix error reporting in dynamic-pointer
+** Fix problems detecting coding: in block comments
+** Fix duplicate load-path and load-compiled-path in compilation environment
+** Add fallback read(2) suppport for .go files if mmap(2) unavailable
+** Fix c32vector-set!, c64vector-set!
+** Fix mistakenly deprecated read syntax for uniform complex vectors
+** Fix parsing of exact numbers with negative exponents
+** Ignore SIGPIPE in (system repl server)
+** Fix optional second arg to R6RS log function
+** Fix R6RS `assert' to return true value.
+** Fix fencepost error when seeking in bytevector input ports
 
-exact-integer-sqrt now works correctly when applied to very large
-integers (too large to be precisely represented by a C double).
-It has also been imported into core from (rnrs base).
 
 \f
 Changes in 2.0.0 (changes since the 1.8.x series):