* Changes to the distribution
+** A top-level TODO file is included.
+
** Guile now uses a versioning scheme similar to that of the Linux kernel.
Guile now always uses three numbers to represent the version,
environment variable GUILE_WARN_DEPRECATED control this mechanism.
See INSTALL and README for more information.
+** New functions: setitimer and getitimer.
+
+These implement a fairly direct interface to the libc functions of the
+same name.
+
+** The #. reader extension is now disabled by default.
+
+For safety reasons, #. evaluation is disabled by default. To
+re-enable it, set the fluid read-eval? to #t. For example:
+
+ (fluid-set read-eval? #t)
+
+but make sure you realize the potential security risks involved. With
+read-eval? enabled, reading a data file from an untrusted source can
+be dangerous.
+
** New SRFI modules have been added:
SRFI-0 `cond-expand' is now supported in Guile, without requiring
using a module.
+(srfi srfi-1) is a library containing many useful pair- and list-processing
+ procedures.
+
(srfi srfi-2) exports and-let*.
+(srfi srfi-4) implements homogeneous numeric vector datatypes.
+
(srfi srfi-6) is a dummy module for now, since guile already provides
all of the srfi-6 procedures by default: open-input-string,
open-output-string, get-output-string.
** New module (ice-9 rw)
This is a subset of the (scsh rw) module from guile-scsh. Currently
-it defines a single procedure:
+it defines two procedures:
*** New function: read-string!/partial str [port_or_fdes [start [end]]]
- Read characters from an fport or file descriptor into a string
- STR. This procedure is scsh-compatible and can efficiently read
+ Read characters from a port or file descriptor into a string STR.
+ A port must have an underlying file descriptor -- a so-called
+ fport. This procedure is scsh-compatible and can efficiently read
large strings.
+*** New function: write-string/partial str [port_or_fdes [start [end]]]
+
+ Write characters from a string STR to a port or file descriptor.
+ A port must have an underlying file descriptor -- a so-called
+ fport. This procedure is mostly compatible and can efficiently
+ write large strings.
+
** New module (ice-9 match)
This module includes Andrew K. Wright's pattern matcher. See
for complete documentation.
-This module requires SLIB to be installed and available from Guile.
-
** New module (ice-9 buffered-input)
This module provides procedures to construct an input port from an
See the README file in the `doc' directory for more details.
+** There are a couple of examples in the examples/ directory now.
+
* Changes to the stand-alone interpreter
** New command line option `--use-srfi'
guile> (string-pad "bla" 20)
" bla"
+** Guile now always starts up in the `(guile-user)' module.
+
+Previously, scripts executed via the `-s' option would run in the
+`(guile)' module and the repl would run in the `(guile-user)' module.
+Now every user action takes place in the `(guile-user)' module by
+default.
* Changes to Scheme functions and syntax
behave just like `define' and `defmacro', respectively, when they are
used in a lexical environment.
+Also, `export' will no longer silently re-export bindings imported
+from a used module. It will emit a `deprecation' warning and will
+cease to perform any re-export in the next version. If you actually
+want to re-export bindings, use the new `re-export' in place of
+`export'. The new `re-export' will not make copies of variables when
+rexporting them, as `export' did wrongly.
+
** The semantics of guardians have changed.
The changes are for the most part compatible. An important criterion
* Changes to the C interface
-** Deprecated feature have been removed.
+** Types have been renamed from scm_*_t to scm_t_*.
+
+This has been done for POSIX sake. It reserves identifiers ending
+with "_t". What a concept.
+
+The old names are still available with status `deprecated'.
+
+** scm_t_bits (former scm_bits_t) is now a unsigned type.
+
+** Deprecated features have been removed.
*** Macros removed
scm_tc_dblc - replaced by scm_tc16_complex.
scm_list_star - replaced by scm_cons_star.
+** Deprecated: scm_makfromstr
+
+Use scm_mem2string instead.
+
** Deprecated: scm_make_shared_substring
Explicit shared substrings will disappear from Guile.
Instead, use scm_c_memq or scm_memq, scm_memv, scm_member.
+** New functions: scm_call_0, scm_call_1, scm_call_2, scm_call_3
+
+Call a procedure with the indicated number of arguments.
+
+Example:
+
+ scm_call_1 (proc, arg1);
+
+** New functions: scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3
+
+Call a procedure with the indicated number of arguments and a list
+of arguments.
+
+Example:
+
+ scm_apply_1 (proc, arg1, args);
+
+** New functions: scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5
+
+Create a list of the given number of elements.
+
+** Renamed function: scm_listify has been replaced by scm_list_n.
+
+** Deprecated macros: SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4,
+SCM_LIST5, SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9.
+
+Use functions scm_list_N instead.
+
** New function: scm_c_read (SCM port, void *buffer, scm_sizet size)
Used by an application to read arbitrary number of bytes from a port.
** Deprecated functions: scm_mkbig, scm_big2num, scm_adjbig,
scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl
-With the exception of the misterious scm_2ulong2big, they are still
+With the exception of the mysterious scm_2ulong2big, they are still
available under new names (scm_i_mkbig etc). These functions are not
intended to be used in user code. You should avoid dealing with
bignums directly, and should deal with numbers in general (which can
See above.
+** New functions: scm_gc_protect_object, scm_gc_unprotect_object
+
+These are just nicer-named old scm_protect_object and
+scm_unprotect_object.
+
+** Deprecated functions: scm_protect_object, scm_unprotect_object
+
+** New functions: scm_gc_[un]register_root, scm_gc_[un]register_roots
+
+These functions can be used to register pointers to locations that
+hold SCM values.
+
+** Deprecated function: scm_create_hook.
+
+Its sins are: misleading name, non-modularity and lack of general
+usefulness.
+
\f
Changes since Guile 1.3.4: