guild disassemble: Use #:prefix instead of #:renamer.
[bpt/guile.git] / NEWS
diff --git a/NEWS b/NEWS
index 65272d9..0292dcd 100644 (file)
--- a/NEWS
+++ b/NEWS
 Guile NEWS --- history of user-visible changes.
-Copyright (C) 1996-2012 Free Software Foundation, Inc.
+Copyright (C) 1996-2014 Free Software Foundation, Inc.
 See the end for copying conditions.
 
 Please send Guile bug reports to bug-guile@gnu.org.
 
 
+Changes in 2.0.11 (since 2.0.10):
+
+This release fixes an embarrassing regression introduced in the C
+interface to SRFI-4 vectors.  See
+<https://lists.gnu.org/archive/html/guile-devel/2014-03/msg00047.html>
+for details.
+
+\f
+Changes in 2.0.10 (since 2.0.9):
+
+* Notable changes
+
+** New GDB extension to support Guile
+
+Guile now comes with an extension for GDB 7.8 or later (unreleased at
+the time of writing) that simplifies debugging of C code that uses
+Guile.  See "GDB Support" in the manual.
+
+** Improved integration between R6RS and native Guile exceptions
+
+R6RS exception handlers, established using 'with-exception-handler' or
+'guard', are now able to catch native Guile exceptions, which are
+automatically converted into appropriate R6RS condition objects.
+
+** Support for HTTP proxies
+
+Guile's built-in web client now honors the 'http_proxy' environment
+variable, as well as the new 'current-http-proxy' parameter.  See
+"Web Client" in the manual for details.
+
+** Lexical syntax improvements
+
+*** Support |...| symbol notation.
+
+Guile's core reader and printer now support the R7RS |...| notation
+for writing symbols with arbitrary characters, as a more portable and
+attractive alternative to Guile's native #{...}# notation.  To enable
+this notation by default, put one or both of the following in your
+~/.guile:
+
+  (read-enable  'r7rs-symbols)
+  (print-enable 'r7rs-symbols)
+
+*** Support '#true' and '#false' notation for booleans.
+
+The booleans '#t' and '#f' may now be written as '#true' and '#false'
+for improved readability, per R7RS.
+
+*** Recognize '#\escape' character name.
+
+The escape character '#\esc' may now be written as '#\escape', per R7RS.
+
+*** Accept "\|" in string literals.
+
+The pipe character may now be preceded by a backslash, per R7RS.
+
+** Custom binary input ports now support 'setvbuf'.
+
+Until now, ports returned by 'make-custom-binary-input-port' were always
+full-buffered.  Now, their buffering mode can be changed using 'setvbuf'.
+
+** SRFI-4 predicates and length accessors no longer accept arrays.
+
+Given that the SRFI-4 accessors don't work for arrays, the fact that the
+predicates and length accessors returned true for arrays was a bug.
+
+** GUILE_PROGS now supports specifying a minimum required version.
+
+The 'GUILE_PROGS' autoconf macro in guile.m4 now allows an optional
+argument to specify a minimum required Guile version.  By default, it
+requires Guile >= 2.0.  A micro version can also be specified, e.g.:
+GUILE_PROGS([2.0.10])
+
+** Error reporting improvements
+
+*** Improved run-time error reporting in (ice-9 match).
+
+If no pattern matches in a 'match' form, the datum that failed to match
+is printed along with the location of the failed 'match' invocation.
+
+*** Print the faulty object upon invalid-keyword errors.
+*** Improved error reporting of procedures defined by define-inlinable.
+*** Improved error reporting for misplaced ellipses in macro definitions.
+*** Improved error checking in 'define-public' and 'module-add!'.
+*** Improved error when 'include' form with relative path is not in a file.
+
+** Speed improvements
+
+*** 'scm_c_read' on ISO-8859-1 (e.g. binary) unbuffered ports is faster.
+*** New inline asm for VM fixnum multiply, for faster overflow checking.
+*** New inline asm for VM fixnum operations on ARM and 32-bit x86.
+*** 'positive?' and 'negative?' are now compiled to VM primitives.
+*** Numerical comparisons with more than 2 arguments are compiled to VM code.
+*** Several R6RS bitwise operators have been optimized.
+
+** Miscellaneous
+
+*** Web: 'content-disposition' headers are now supported.
+*** Web: 'uri-encode' hexadecimal percent-encoding is now uppercase.
+*** Size argument to 'make-doubly-weak-hash-table' is now optional.
+*** Timeout for 'unlock-mutex' and SRFI-18 'mutex-unlock!' may now be #f.
+
+** Gnulib update
+
+Guile's copy of Gnulib was updated to v0.1-92-g546ff82.  The following
+modules were imported from Gnulib: copysign, fsync, isfinite, link,
+lstat, mkdir, mkstemp, readlink, rename, rmdir, and unistd.
+
+* New interfaces
+
+** Cooperative REPL servers
+
+This new facility supports REPLs that run at specified times within an
+existing thread, for example in programs utilizing an event loop or in
+single-threaded programs.  This allows for safe access and mutation of
+a program's data structures from the REPL without concern for thread
+synchronization.  See "Cooperative REPL Servers" in the manual for
+details.
+
+** SRFI-43 (Vector Library)
+
+Guile now includes SRFI-43, a comprehensive library of vector operations
+analogous to the SRFI-1 list library.  See "SRFI-43" in the manual for
+details.
+
+** SRFI-64 (A Scheme API for test suites)
+
+Guile now includes SRFI-64, a flexible framework for creating test
+suites.  The reference implementation of SRFI-64 has also been updated
+to fully support earlier versions of Guile.
+
+** SRFI-111 (Boxes)
+
+See "SRFI-111" in the manual.
+
+** 'define-values'
+
+See "Binding multiple return values" in the manual.
+
+** Custom ellipsis identifiers using 'with-ellipsis' or SRFI-46.
+
+Guile now allows macro definitions to use identifiers other than '...'
+as the ellipsis.  This is convenient when writing macros that generate
+macro definitions.  The desired ellipsis identifier can be given as the
+first operand to 'syntax-rules', as specified in SRFI-46 and R7RS, or by
+using the new 'with-ellipsis' special form in procedural macros.  With
+this addition, Guile now fully supports SRFI-46.
+
+See "Specifying a Custom Ellipsis Identifier" and "Custom Ellipsis
+Identifiers for syntax-case Macros" in the manual for details.
+
+** R7RS 'syntax-error'
+
+Guile now supports 'syntax-error', as specified by R7RS, allowing for
+improved compile-time error reporting from 'syntax-rules' macros.  See
+"Reporting Syntax Errors in Macros" in the manual for details.
+
+** New procedures to convert association lists into hash tables
+
+Guile now includes the convenience procedures 'alist->hash-table',
+'alist->hashq-table', 'alist->hashv-table', and 'alist->hashx-table'.
+See "Hash Table Reference" in the manual.
+
+** New predicates: 'exact-integer?' and 'scm_is_exact_integer'
+
+See "Integers" in the manual.
+
+** 'weak-vector-length', 'weak-vector-ref', and 'weak-vector-set!'
+
+These should now be used to access weak vectors, instead of
+'vector-length', 'vector-ref', and 'vector-set!'.
+
+* Manual updates
+
+** Improve docs for 'eval-when'.
+
+Each 'eval-when' condition is now explained in detail, including
+'expand' which was previously undocumented.  (expand load eval) is now
+the recommended set of conditions, instead of (compile load eval).
+See "Eval When" in the manual, for details.
+
+** Update the section on SMOBs and memory management.
+
+See "Defining New Types (Smobs)" in the manual.
+
+** Fixes
+
+*** GOOPS: #:dsupers is the init keyword for the dsupers slot.
+*** 'unfold-right' takes a tail, not a tail generator.
+*** Clarify that 'append!' and 'reverse!' might not mutate.
+*** Fix doc that incorrectly claimed (integer? +inf.0) => #t.
+    (http://bugs.gnu.org/16356)
+*** Document that we support SRFI-62 (S-expression comments).
+*** Document that we support SRFI-87 (=> in case clauses).
+*** Document 'equal?' in the list of R6RS incompatibilities.
+*** Remove outdated documentation of LTDL_LIBRARY_PATH.
+*** Fix 'weak-vector?' doc: Weak hash tables are not weak vectors.
+*** Fix 'my-or' examples to use let-bound variable.
+    (http://bugs.gnu.org/14203)
+
+* New deprecations
+
+** General 'uniform-vector' interface
+
+This interface lacked both generality and specificity.  The general
+replacements are 'array-length', 'array-ref', and friends on the scheme
+side, and the array handle interface on the C side.  On the specific
+side of things, there are the specific bytevector, SRFI-4, and bitvector
+interfaces.
+
+** Use of the vector interface on arrays
+** 'vector-length', 'vector-ref', and 'vector-set!' on weak vectors
+** 'vector-length', 'vector-ref', and 'vector-set!' as primitive-generics
+
+Making the vector interface operate only on a single representation will
+allow future versions of Guile to compile loops involving vectors to
+more efficient native code.
+
+** 'htons', 'htonl', 'ntohs', 'ntohl'
+
+These procedures, like their C counterpart, were used to convert numbers
+to/from network byte order, typically in conjunction with the
+now-deprecated uniform vector API.
+
+This functionality is now covered by the bytevector and binary I/O APIs.
+See "Interpreting Bytevector Contents as Integers" in the manual.
+
+** 'gc-live-object-stats'
+
+It hasn't worked in the whole 2.0 series.  There is no replacement,
+unfortunately.
+
+** 'scm_c_program_source'
+
+This internal VM function was not meant to be public.  Use
+'scm_procedure_source' instead.
+
+* Build fixes
+
+** Fix build with Clang 3.4.
+
+** MinGW build fixes
+*** Do not add $(EXEEXT) to guild or guile-tools.
+*** tests: Use double quotes around shell arguments, for Windows.
+*** tests: Don't rely on $TMPDIR and /tmp on Windows.
+*** tests: Skip FFI tests that use `qsort' when it's not accessible.
+*** tests: Remove symlink only when it exists.
+*** tests: Don't rely on `scm_call_2' being visible.
+
+** Fix computation of LIBLOBJS so dependencies work properly.
+   (http://bugs.gnu.org/14193)
+
+* Bug fixes
+
+** Web: Fix web client with methods other than GET.
+   (http://bugs.gnu.org/15908)
+** Web: Add Content-Length header for empty bodies.
+** Web: Accept "UTC" as the zone offset in date headers.
+   (http://bugs.gnu.org/14128)
+** Web: Don't throw if a response is longer than its Content-Length says.
+** Web: Write out HTTP Basic auth headers correctly.
+   (http://bugs.gnu.org/14370)
+** Web: Always print a path component in 'write-request-line'.
+** Fix 'define-public' from (ice-9 curried-definitions).
+** psyntax: toplevel variable definitions discard previous syntactic binding.
+   (http://bugs.gnu.org/11988)
+** Fix thread-unsafe lazy initializations.
+** Make (ice-9 popen) thread-safe.
+   (http://bugs.gnu.org/15683)
+** Make guardians thread-safe.
+** Make regexp_exec thread-safe.
+   (http://bugs.gnu.org/14404)
+** vm: Gracefully handle stack overflows.
+   (http://bugs.gnu.org/15065)
+** Fix 'rationalize'.
+   (http://bugs.gnu.org/14905)
+** Fix inline asm for VM fixnum operations on x32.
+** Fix 'SCM_SYSCALL' to really swallow EINTR.
+** Hide EINTR returns from 'accept'.
+** SRFI-19: Update the table of leap seconds.
+** Add missing files to the test-suite Makefile.
+** Make sure 'ftw' allows directory traversal when running as root.
+** Fix 'hash-for-each' for weak hash tables.
+** SRFI-18: Export 'current-thread'.
+   (http://bugs.gnu.org/16890)
+** Fix inlining of tail list to apply.
+   (http://bugs.gnu.org/15533)
+** Fix bug in remqueue in threads.c when removing last element.
+** Fix build when '>>' on negative integers is not arithmetic.
+** Fix 'bitwise-bit-count' for negative arguments.
+   (http://bugs.gnu.org/14864)
+** Fix VM 'ash' for right shifts by large amounts.
+   (http://bugs.gnu.org/14864)
+** Fix rounding in scm_i_divide2double for negative arguments.
+** Avoid lossy conversion from inum to double in numerical comparisons.
+** Fix numerical comparison of fractions to infinities.
+** Allow fl+ and fl* to accept zero arguments.
+   (http://bugs.gnu.org/14869)
+** flonum? returns false for complex number objects.
+   (http://bugs.gnu.org/14866)
+** flfinite? applied to a NaN returns false.
+   (http://bugs.gnu.org/14868)
+** Flonum operations always return flonums.
+   (http://bugs.gnu.org/14871)
+** min and max: NaNs beat infinities, per R6RS errata.
+   (http://bugs.gnu.org/14865)
+** Fix 'fxbit-count' for negative arguments.
+** 'gcd' and 'lcm' support inexact integer arguments.
+   (http://bugs.gnu.org/14870)
+** Fix R6RS 'fixnum-width'.
+   (http://bugs.gnu.org/14879)
+** tests: Use shell constructs that /bin/sh on Solaris 10 can understand.
+   (http://bugs.gnu.org/14042)
+** Fix display of symbols containing backslashes.
+   (http://bugs.gnu.org/15033)
+** Fix truncated-print for uniform vectors.
+** Define `AF_UNIX' only when Unix-domain sockets are supported.
+** Decompiler: fix handling of empty 'case-lambda' expressions.
+** Fix handling of signed zeroes and infinities in 'numerator' and 'denominator'.
+** dereference-pointer: check for null pointer.
+** Optimizer: Numerical comparisons are not negatable, for correct NaN handling.
+** Compiler: Evaluate '-' and '/' in left-to-right order.
+   (for more robust floating-point arithmetic)
+** snarf.h: Declare static const function name vars as SCM_UNUSED.
+** chars.c: Remove duplicate 'const' specifiers.
+** Modify SCM_UNPACK type check to avoid warnings in clang.
+** Arrange so that 'file-encoding' does not truncate the encoding name.
+   (http://bugs.gnu.org/16463)
+** Improve error checking in bytevector->uint-list and bytevector->sint-list.
+   (http://bugs.gnu.org/15100)
+** Fix (ash -1 SCM_I_FIXNUM_BIT-1) to return a fixnum instead of a bignum.
+** i18n: Fix null pointer dereference when locale info is missing.
+** Fix 'string-copy!' to work properly with overlapping src/dest.
+** Fix hashing of vectors to run in bounded time.
+** 'port-position' works on CBIPs that do not support 'set-port-position!'.
+** Custom binary input ports sanity-check the return value of 'read!'.
+** bdw-gc.h: Check SCM_USE_PTHREAD_THREADS using #if not #ifdef.
+** REPL Server: Don't establish a SIGINT handler.
+** REPL Server: Redirect warnings to client socket.
+** REPL Server: Improve robustness of 'stop-server-and-clients!'.
+** Add srfi-16, srfi-30, srfi-46, srfi-62, srfi-87 to %cond-expand-features.
+** Fix trap handlers to handle applicable structs.
+   (http://bugs.gnu.org/15691)
+** Fix optional end argument in `uniform-vector-read!'.
+   (http://bugs.gnu.org/15370)
+** Fix brainfuck->scheme compiler.
+** texinfo: Fix newline preservation in @example with lines beginning with @
+
+** C standards conformance improvements
+
+Improvements and bug fixes were made to the C part of Guile's run-time
+support (libguile).
+
+*** Don't use the identifier 'noreturn'.
+    (http://bugs.gnu.org/15798)
+*** Rewrite SCM_I_INUM to avoid unspecified behavior when not using GNU C.
+*** Improve fallback implemention of SCM_SRS to avoid unspecified behavior.
+*** SRFI-60: Reimplement 'rotate-bit-field' on inums to be more portable.
+*** Improve compliance with C standards regarding signed integer shifts.
+*** Avoid signed overflow in random.c.
+*** VM: Avoid signed overflows in 'add1' and 'sub1'.
+*** VM: Avoid overflow in ASM_ADD when the result is most-positive-fixnum.
+*** read: Avoid signed integer overflow in 'read_decimal_integer'.
+
+
+\f
+Changes in 2.0.9 (since 2.0.7):
+
+Note: 2.0.8 was a brown paper bag release that was never announced, but
+some mirrors may have picked it up.  Please do not use it.
+
+* Notable changes
+
+** New keyword arguments for procedures that open files
+
+The following procedures that open files now support keyword arguments
+to request binary I/O or to specify the character encoding for text
+files: `open-file', `open-input-file', `open-output-file',
+`call-with-input-file', `call-with-output-file', `with-input-from-file',
+`with-output-to-file', and `with-error-to-file'.
+
+It is also now possible to specify whether Guile should scan files for
+Emacs-style coding declarations.  This scan was done by default in
+versions 2.0.0 through 2.0.7, but now must be explicitly requested.
+
+See "File Ports" in the manual for details.
+
+** Rewritten guile.m4
+
+The `guile.m4' autoconf macros have been rewritten to use `guild' and
+`pkg-config' instead of the deprecated `guile-config' (which itself
+calls pkg-config).
+
+There is also a new macro, `GUILE_PKG', which allows packages to select
+the version of Guile that they want to compile against.  See "Autoconf
+Macros" in the manual, for more information.
+
+** Better Windows support
+
+Guile now correctly identifies absolute paths on Windows (MinGW), and
+creates files on that platform according to its path conventions.  See
+"File System" in the manual, for all details.
+
+In addition, the new Gnulib imports provide `select' and `poll' on
+Windows builds.
+
+As an incompatible change, systems that are missing <sys/select.h> were
+previously provided a public `scm_std_select' C function that defined a
+version of `select', but unhappily it also provided its own incompatible
+definitions for FD_SET, FD_ZERO, and other system interfaces.  Guile
+should not be setting these macros in public API, so this interface was
+removed on those plaforms (basically only MinGW).
+
+** Numerics improvements
+
+`number->string' now reliably outputs enough digits to produce the same
+number when read back in.  Previously, it mishandled subnormal numbers
+(printing them as "#.#"), and failed to distinguish between some
+distinct inexact numbers, e.g. 1.0 and (+ 1.0 (expt 2.0 -52)).  These
+problems had far-reaching implications, since the compiler uses
+`number->string' to serialize numeric constants into .go files.
+
+`sqrt' now produces exact rational results when possible, and handles
+very large or very small numbers more robustly.
+
+A number (ahem) of operations involving exact rationals have been
+optimized, most notably `integer-expt' and `expt'.
+
+`exact->inexact' now performs correct IEEE rounding.
+
+** New optimizations
+
+There were a number of improvements to the partial evaluator, allowing
+complete reduction of forms such as:
+
+  ((let ((_ 10)) (lambda () _)))
+
+  ((lambda _ _))
+
+  (apply (lambda _ _) 1 2 3 '(4))
+
+  (call-with-values (lambda () (values 1 2)) (lambda _ _))
+
+`string-join' now handles huge lists efficiently.
+
+`get-bytevector-some' now uses buffered input, which is much faster.
+
+Finally, `array-ref', `array-set!' on arrays of rank 1 or 2 is now
+faster, because it avoids building a rest list.  Similarly, the
+one-argument case of `array-for-each' and `array-map!' has been
+optimized, and `array-copy!' and `array-fill!' are faster.
+
+** `peek-char' no longer consumes EOF
+
+As required by the R5RS, if `peek-char' returns EOF, then the next read
+will also return EOF.  Previously `peek-char' would consume the EOF.
+This makes a difference for terminal devices where it is possible to
+read past an EOF.
+
+** Gnulib update
+
+Guile's copy of Gnulib was updated to v0.0-7865-ga828bb2.  The following
+modules were imported from Gnulib: select, times, pipe-posix, fstat,
+getlogin, poll, and c-strcase.
+
+** `include' resolves relative file names relative to including file
+
+Given a relative file name, `include' will look for it relative to the
+directory of the including file.  This harmonizes the behavior of
+`include' with that of `load'.
+
+** SLIB compatibility restored
+
+Guile 2.0.8 is now compatible with SLIB.  You will have to use a
+development version of SLIB, however, until a new version of SLIB is
+released.
+
+** Better ,trace REPL command
+
+Sometimes the ,trace output for nested function calls could overflow the
+terminal width, which wasn't useful.  Now there is a limit to the amount
+of space the prefix will take.  See the documentation for ",trace" for
+more information.
+
+** Better docstring syntax supported for `case-lambda'
+
+Docstrings can now be placed immediately after the `case-lambda' or
+`case-lambda*' keyword.  See "Case-lambda" in the manual.
+
+** Improved handling of Unicode byte order marks
+
+See "BOM Handling" in the manual for details.
+
+** Update predefined character sets to Unicode 6.2
+
+** GMP 4.2 or later required
+
+Guile used to require GMP at least version 4.1 (released in May 2002),
+and now requires at least version 4.2 (released in March 2006).
+
+* Manual updates
+
+** Better SXML documentation
+
+The documentation for SXML modules was much improved, though there is
+still far to go.  See "SXML" in manual.
+
+** Style updates
+
+Use of "iff" was replaced with standard English.  Keyword arguments are
+now documented consistently, along with their default values.
+
+** An end to the generated-documentation experiment
+
+When Guile 2.0 imported some modules from Guile-Lib, they came with a
+system that generated documentation from docstrings and module
+commentaries.  This produced terrible documentation.  We finally bit the
+bullet and incorporated these modules into the main text, and will be
+improving them manually over time, as is the case with SXML.  Help is
+appreciated.
+
+** New documentation
+
+There is now documentation for `scm_array_type', and `scm_array_ref', as
+well as for the new `array-length' / 'scm_c_array_length' /
+`scm_array_length' functions.  `array-in-bounds?' has better
+documentation as well.  The `program-arguments-alist' and
+`program-lambda-list' functions are now documented, as well as `and=>',
+`exit', and `quit'.  The (system repl server) module is now documented
+(see REPL Servers).  Finally, the GOOPS class hierarchy diagram has been
+regenerated for the web and print output formats.
+
+* New deprecations
+
+** Deprecate generalized vector interface
+
+The generalized vector interface, introduced in 1.8.0, is simply a
+redundant, verbose interface to arrays of rank 1.  `array-ref' and
+similar functions are entirely sufficient.  Thus,
+`scm_generalized_vector_p', `scm_generalized_vector_length',
+`scm_generalized_vector_ref', `scm_generalized_vector_set_x', and
+`scm_generalized_vector_to_list' are now deprecated.
+
+** Deprecate SCM_CHAR_CODE_LIMIT and char-code-limit
+
+These constants were defined to 256, which is not the highest codepoint
+supported by Guile.  Given that they were useless and incorrect, they
+have been deprecated.
+
+** Deprecate `http-get*'
+
+The new `#:streaming?' argument to `http-get' subsumes the functionality
+of `http-get*' (introduced in 2.0.7).  Also, the `#:extra-headers'
+argument is deprecated in favor of `#:headers'.
+
+** Deprecate (ice-9 mapping)
+
+This module, present in Guile since 1996 but never used or documented,
+has never worked in Guile 2.0.  It has now been deprecated and will be
+removed in Guile 2.2.
+
+** Deprecate undocumented array-related C functions
+
+These are `scm_array_fill_int', `scm_ra_eqp', `scm_ra_lessp',
+`scm_ra_leqp', `scm_ra_grp', `scm_ra_greqp', `scm_ra_sum',
+`scm_ra_product', `scm_ra_difference', `scm_ra_divide', and
+`scm_array_identity'.
+
+* New interfaces
+
+** SRFI-41 Streams
+
+See "SRFI-41" in the manual.
+
+** SRFI-45 exports `promise?'
+
+SRFI-45 now exports a `promise?' procedure that works with its promises.
+Also, its promises now print more nicely.
+
+** New HTTP client procedures
+
+See "Web Client" for documentation on the new `http-head', `http-post',
+`http-put', `http-delete', `http-trace', and `http-options' procedures,
+and also for more options to `http-get'.
+
+** Much more capable `xml->sxml'
+
+See "Reading and Writing XML" for information on how the `xml->sxml'
+parser deals with namespaces, processed entities, doctypes, and literal
+strings.  Incidentally, `current-ssax-error-port' is now a parameter
+object.
+
+** New procedures for converting strings to and from bytevectors
+
+See "Representing Strings as Bytes" for documention on the new `(ice-9
+iconv)' module and its `bytevector->string' and `string->bytevector'
+procedures.
+
+** Escape continuations with `call/ec' and `let/ec'
+
+See "Prompt Primitives".
+
+** New procedures to read all characters from a port
+
+See "Line/Delimited" in the manual for documentation on `read-string'
+ and `read-string!'.
+
+** New procedure `sendfile'
+
+See "File System".
+
+** New procedure `unget-bytevector'
+
+See "R6RS Binary Input".
+
+** New C helper: `scm_c_bind_keyword_arguments'
+
+See "Keyword Procedures".
+
+** New command-line arguments: `--language' and `-C'
+
+See "Command-line Options" in the manual.
+
+** New environment variables: `GUILE_STACK_SIZE', `GUILE_INSTALL_LOCALE'
+
+See "Environment Variables".
+
+** New procedures for dealing with file names
+
+See "File System" for documentation on `system-file-name-convention',
+`file-name-separator?', `absolute-file-name?', and
+`file-name-separator-string'.
+
+** `array-length', an array's first dimension
+
+See "Array Procedures".
+
+** `hash-count', for hash tables
+
+See "Hash Tables".
+
+** `round-ash', a bit-shifting operator that rounds on right-shift
+
+See "Bitwise Operations".
+
+** New foreign types: `ssize_t', `ptrdiff_t'
+    
+See "Foreign Types".
+
+** New C helpers: `scm_from_ptrdiff_t', `scm_to_ptrdiff_t'
+
+See "Integers".
+
+** Socket option `SO_REUSEPORT' now available from Scheme
+
+If supported on the platform, `SO_REUSEPORT' is now available from
+Scheme as well.  See "Network Sockets and Communication".
+
+** `current-language' in default environment
+
+Previously defined only in `(system base language)', `current-language'
+is now defined in the default environment, and is used to determine the
+language for the REPL, and for `compile-and-load'.
+
+** New procedure: `fluid->parameter'
+
+See "Parameters", for information on how to convert a fluid to a
+parameter.
+
+** New `print' REPL option
+
+See "REPL Commands" in the manual for information on the new
+user-customizable REPL printer.
+
+** New variable: %site-ccache-dir
+    
+The "Installing Site Packages" and "Build Config" manual sections now
+refer to this variable to describe where users should install their
+`.go' files.
+
+* Build fixes
+
+** Fix compilation against libgc 7.3.
+** Fix cross-compilation of `c-tokenize.o'.
+** Fix warning when compiling against glibc 2.17.
+** Fix documentation build against Texinfo 5.0.
+** Fix building Guile from a directory with non-ASCII characters.
+** Fix native MinGW build.
+** Fix --disable-posix build.
+** Fix MinGW builds with networking, POSIX, and thread support.
+
+* Bug fixes
+
+** Fix inexact number printer.
+   (http://bugs.gnu.org/13757)
+** Fix infinite loop when parsing optional-argument short options (SRFI-37).
+   (http://bugs.gnu.org/13176)
+** web: Support non-GMT date headers in the HTTP client.
+   (http://bugs.gnu.org/13544)
+** web: support IP-literal (IPv6 address) in Host header.
+** Avoid stack overflows with `par-map' and nested futures in general.
+   (http://bugs.gnu.org/13188)
+** Peek-char no longer consumes EOF.
+   (http://bugs.gnu.org/12216)
+** Avoid swallowing multiple EOFs in R6RS binary-input procedures.
+** A fork when multiple threads are running will now print a warning.
+** Allow for spurious wakeups from pthread_cond_wait.
+   (http://bugs.gnu.org/10641)
+** Warn and ignore module autoload failures.
+   (http://bugs.gnu.org/12202)
+** Use chmod portably in (system base compile).
+   (http://bugs.gnu.org/10474)
+** Fix response-body-port for HTTP responses without content-length.
+   (http://bugs.gnu.org/13857)
+** Allow case-lambda expressions with no clauses.
+   (http://bugs.gnu.org/9776)
+** Improve standards conformance of string->number.
+   (http://bugs.gnu.org/11887)
+** Support calls and tail-calls with more than 255 formals.
+** ,option evaluates its right-hand-side.
+   (http://bugs.gnu.org/13076)
+** Structs with tail arrays are not simple.
+   (http://bugs.gnu.org/12808)
+** Make `SCM_LONG_BIT' usable in preprocessor conditionals.
+   (http://bugs.gnu.org/13848)
+** Fix thread-unsafe lazy initializations.
+** Allow SMOB mark procedures to be called from parallel markers.
+   (http://bugs.gnu.org/13611)
+** Fix later-bindings-win logic in with-fluids.
+   (http://bugs.gnu.org/13843)
+** Fix duplicate removal of with-fluids.
+   (http://bugs.gnu.org/13838)
+** Support calling foreign functions of 10 arguments or more.
+   (http://bugs.gnu.org/13809)
+** Let reverse! accept arbitrary types as second argument.
+   (http://bugs.gnu.org/13835)
+** Recognize the `x86_64.*-gnux32' triplet.
+** Check whether a triplet's OS part specifies an ABI.
+** Recognize mips64* as having 32-bit pointers by default.
+** Use portable sed constructs.
+   (http://bugs.gnu.org/14042)
+** Remove language/glil/decompile-assembly.scm.
+   (http://bugs.gnu.org/10622)
+** Use O_BINARY in `copy-file', `load-objcode', `mkstemp'.
+** Use byte-oriented functions in `get-bytevector*'.
+** Fix abort when iconv swallows BOM from UTF-16 or UTF-32 stream.
+** Fix compilation of functions with more than 255 local variables.
+** Fix `getgroups' for when zero supplementary group IDs exist.
+** Allow (define-macro name (lambda ...)).
+** Various fixes to the (texinfo) modules.
+** guild: Gracefully handle failures to install the locale.
+** Fix format string warnings for ~!, ~|, ~/, ~q, ~Q, and ~^.
+   (http://bugs.gnu.org/13485)
+** Fix source annotation bug in psyntax 'expand-body'.
+** Ecmascript: Fix conversion to boolean for non-numbers.
+** Use case-insensitive comparisons for encoding names.
+** Add missing cond-expand feature identifiers.
+** A failure to find a module's file does not prevent future loading.
+** Many (oop goops save) fixes.
+** `http-get': don't shutdown write end of socket.
+   (http://bugs.gnu.org/13095)
+** Avoid signed integer overflow in scm_product.
+** http: read-response-body always returns bytevector or #f, never EOF.
+** web: Correctly detect "No route to host" conditions.
+** `system*': failure to execvp no longer leaks dangling processes.
+   (http://bugs.gnu.org/13166)
+** More sensible case-lambda* dispatch.
+   (http://bugs.gnu.org/12929)
+** Do not defer expansion of internal define-syntax forms.
+   (http://bugs.gnu.org/13509)
+
+
+\f
+Changes in 2.0.7 (since 2.0.6):
+
+* Notable changes
+
+** SRFI-105 curly infix expressions are supported
+
+Curly infix expressions as described at
+http://srfi.schemers.org/srfi-105/srfi-105.html are now supported by
+Guile's reader.  This allows users to write things like {a * {b + c}}
+instead of (* a (+ b c)).  SRFI-105 support is enabled by using the
+`#!curly-infix' directive in source code, or the `curly-infix' reader
+option.  See the manual for details.
+
+** Reader options may now be per-port
+
+Historically, `read-options' and related procedures would manipulate
+global options, affecting the `read' procedure for all threads, and all
+current uses of `read'.
+
+Guile can now associate `read' options with specific ports, allowing
+different ports to use different options.  For instance, the
+`#!fold-case' and `#!no-fold-case' reader directives have been
+implemented, and their effect is to modify the current read options of
+the current port only; similarly for `#!curly-infix'.  Thus, it is
+possible, for instance, to have one port reading case-sensitive code,
+while another port reads case-insensitive code.
+
+** Futures may now be nested
+
+Futures may now be nested: a future can itself spawn and then `touch'
+other futures.  In addition, any thread that touches a future that has
+not completed now processes other futures while waiting for the touched
+future to completed.  This allows all threads to be kept busy, and was
+made possible by the use of delimited continuations (see the manual for
+details.)
+
+Consequently, `par-map' and `par-for-each' have been rewritten and can
+now use all cores.
+
+** `GUILE_LOAD_PATH' et al can now add directories to the end of the path
+
+`GUILE_LOAD_PATH' and `GUILE_LOAD_COMPILED_PATH' can now be used to add
+directories to both ends of the load path.  If the special path
+component `...' (ellipsis) is present in these environment variables,
+then the default path is put in place of the ellipsis, otherwise the
+default path is placed at the end.  See "Environment Variables" in the
+manual for details.
+
+** `load-in-vicinity' search for `.go' files in `%load-compiled-path'
+
+Previously, `load-in-vicinity' would look for compiled files in the
+auto-compilation cache, but not in `%load-compiled-path'.  This is now
+fixed.  This affects `load', and the `-l' command-line flag.  See
+<http://bugs.gnu.org/12519> for details.
+
+** Extension search order fixed, and LD_LIBRARY_PATH preserved
+
+Up to 2.0.6, Guile would modify the `LD_LIBRARY_PATH' environment
+variable (or whichever is relevant for the host OS) to insert its own
+default extension directories in the search path (using GNU libltdl
+facilities was not possible here.)  This approach was problematic in two
+ways.
+
+First, the `LD_LIBRARY_PATH' modification would be visible to
+sub-processes, and would also affect future calls to `dlopen', which
+could lead to subtle bugs in the application or sub-processes.  Second,
+when the installation prefix is /usr, the `LD_LIBRARY_PATH' modification
+would typically end up inserting /usr/lib before /usr/local/lib in the
+search path, which is often the opposite of system-wide settings such as
+`ld.so.conf'.
+
+Both issues have now been fixed.
+
+** `make-vtable-vtable' is now deprecated
+
+Programs should instead use `make-vtable' and `<standard-vtable>'.
+
+** The `-Wduplicate-case-datum' and `-Wbad-case-datum' are enabled
+
+These recently introduced warnings have been documented and are now
+enabled by default when auto-compiling.
+
+** Optimize calls to `equal?' or `eqv?' with a constant argument
+
+The compiler simplifies calls to `equal?' or `eqv?' with a constant
+argument to use `eq?' instead, when applicable.
+
+* Manual updates
+
+** SRFI-9 records now documented under "Compound Data Types"
+
+The documentation of SRFI-9 record types has been moved in the "Compound
+Data Types", next to Guile's other record APIs.  A new section
+introduces the various record APIs, and describes the trade-offs they
+make.  These changes were made in an attempt to better guide users
+through the maze of records API, and to recommend SRFI-9 as the main
+API.
+
+The documentation of Guile's raw `struct' API has also been improved.
+
+** (ice-9 and-let-star) and (ice-9 curried-definitions) now documented
+
+These modules were missing from the manual.
+
+* New interfaces
+
+** New "functional record setters" as a GNU extension of SRFI-9
+
+The (srfi srfi-9 gnu) module now provides three new macros to deal with
+"updates" of immutable records: `define-immutable-record-type',
+`set-field', and `set-fields'.
+
+The first one allows record type "functional setters" to be defined;
+such setters keep the record unchanged, and instead return a new record
+with only one different field.  The remaining macros provide the same
+functionality, and also optimize updates of multiple or nested fields.
+See the manual for details.
+
+** web: New `http-get*', `response-body-port', and `text-content-type?'
+   procedures
+
+These procedures return a port from which to read the response's body.
+Unlike `http-get' and `read-response-body', they allow the body to be
+processed incrementally instead of being stored entirely in memory.
+
+The `text-content-type?' predicate allows users to determine whether the
+content type of a response is textual.
+
+See the manual for details.
+
+** `string-split' accepts character sets and predicates
+
+The `string-split' procedure can now be given a SRFI-14 character set or
+a predicate, instead of just a character.
+
+** R6RS SRFI support
+
+Previously, in R6RS modules, Guile incorrectly ignored components of
+SRFI module names after the SRFI number, making it impossible to specify
+sub-libraries.  This release corrects this, bringing us into accordance
+with SRFI 97.
+
+** `define-public' is no a longer curried definition by default
+
+The (ice-9 curried-definitions) should be used for such uses.  See the
+manual for details.
+
+* Build fixes
+
+** Remove reference to `scm_init_popen' when `fork' is unavailable
+
+This fixes a MinGW build issue (http://bugs.gnu.org/12477).
+
+** Fix race between installing `guild' and the `guile-tools' symlink
+
+* Bug fixes
+
+** Procedures returned by `eval' now have docstrings
+   (http://bugs.gnu.org/12173)
+** web client: correctly handle uri-query, etc. in relative URI headers
+   (http://bugs.gnu.org/12827)
+** Fix docs for R6RS `hashtable-copy'
+** R6RS `string-for-each' now accepts multiple string arguments
+** Fix out-of-range error in the compiler's CSE pass
+   (http://bugs.gnu.org/12883)
+** Add missing R6RS `open-file-input/output-port' procedure
+** Futures: Avoid creating the worker pool more than once
+** Fix invalid assertion about mutex ownership in threads.c
+   (http://bugs.gnu.org/12719)
+** Have `SCM_NUM2FLOAT' and `SCM_NUM2DOUBLE' use `scm_to_double'
+** The `scandir' procedure now uses `lstat' instead of `stat'
+** Fix `generalized-vector->list' indexing bug with shared arrays
+   (http://bugs.gnu.org/12465)
+** web: Change `http-get' to try all the addresses for the given URI
+** Implement `hash' for structs
+   (http://lists.gnu.org/archive/html/guile-devel/2012-10/msg00031.html)
+** `read' now adds source properties for data types beyond pairs
+** Improve error reporting in `append!'
+** In fold-matches, set regexp/notbol unless matching string start
+** Don't stat(2) and access(2) the .go location before using it
+** SRFI-19: use zero padding for hours in ISO 8601 format, not blanks
+** web: Fix uri-encoding for strings with no unreserved chars, and octets 0-15
+** More robust texinfo alias handling
+** Optimize `format' and `simple-format'
+   (http://bugs.gnu.org/12033)
+** Angle of -0.0 is pi, not zero
+
+\f
 Changes in 2.0.6 (since 2.0.5):
 
 * Notable changes
@@ -18,7 +979,7 @@ common subexpressions with their boolean values (potentially enabling
 dead code elimination), equivalent bound lexicals, or it can elide them
 entirely, depending on the context in which they are executed.  This
 pass is especially useful in removing duplicate type checks, such as
-those produced by SRFi-9 record accessors.
+those produced by SRFI-9 record accessors.
 
 ** Improvements to the partial evaluator
 
@@ -50,8 +1011,8 @@ reader will record source information for more kinds of datums.
 
 ** Improved error and warning messages
 
-`syntax-violation' errors now prefer 'subform' for source info, with
-'form' as fallback.  Syntactic errors in `cond' and `case' now produce
+`syntax-violation' errors now prefer `subform' for source info, with
+`form' as fallback.  Syntactic errors in `cond' and `case' now produce
 better errors.  `case' can now warn on duplicate datums, or datums that
 cannot be usefully compared with `eqv?'.  `-Warity-mismatch' now handles
 applicable structs.  `-Wformat' is more robust in the presence of
@@ -61,7 +1022,7 @@ define appropriate exception printers.
 ** A few important bug fixes in the HTTP modules.
 
 Guile's web server framework now checks if an application returns a body
-wheree it is not permitted, for example in response to a HEAD request,
+where it is not permitted, for example in response to a HEAD request,
 and warn or truncate the response as appropriate.  Bad requests now
 cause a 400 Bad Request response to be printed before closing the port.
 Finally, some date-printing and URL-parsing bugs were fixed.
@@ -84,6 +1045,10 @@ SMOB that was actually applied.  (There was a weak-key map from SMOB to
 trampoline functions, where the value had a strong reference on the
 key.)  This has been fixed.  There was much rejoicing!
 
+** Support for HTTP/1.1 chunked transfer coding
+
+See "Transfer Codings" in the manual, for more.
+
 ** Micro-optimizations
 
 A pile of micro-optimizations: the `string-trim' function when called
@@ -107,7 +1072,7 @@ with regards to formal parameters of functions.  Thanks to Bake Timmons.
 * New interfaces
 
 ** New C function: `scm_to_pointer'
-** New C functions: `scm_new_smob', `scm_new_double_smob'
+** New C inline functions: `scm_new_smob', `scm_new_double_smob'
 ** (ice-9 format): Add ~h specifier for localized number output.
 ** (web response): New procedure: `response-must-not-include-body?'
 ** New predicate: 'supports-source-properties?'
@@ -116,6 +1081,8 @@ with regards to formal parameters of functions.  Thanks to Bake Timmons.
 ** (language tree-il): New functions: `tree-il=?', `tree-il-hash'
 ** New fluid: `%default-port-conversion-strategy'
 ** New syntax: `=>' within `case'
+** (web http): `make-chunked-input-port', `make-chunked-output-port'
+** (web http): `declare-opaque-header!'
 
 Search the manual for these identifiers, for more information.