Merge remote-tracking branch 'origin/stable-2.0'
[bpt/guile.git] / NEWS
diff --git a/NEWS b/NEWS
index 64a56d2..80b06fd 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -13,258 +13,308 @@ Reorder points in order of importance and make comprehensible
 
 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)