Assemble thanks
-* Notable changes
-
-** guile.m4 allows selection of guile 2.0, 1.8, etc.
+file name docs
-Also GUILE_PKG; see "Autoconf Macros" in manual
+gnulib version
-** more efficient scm_gcd of inums
+--language docs
- Optimize and simplify fractions code.
-
- Simplify and improve scm_i_big2dbl
-
- Optimize logarithms
+* Notable changes
- Reimplement 'inexact->exact' to avoid mpq functions.
+** New guile.m4.
-** mingw
+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).
-many, many bugs.
+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.
-remove special ifdefs, given gnulib
+** Better Windows support.
-windows file names handled correctly
+Guile now correctly identifies absolute paths on Windows (MinGW), and
+creates files on that platform according to its path conventions. See
+XXX in the manual, for all details.
-don't provide scm_std_select on mingw and similar platforms
-
-If we do not have sys/select.h, don't provide scm_std_select,
-SELECT_TYPE, FD_SET, FD_ZERO, FD_ISSET, or FD_CLR. Guile should not be
-setting these macros in public API. This is an incompatible change on
-mingw, but oh well.
+In addition, the new Gnulib imports provide `select' and `poll' on
+Windows builds.
-** gnulib imports
+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 interface. Guile
+should not be setting these macros in public API, so this interface was
+removed on those plaforms (basically only MinGW).
-select, times, pipe-posix, fstat, getlogin, poll
+** Gnulib update.
-** optimize access to arrays of rank 1 or 2
+Guile's copy of Gnulib was updated to XXX. The following modules were
+imported from Gnulib: select, times, pipe-posix, fstat, getlogin, and
+poll.
-** peval improvements
+** New optimizations.
-inlining of ((let ((_ 10)) (lambda () _)))
+There were a number of improvements to the partial evaluator, allowing
+complete reduction of forms such as:
-inlining of ((lambda _ _))
+ ((let ((_ 10)) (lambda () _)))
-inlining of (apply (lambda _) 1 2 3 4)
+ ((lambda _ _))
-inlining of (call-with-values (lambda () (values 1 2)) (lambda _ _))
+ (apply (lambda _) 1 2 3 4)
-** `include' relative paths relative to including file
+ (call-with-values (lambda () (values 1 2)) (lambda _ _))
-Local Inclusion
+A number (ahem) of numeric operations on have been made faster, among
+them GCD and logarithms.
-** slib compatibility
+Finally, `array-ref' and `array-set!' on arrays of rank 1 or 2 is now
+faster, because it avoids building a rest list.
-** warn on multithreaded fork
+** `include' resolves relative file names relative to including file.
-** trace: limit length of "| | | "... prefix
+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'.
-see docs for ",trace"
+** SLIB compatibility restored.
-** Update predefined character sets to Unicode 6.2
+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.
-* Manual updates
+** Better ,trace REPL command.
-** excise use of "iff" in the manual
+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.
-** Improve keyword notation of Texinfo function definitions.
+** Update predefined character sets to Unicode 6.2.
-** arrays
+* Manual updates
-Document scm_array_type(), scm_array_ref(), array-length,
-scm_array_length(), scm_c_array_length().
+** Better SXML documentation.
-Fix wording of documentation for array-in-bounds?
+The documentation for SXML modules was much improved, though there is
+still far to go. See "SXML" in manual.
-** better sxml docs
+** Style updates.
-"SXML" in manual
+Use of "iff" was replaced with standard English. Keyword arguments are
+now documented consistently, along with their default values.
-** updates
+** An end to the generated-documentation experiment.
-scm_new_smob instead of SCM_NEWSMOB / SCM_RETURN_NEWSMOB.
-procedural interface to vectors (scm_c_vector_ref et al).
+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.
-replace old foreign->bytevector and bytevector->foreign with the new
-procedure names using pointer.
+** New documentation.
-** an end to the generated-documentation experiment
+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. Finally, the GOOPS
+class hierarchy diagram has been regenerated for the web and print
+output formats.
-** document program-arguments-alist and program-lambda-list
+* New deprecations
-** update GOOPS class hierarchy diagram in web and pdf
+** Deprecate generalized vector interface.
-* New deprecations
+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.
-** (ice-9 mapping)
+** Deprecate SCM_CHAR_CODE_LIMIT and char-code-limit.
-** Deprecate generalized vector interface
+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.
-scm_generalized_vector_p, scm_generalized_vector_length,
-scm_generalized_vector_ref, scm_generalized_vector_set_x,
-scm_generalized_vector_to_list
+** Deprecate `http-get*'.
-** deprecate SCM_CHAR_CODE_LIMIT and char-code-limit
+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 http-get*
+** Deprecate (ice-9 mapping).
-The #:streaming? argument subsumes the functionality of http-get*. Also
-deprecate #:extra-headers argument in favor of #:headers.
+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.
* New interfaces
-** round-ash
-
-"Bitwise Operations"
+** `round-ash', a bit-shifting operator that rounds on right-shift.
-** GUILE_STACK_SIZE
+See "Bitwise Operations".
-"Environment Variables"
+** New environment variables: `GUILE_STACK_SIZE', `GUILE_INSTALL_LOCALE'.
-** GUILE_INSTALL_LOCALE
+See "Environment Variables".
-"Environment Variables"
+** New procedure `sendfile'.
-** file names
+See "File System".
-system-file-name-convention, file-name-separator?,
-absolute-file-name? file-name-separator-string
+** New procedures for dealing with file names.
-missing docs
+See XXX for documentation on `system-file-name-convention',
+`file-name-separator?', `absolute-file-name?', and
+`file-name-separator-string'.
-** array-length
+** `array-length', an array's first dimension.
-Array Procedures
+See "Array Procedures".
-** add hash-count for native tables
+** `hash-count', for hash tables.
-Hash Tables
+See "Hash Tables".
-** Add foreign types: ssize_t and ptrdiff_t.
+** New foreign types: `ssize_t', `ptrdiff_t'.
-Foreign Types
+See "Foreign Types".
-** Add scm_from_ptrdiff_t and scm_to_ptrdiff_t.
+** New C helpers: `scm_from_ptrdiff_t', `scm_to_ptrdiff_t'.
-Integers
+See "Integers".
-** much more capable xml->sxml
+** Much more capable `xml->sxml'
-namespaces, processed entities, doctypes, literal strings... see
-"Reading and Writing XML"
+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.
-** add --language argument to guile
+** New command-line argument: `--language'
-needs docs
+See XXX in the manual.
-** current-language is a parameter in boot-9
+** `current-language' in default environment.
-Compiler Tower; repl, compile-and-load default to current language
+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'.
-** add fluid->parameter
+** New procedure: `fluid->parameter'
-Parameters in manual
+See "Parameters", for information on how to convert a fluid to a
+parameter.
-** add read-string and read-string! to (ice-9 rdelim)
+** New procedures to read all characters from a port
-Line/Delimited in manual
+See "Line/Delimited" in the manual for documentation on `read-string'
+ and `read-string!'.
-** http-head, http-post, http-put, http-delete, http-trace http-options
+** New HTTP client procedures.
-"Web Client"
+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'.
-** add bytevector->string and string->bytevector in new (ice-9 iconv) module
+** New procedures for converting strings to and from bytevectors.
-"Representing Strings as Bytes"
-
-** add repl-option for customized print
+See "Representing Strings as Bytes" for documention on the new `(ice-9
+iconv)' module and its `bytevector->string' and `string->bytevector'
+procedures.
-"REPL Commands" in the manual (,option print ...)
+** New `print' REPL option.
-** current-ssax-error-port is a parameter
+See "REPL Commands" in the manual for information on the new
+user-customizable REPL printer.
-** %site-ccache-dir
+** New variable: %site-ccache-dir.
-"Installing Site Packages", "Build Config"
+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
-** Use accessors instead of symbols deprecated in libgc 7.3.
+** Fix compilation against libgc 7.3.
** Fix cross-compilation of `c-tokenize.o'.
-** tests: Avoid missing missing-prototype warning with <fenv.h> on glibc 2.17.
-** doc: Fix build with Texinfo 5.0.
-** GUILE_INSTALL_LOCALE=1 during build
- (http://bugs.gnu.org/12887)
-** if we have threads on windows, we have pthreads; inform bdw-gc of that
+** 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
-** allow for spurious wakeups from pthread_cond_wait
+** SRFI-37: Fix infinite loop when parsing optional-argument short options
+ (http://bugs.gnu.org/13176)
+** web: Support non-GMT date headers in the HTTP client
+ (http://bugs.gnu.org/13544)
+** Avoid stack overflows with `par-map' and nested futures in general
+ (http://bugs.gnu.org/13188)
+** 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)
-** fix psyntax vs autoload
+** Warn and ignore module autoload failures.
(http://bugs.gnu.org/12202)
-** use chmod portably in (system base compile)
-** fix response-body-port for responses without content-length
-** allow case-lambda expressions with no clauses
+** Use chmod portably in (system base compile).
+ (http://bugs.gnu.org/10474)
+** Fix response-body-port for 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
+** 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
+** 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 the SMOB mark procedures to be called when libgc uses parallel markers.
+** 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.
-** Let reverse! accept arbitrary types as second argument (new_tail)
+ (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.
-** remove language/glil/decompile-assembly.scm
-** random_state_of_last_resort doesn't rely on HAVE_POSIX
-** copy-file, load-objcode, mkstemp use O_BINARY
-** fix compilation of functions with more than 255 local variables.
+** Remove language/glil/decompile-assembly.scm.
+ (http://bugs.gnu.org/10622)
+** Use O_BINARY in `copy-file', `load-objcode', `mkstemp'.
+** Fix compilation of functions with more than 255 local variables.
** Fix `getgroups' for when zero supplementary group IDs exist.
-** allow (define-macro name (lambda ...))
-** (texinfo): add a command-spec for @math{}.
-** (texinfo docbook): informaltable is a block element.
-** (texinfo plain-text): Pass @math{} through as-is.
-** (texinfo serialize): don't break words when wrapping
+** Allow (define-macro name (lambda ...)).
+** Various fixes to the (texinfo) modules.
** guild: Gracefully handle failures to install the locale.
-** Fix argument count for various format string escape sequences (in warning pass)
+** 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.
-** fix try-module-autoload, which did not detect failure to find the file
-
-file not found vs failure to load module.
-
-** Many (oop goops save) fixes
-** http-get: don't shutdown write end of socket
-** Avoid signed integer overflow in scm_product
-** http: read-response-body always returns bytevector or #f (not EOF in one case)
+** Ecmascript: Fix conversion to boolean for non-numbers.
+** 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 (not EOF in one case).
** 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; see "Case-Lambda" in the manual)
+ (http://bugs.gnu.org/12929)
** Do not defer expansion of internal define-syntax forms.
(http://bugs.gnu.org/13509)