From 7c81eba25b0ec03b2b6ab2f22d1f1b74d20691ce Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Wed, 13 Apr 2011 14:07:22 +0200 Subject: [PATCH] update NEWS * NEWS: Update for 2.0.1. --- NEWS | 454 ++++++++++++++++++++--------------------------------------- 1 file changed, 152 insertions(+), 302 deletions(-) diff --git a/NEWS b/NEWS index 225a4efe6..cd12f603c 100644 --- 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 +** REPL reader usability enhancements -* guile.m4 supports linking with rpath +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. + +** REPL output has configurable width + +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. + +** Better C access to the module system + +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. + +** Added `scm_call_5', `scm_call_6' - * guile.m4 (GUILE_FLAGS): Also set GUILE_LIBS and GUILE_LTLIBS. Fix - documentation. +See "Fly Evaluation" in the manual. -* Add omitted exports from `(ice-9 vlist)'. +** Added `scm_from_latin1_keyword', `scm_from_utf8_keyword' - * module/ice-9/vlist.scm: Export `vhash-delq' and `vhash-delv'. +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. -* re-enable the after-gc-hook +** R6RS unicode and string I/O work + +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. + +** Added `pointer->scm', `scm->pointer' to `(system foreign)' -* chi-top-sequence defines macros before expanding other exps +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. -(begin - (define even? - (lambda (x) - (or (= x 0) (odd? (- x 1))))) - (define-syntax odd? - (syntax-rules () - ((odd? x) (not (even? x))))) - (even? 10)) +** Added `heap-allocated-since-gc' to `(gc-stats)' -* flush all input on a read error +Also fixed the long-standing bug in the REPL `,stat' command. - * 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 +** Add `on-error' REPL option - * 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. +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. -* Add ,width meta-command to set screen width in debug output +** Enforce immutability of string literals + +Attempting to mutate a string literal now causes a runtime error. -terminal-width by default +** Fix pthread redirection -* man page updates +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. -Mark Harig +** `with-continuation-barrier' now unwinds on `quit' -* add ice-9 eval-string +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. -Fly Evaluation in the manual - -* add scm_c_public_ref et al +** `string->pointer' and `pointer->string' have optional encoding arg - * 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. +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. -"Accessing Modules from C" in the manual - -* add scm_call_{5,6} +** R6RS fixnum arithmetic optimizations - * doc/ref/api-evaluation.texi (Fly Evaluation): Document - scm_call_{5,6,n}. +R6RS fixnum operations are are still slower than generic arithmetic, +however. -* Add scm_from_latin1_keyword and scm_from_utf8_keyword +** New procedure: `define-inlinable' - * 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'. +See "Inlinable Procedures" in the manual, for more. -* srfi-9 define-record-type in nested contexts +** New procedure: `exact-integer-sqrt' -* 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'. +See "Integer Operations" in the manual, for more. - 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. +** "Extended read syntax" for symbols parses better -* add pointer->scm, scm->pointer +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. + +* Manual updates + +** GOOPS documentation updates + +** New man page + +Thanks to Mark Harig for improvements to guile.1. + +** SRFI-23 documented + +The humble `error' SRFI now has an entry in the manual. + +* New modules + +** `(ice-9 binary-ports)': XXX, in the manual +** `(ice-9 eval-string)': "Fly Evaluation", in the manual - * 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. - -* gc-stats update - -add heap-allocated-since-gc; fix ,stat. - -* allow ,option on-error report instead of debug - -"System Commands" in the manual. - -* Make VM string literals immutable. - -* don't redirect pthread_create et al - - * 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. - -* 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 - -* with-continuation-barrier calls exit(3) _after_ unwinding - - * 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 - -"Void Pointers and Byte Access" in the manual. - -* Several optimizations for R6RS fixnum arithmetic - -* Move `define-inlinable' into the default namespace - - * 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'. - -commit 882c89636a2a4afa26cff17c7cdbc1d8c1cb2745 -Author: Mark H Weaver -Date: Wed Apr 6 15:09:42 2011 -0400 - - 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. - - * module/rnrs/base.scm: Remove broken stub implementation, which would - fail badly when applied to large integers. - - * doc/ref/api-data.texi: Add documentation. - - * 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 -Date: Mon Apr 11 10:13:48 2011 +0200 - - ignore SIGPIPE in (system repl server) - - * 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. - -commit 15671c6e7fd86160b415b5373b2c1539e23556f3 -Author: Andy Wingo -Date: Mon Apr 11 11:52:35 2011 +0200 - - refactor scm_i_print_symbol_name - - * 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. - -commit d9527cfafdad1046770437a7a59d3745e7243c67 -Author: Andy Wingo -Date: Mon Apr 11 12:48:06 2011 +0200 - - 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. - - * test-suite/tests/reader.test ("#{}#"): Add tests. - -commit 2e9fc9fc73a8157152e6b2e122ec545d96478c2a -Author: Andy Wingo -Date: Mon Apr 11 13:38:27 2011 +0200 - - 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. - -commit b9e22602bb9c7d82500e4e5612bf80e478e28b8c -Author: Andy Wingo -Date: Mon Apr 11 13:49:29 2011 +0200 - - regen psyntax-pp.scm - - * module/ice-9/psyntax-pp.scm: Regenerate, to take advantage of better - #{}# serialization. - -commit 62ef23cbb828accf1f5b9622ff17775aa539d354 -Author: Andy Wingo -Date: Mon Apr 11 17:21:20 2011 +0200 - - 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. - -commit cf9d4a82146556ff45d40d6eec8579082287900e -Author: Ian Price -Date: Wed Apr 6 01:53:38 2011 +0100 - - 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 -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 -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. - -commit dcb1e3b0f8c79d1373f334909fa5d653ec7674eb -Author: Andy Wingo -Date: Wed Apr 13 12:03:50 2011 +0200 - - --disable-threads fix - - * 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 +** Fix compilation of in 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). Changes in 2.0.0 (changes since the 1.8.x series):