+* Bugs fixed
+
+See the git log (or the ChangeLog) for more details on these bugs.
+
+** Fix order of importing modules and resolving duplicates handlers.
+** Fix a number of bugs involving extended (merged) generics.
+** Fix invocation of merge-generics duplicate handler.
+** Fix write beyond array end in arrays.c.
+** Fix read beyond end of hashtable size array in hashtab.c.
+** (web http): Locale-independent parsing and serialization of dates.
+** Ensure presence of Host header in HTTP/1.1 requests.
+** Fix take-right and drop-right for improper lists.
+** Fix leak in get_current_locale().
+** Fix recursive define-inlinable expansions.
+** Check that srfi-1 procedure arguments are procedures.
+** Fix r6rs `map' for multiple returns.
+** Fix scm_tmpfile leak on POSIX platforms.
+** Fix a couple of leaks (objcode->bytecode, make-boot-program).
+** Fix guile-lib back-compatibility for module-stexi-documentation.
+** Fix --listen option to allow other ports.
+** Fix scm_to_latin1_stringn for substrings.
+** Fix compilation of untyped arrays of rank not 1.
+** Fix unparse-tree-il of <dynset>.
+** Fix reading of #||||#.
+** Fix segfault in GOOPS when class fields are redefined.
+** Prefer poll(2) over select(2) to allow file descriptors above FD_SETSIZE.
+
+\f
+Changes in 2.0.2 (since 2.0.1):
+
+* Notable changes
+
+** `guile-tools' renamed to `guild'
+
+The new name is shorter. Its intended future use is for a CPAN-like
+system for Guile wizards and journeyfolk to band together to share code;
+hence the name. `guile-tools' is provided as a backward-compatible
+symbolic link. See "Using Guile Tools" in the manual, for more.
+
+** New control operators: `shift' and `reset'
+
+See "Shift and Reset" in the manual, for more information.
+
+** `while' as an expression
+
+Previously the return value of `while' was unspecified. Now its
+values are specified both in the case of normal termination, and via
+termination by invoking `break', possibly with arguments. See "while
+do" in the manual for more.
+
+** Disallow access to handles of weak hash tables
+
+`hash-get-handle' and `hash-create-handle!' are no longer permitted to
+be called on weak hash tables, because the fields in a weak handle could
+be nulled out by the garbage collector at any time, but yet they are
+otherwise indistinguishable from pairs. Use `hash-ref' and `hash-set!'
+instead.
+
+** More precision for `get-internal-run-time', `get-internal-real-time'
+
+On 64-bit systems which support POSIX clocks, Guile's internal timing
+procedures offer nanosecond resolution instead of the 10-millisecond
+resolution previously available. 32-bit systems now use 1-millisecond
+timers.
+
+** Guile now measures time spent in GC
+
+`gc-stats' now returns a meaningful value for `gc-time-taken'.
+
+** Add `gcprof'
+
+The statprof profiler now exports a `gcprof' procedure, driven by the
+`after-gc-hook', to see which parts of your program are causing GC. Let
+us know if you find it useful.
+
+** `map', `for-each' and some others now implemented in Scheme
+
+We would not mention this in NEWS, as it is not a user-visible change,
+if it were not for one thing: `map' and `for-each' are no longer
+primitive generics. Instead they are normal bindings, which can be
+wrapped by normal generics. This fixes some modularity issues between
+core `map', SRFI-1 `map', and GOOPS.
+
+Also it's pretty cool that we can do this without a performance impact.
+
+** Add `scm_peek_byte_or_eof'.
+
+This helper is like `scm_peek_char_or_eof', but for bytes instead of
+full characters.
+
+** Implement #:stop-at-first-non-option option for getopt-long
+
+See "getopt-long Reference" in the manual, for more information.
+
+** Improve R6RS conformance for conditions in the I/O libraries
+
+The `(rnrs io simple)' module now raises the correct R6RS conditions in
+error cases. `(rnrs io ports)' is also more correct now, though it is
+still a work in progress.
+
+** All deprecated routines emit warnings
+
+A few deprecated routines were lacking deprecation warnings. This has
+been fixed now.
+
+* Speed improvements
+
+** Constants in compiled code now share state better
+
+Constants with shared state, like `("foo")' and `"foo"', now share state
+as much as possible, in the entire compilation unit. This cuts compiled
+`.go' file sizes in half, generally, and speeds startup.
+
+** VLists: optimize `vlist-fold-right', and add `vhash-fold-right'
+
+These procedures are now twice as fast as they were.
+
+** UTF-8 ports to bypass `iconv' entirely
+
+This reduces memory usage in a very common case.
+
+** Compiler speedups
+
+The compiler is now about 40% faster. (Note that this is only the case
+once the compiler is itself compiled, so the build still takes as long
+as it did before.)
+
+** VM speed tuning
+
+Some assertions that were mostly useful for sanity-checks on the
+bytecode compiler are now off for both "regular" and "debug" engines.
+This together with a fix to cache a TLS access and some other tweaks
+improve the VM's performance by about 20%.
+
+** SRFI-1 list-set optimizations
+
+lset-adjoin and lset-union now have fast paths for eq? sets.
+
+** `memq', `memv' optimizations
+
+These procedures are now at least twice as fast than in 2.0.1.
+
+* Deprecations
+
+** Deprecate scm_whash API
+
+`scm_whash_get_handle', `SCM_WHASHFOUNDP', `SCM_WHASHREF',
+`SCM_WHASHSET', `scm_whash_create_handle', `scm_whash_lookup', and
+`scm_whash_insert' are now deprecated. Use the normal hash table API
+instead.
+
+** Deprecate scm_struct_table
+
+`SCM_STRUCT_TABLE_NAME', `SCM_SET_STRUCT_TABLE_NAME',
+`SCM_STRUCT_TABLE_CLASS', `SCM_SET_STRUCT_TABLE_CLASS',
+`scm_struct_table', and `scm_struct_create_handle' are now deprecated.
+These routines formed part of the internals of the map between structs
+and classes.
+
+** Deprecate scm_internal_dynamic_wind
+
+The `scm_t_inner' type and `scm_internal_dynamic_wind' are deprecated,
+as the `scm_dynwind' API is better, and this API encourages users to
+stuff SCM values into pointers.
+
+** Deprecate scm_immutable_cell, scm_immutable_double_cell
+
+These routines are deprecated, as the GC_STUBBORN API doesn't do
+anything any more.
+
+* Manual updates
+
+Andreas Rottman kindly transcribed the missing parts of the `(rnrs io
+ports)' documentation from the R6RS documentation. Thanks Andreas!
+
+* Bugs fixed
+
+** Fix double-loading of script in -ds case
+** -x error message fix
+** iconveh-related cross-compilation fixes
+** Fix small integer return value packing on big endian machines.
+** Fix hash-set! in weak-value table from non-immediate to immediate
+** Fix call-with-input-file & relatives for multiple values
+** Fix `hash' for inf and nan
+** Fix libguile internal type errors caught by typing-strictness==2
+** Fix compile error in MinGW fstat socket detection
+** Fix generation of auto-compiled file names on MinGW
+** Fix multithreaded access to internal hash tables
+** Emit a 1-based line number in error messages
+** Fix define-module ordering
+** Fix several POSIX functions to use the locale encoding
+** Add type and range checks to the complex generalized vector accessors
+** Fix unaligned accesses for bytevectors of complex numbers
+** Fix '(a #{.} b)
+** Fix erroneous VM stack overflow for canceled threads
+
+\f
+Changes in 2.0.1 (since 2.0.0):
+
+* Notable changes
+
+** guile.m4 supports linking with rpath
+
+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.
+
+** `begin' expands macros in its body before other expressions
+
+This enables support for programs like the following:
+
+ (begin
+ (define even?
+ (lambda (x)
+ (or (= x 0) (odd? (- x 1)))))
+ (define-syntax odd?
+ (syntax-rules ()
+ ((odd? x) (not (even? x)))))
+ (even? 10))
+
+** REPL reader usability enhancements
+
+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'
+
+See "Fly Evaluation" in the manual.
+
+** Added `scm_from_latin1_keyword', `scm_from_utf8_keyword'
+
+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.
+
+** 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)'
+
+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.
+
+** Added `heap-allocated-since-gc' to `(gc-stats)'
+
+Also fixed the long-standing bug in the REPL `,stat' command.
+
+** Add `on-error' REPL option
+
+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.
+
+** Enforce immutability of string literals
+
+Attempting to mutate a string literal now causes a runtime error.
+
+** 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.
+
+** `string->pointer' and `pointer->string' have optional encoding arg
+
+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.
+
+** R6RS fixnum arithmetic optimizations
+
+R6RS fixnum operations are are still slower than generic arithmetic,
+however.
+
+** New procedure: `define-inlinable'
+
+See "Inlinable Procedures" in the manual, for more.
+
+** New procedure: `exact-integer-sqrt'
+
+See "Integer Operations" in the manual, for more.
+
+** "Extended read syntax" for symbols parses better
+
+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.
+
+** Added `--fresh-auto-compile' option
+
+This allows a user to invalidate the auto-compilation cache. It's
+usually not needed. See "Compilation" in the manual, for a discussion.
+
+* 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)': "R6RS I/O Ports", in the manual
+** `(ice-9 eval-string)': "Fly Evaluation", in the manual
+** `(ice-9 command-line)', not documented yet
+
+* Bugs fixed
+
+** 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
+** Gracefully handle `setlocale' errors when starting the REPL
+** Improve support of the `--disable-posix' configure option
+** Make sure R6RS binary ports pass `binary-port?' regardless of the locale
+** Gracefully handle unterminated UTF-8 sequences instead of hitting an `assert'