1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-20 19:50:24 +02:00

Update 'NEWS'.

This commit is contained in:
Mark H Weaver 2013-04-07 17:47:44 -04:00
parent e0886e0780
commit eed0d26cc0

259
NEWS
View file

@ -9,13 +9,30 @@ Changes in 2.0.8 (since 2.0.7):
* TODO * TODO
Reorder points in order of importance and make comprehensible ** Reorder points in order of importance and make comprehensible
Assemble thanks ** Document recent improvements to array code
** Possible entries for Bug Fixes
*** Fixes for Mingw (Andy?)
*** Fix for FreeBSD with threads(?)
** Assemble thanks
* Notable changes * Notable changes
** New guile.m4. ** New keyword arguments for procedures that open files
Several procedures that open files now support keyword arguments to
request binary I/O or to specify the character encoding for text files.
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.
** New guile.m4
The `guile.m4' autoconf macros have been rewritten to use `guild' and The `guile.m4' autoconf macros have been rewritten to use `guild' and
`pkg-config' instead of the deprecated `guile-config' (which itself `pkg-config' instead of the deprecated `guile-config' (which itself
@ -25,7 +42,7 @@ 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 the version of Guile that they want to compile against. See "Autoconf
Macros" in the manual, for more information. Macros" in the manual, for more information.
** Better Windows support. ** Better Windows support
Guile now correctly identifies absolute paths on Windows (MinGW), and Guile now correctly identifies absolute paths on Windows (MinGW), and
creates files on that platform according to its path conventions. See creates files on that platform according to its path conventions. See
@ -41,13 +58,24 @@ definitions for FD_SET, FD_ZERO, and other system interface. Guile
should not be setting these macros in public API, so this interface was should not be setting these macros in public API, so this interface was
removed on those plaforms (basically only MinGW). removed on those plaforms (basically only MinGW).
** Gnulib update. ** Numerics improvements
Guile's copy of Gnulib was updated to v0.0-7865-ga828bb2. The following `number->string' now reliably outputs enough digits to produce the same
modules were imported from Gnulib: select, times, pipe-posix, fstat, number when read back in. Previously, it mishandled subnormal numbers
getlogin, and poll. (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.
** New optimizations. `sqrt' now produces exact rational results when possible, and handles
very large or very small numbers more robustly.
Operations involving exact rationals have been optimized, most notably
`integer-expt' and `expt'.
`exact->inexact' now guarantees correct IEEE rounding.
** New optimizations
There were a number of improvements to the partial evaluator, allowing There were a number of improvements to the partial evaluator, allowing
complete reduction of forms such as: complete reduction of forms such as:
@ -60,34 +88,60 @@ complete reduction of forms such as:
(call-with-values (lambda () (values 1 2)) (lambda _ _)) (call-with-values (lambda () (values 1 2)) (lambda _ _))
A number (ahem) of numeric operations on have been made faster, among `string-join' now handles huge lists efficiently.
them GCD and logarithms.
`get-bytevector-some' is much faster.
Finally, `array-ref', `array-set!' on arrays of rank 1 or 2 is now Finally, `array-ref', `array-set!' on arrays of rank 1 or 2 is now
faster, because it avoids building a rest list. Similarly, the faster, because it avoids building a rest list. Similarly, the
one-argument case of `array-for-each' and `array-map!' has been one-argument case of `array-for-each' and `array-map!' has been
optimized, and `array-copy!' and `array-fill!' are faster. optimized, and `array-copy!' and `array-fill!' are faster.
** `include' resolves relative file names relative to including file. ** 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 Given a relative file name, `include' will look for it relative to the
directory of the including file. This harmonizes the behavior of directory of the including file. This harmonizes the behavior of
`include' with that of `load'. `include' with that of `load'.
** SLIB compatibility restored. ** SLIB compatibility restored
Guile 2.0.8 is now compatible with SLIB. You will have to use a 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 development version of SLIB, however, until a new version of SLIB is
released. released.
** Better ,trace REPL command. ** Better ,trace REPL command
Sometimes the ,trace output for nested function calls could overflow the 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 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 of space the prefix will take. See the documentation for ",trace" for
more information. more information.
** Update predefined character sets to Unicode 6.2. ** 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.
** `get-bytevector-some' much faster; may read less than possible
`get-bytevector-some' has been made much faster, but may now read less
than possible, in accordance with the R6RS definition.
** SRFI-45 exports `promise?'; promises print more nicely
SRFI-45 now exports a `promise?' procedure that works with its promises,
and its promises print more nicely.
** 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 ** GMP 4.2 or later required
@ -96,17 +150,17 @@ and now requires at least version 4.2 (released in March 2006).
* Manual updates * Manual updates
** Better SXML documentation. ** Better SXML documentation
The documentation for SXML modules was much improved, though there is The documentation for SXML modules was much improved, though there is
still far to go. See "SXML" in manual. still far to go. See "SXML" in manual.
** Style updates. ** Style updates
Use of "iff" was replaced with standard English. Keyword arguments are Use of "iff" was replaced with standard English. Keyword arguments are
now documented consistently, along with their default values. now documented consistently, along with their default values.
** An end to the generated-documentation experiment. ** An end to the generated-documentation experiment
When Guile 2.0 imported some modules from Guile-Lib, they came with a When Guile 2.0 imported some modules from Guile-Lib, they came with a
system that generated documentation from docstrings and module system that generated documentation from docstrings and module
@ -115,19 +169,20 @@ 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 improving them manually over time, as is the case with SXML. Help is
appreciated. appreciated.
** New documentation. ** New documentation
There is now documentation for `scm_array_type', and `scm_array_ref', as There is now documentation for `scm_array_type', and `scm_array_ref', as
well as for the new `array-length' / 'scm_c_array_length' / well as for the new `array-length' / 'scm_c_array_length' /
`scm_array_length' functions. `array-in-bounds?' has better `scm_array_length' functions. `array-in-bounds?' has better
documentation as well. The `program-arguments-alist' and documentation as well. The `program-arguments-alist' and
`program-lambda-list' functions are now documented. Finally, the GOOPS `program-lambda-list' functions are now documented, as well as `and=>',
class hierarchy diagram has been regenerated for the web and print `exit', and `quit'. The (system repl server) module is now documented
output formats. (see REPL Servers). Finally, the GOOPS class hierarchy diagram has been
regenerated for the web and print output formats.
* New deprecations * New deprecations
** Deprecate generalized vector interface. ** Deprecate generalized vector interface
The generalized vector interface, introduced in 1.8.0, is simply a The generalized vector interface, introduced in 1.8.0, is simply a
redundant, verbose interface to arrays of rank 1. `array-ref' and redundant, verbose interface to arrays of rank 1. `array-ref' and
@ -136,71 +191,42 @@ similar functions are entirely sufficient. Thus,
`scm_generalized_vector_ref', `scm_generalized_vector_set_x', and `scm_generalized_vector_ref', `scm_generalized_vector_set_x', and
`scm_generalized_vector_to_list' are now deprecated. `scm_generalized_vector_to_list' are now deprecated.
** Deprecate SCM_CHAR_CODE_LIMIT and char-code-limit. ** Deprecate SCM_CHAR_CODE_LIMIT and char-code-limit
These constants were defined to 256, which is not the highest codepoint These constants were defined to 256, which is not the highest codepoint
supported by Guile. Given that they were useless and incorrect, they supported by Guile. Given that they were useless and incorrect, they
have been deprecated. have been deprecated.
** Deprecate `http-get*'. ** Deprecate `http-get*'
The new `#:streaming?' argument to `http-get' subsumes the functionality The new `#:streaming?' argument to `http-get' subsumes the functionality
of `http-get*' (introduced in 2.0.7). Also, the `#:extra-headers' of `http-get*' (introduced in 2.0.7). Also, the `#:extra-headers'
argument is deprecated in favor of `#:headers'. argument is deprecated in favor of `#:headers'.
** Deprecate (ice-9 mapping). ** Deprecate (ice-9 mapping)
This module, present in Guile since 1996 but never used or documented, 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 has never worked in Guile 2.0. It has now been deprecated and will be
removed in Guile 2.2. removed in Guile 2.2.
** Deprecate undocumented array-related C functions. ** Deprecate undocumented array-related C functions
These are `scm_array_fill_int', `scm_ra_eqp', `scm_ra_lessp', 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_leqp', `scm_ra_grp', `scm_ra_greqp', `scm_ra_sum',
`scm_ra_product', `scm_ra_difference', `scm_ra_divide', and `scm_ra_product', `scm_ra_difference', `scm_ra_divide', and
`scm_array_identity'. `scm_array_identity'.
* New interfaces * New interfaces
** `round-ash', a bit-shifting operator that rounds on right-shift. ** SRFI-41 Streams
See "Bitwise Operations". See "SRFI-41" in the manual.
** New environment variables: `GUILE_STACK_SIZE', `GUILE_INSTALL_LOCALE'. ** New HTTP client procedures
See "Environment Variables". See "Web Client" for documentation on the new `http-head', `http-post',
`http-put', `http-delete', `http-trace', and `http-options' procedures,
** New procedure `sendfile'. and also for more options to `http-get'.
See "File System".
** 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'.
** Escape continuations with `call/ec' and `let/ec'
See "Prompt Primitives".
** `array-length', an array's first dimension.
See "Array Procedures".
** `hash-count', for hash tables.
See "Hash Tables".
** New foreign types: `ssize_t', `ptrdiff_t'.
See "Foreign Types".
** New C helpers: `scm_from_ptrdiff_t', `scm_to_ptrdiff_t'.
See "Integers".
** Much more capable `xml->sxml' ** Much more capable `xml->sxml'
@ -209,11 +235,73 @@ parser deals with namespaces, processed entities, doctypes, and literal
strings. Incidentally, `current-ssax-error-port' is now a parameter strings. Incidentally, `current-ssax-error-port' is now a parameter
object. object.
** New command-line argument: `--language'. ** 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. See "Command-line Options" in the manual.
** `current-language' in default environment. ** 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' Previously defined only in `(system base language)', `current-language'
is now defined in the default environment, and is used to determine the is now defined in the default environment, and is used to determine the
@ -224,29 +312,12 @@ language for the REPL, and for `compile-and-load'.
See "Parameters", for information on how to convert a fluid to a See "Parameters", for information on how to convert a fluid to a
parameter. parameter.
** New procedures to read all characters from a port ** New `print' REPL option
See "Line/Delimited" in the manual for documentation on `read-string'
and `read-string!'.
** 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'.
** 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.
** New `print' REPL option.
See "REPL Commands" in the manual for information on the new See "REPL Commands" in the manual for information on the new
user-customizable REPL printer. user-customizable REPL printer.
** New variable: %site-ccache-dir. ** New variable: %site-ccache-dir
The "Installing Site Packages" and "Build Config" manual sections now The "Installing Site Packages" and "Build Config" manual sections now
refer to this variable to describe where users should install their refer to this variable to describe where users should install their
@ -265,12 +336,18 @@ refer to this variable to describe where users should install their
* Bug fixes * Bug fixes
** SRFI-37: Fix infinite loop when parsing optional-argument short options ** 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) (http://bugs.gnu.org/13176)
** web: Support non-GMT date headers in the HTTP client ** web: Support non-GMT date headers in the HTTP client.
(http://bugs.gnu.org/13544) (http://bugs.gnu.org/13544)
** Avoid stack overflows with `par-map' and nested futures in general ** 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) (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. ** A fork when multiple threads are running will now print a warning.
** Allow for spurious wakeups from pthread_cond_wait. ** Allow for spurious wakeups from pthread_cond_wait.
(http://bugs.gnu.org/10641) (http://bugs.gnu.org/10641)
@ -305,9 +382,13 @@ refer to this variable to describe where users should install their
** Recognize the `x86_64.*-gnux32' triplet. ** Recognize the `x86_64.*-gnux32' triplet.
** Check whether a triplet's OS part specifies an ABI. ** Check whether a triplet's OS part specifies an ABI.
** Recognize mips64* as having 32-bit pointers by default. ** Recognize mips64* as having 32-bit pointers by default.
** Use portable sed constructs.
(http://bugs.gnu.org/14042)
** Remove language/glil/decompile-assembly.scm. ** Remove language/glil/decompile-assembly.scm.
(http://bugs.gnu.org/10622) (http://bugs.gnu.org/10622)
** Use O_BINARY in `copy-file', `load-objcode', `mkstemp'. ** 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 compilation of functions with more than 255 local variables.
** Fix `getgroups' for when zero supplementary group IDs exist. ** Fix `getgroups' for when zero supplementary group IDs exist.
** Allow (define-macro name (lambda ...)). ** Allow (define-macro name (lambda ...)).
@ -317,6 +398,8 @@ refer to this variable to describe where users should install their
(http://bugs.gnu.org/13485) (http://bugs.gnu.org/13485)
** Fix source annotation bug in psyntax 'expand-body'. ** Fix source annotation bug in psyntax 'expand-body'.
** Ecmascript: Fix conversion to boolean for non-numbers. ** 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. ** A failure to find a module's file does not prevent future loading.
** Many (oop goops save) fixes. ** Many (oop goops save) fixes.
** `http-get': don't shutdown write end of socket. ** `http-get': don't shutdown write end of socket.
@ -324,9 +407,9 @@ refer to this variable to describe where users should install their
** Avoid signed integer overflow in scm_product. ** Avoid signed integer overflow in scm_product.
** http: read-response-body always returns bytevector or #f, never EOF. ** http: read-response-body always returns bytevector or #f, never EOF.
** web: Correctly detect "No route to host" conditions. ** web: Correctly detect "No route to host" conditions.
** `system*': failure to execvp no longer leaks dangling processes ** `system*': failure to execvp no longer leaks dangling processes.
(http://bugs.gnu.org/13166) (http://bugs.gnu.org/13166)
** More sensible case-lambda* dispatch ** More sensible case-lambda* dispatch.
(http://bugs.gnu.org/12929) (http://bugs.gnu.org/12929)
** Do not defer expansion of internal define-syntax forms. ** Do not defer expansion of internal define-syntax forms.
(http://bugs.gnu.org/13509) (http://bugs.gnu.org/13509)