* convert.c: include <string.h> for convert_i.c.
[bpt/guile.git] / NEWS
diff --git a/NEWS b/NEWS
index d740f0a..dd3e4c1 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -6,19 +6,100 @@ Please send Guile bug reports to bug-guile@gnu.org.
 \f
 Changes since the stable branch:
 
+* Changes to the standalone interpreter
+
+** New command line option `--no-debug'.
+
+Specifying `--no-debug' on the command line will keep the debugging
+evaluator turned off, even for interactive sessions.
+
+** User-init file ~/.guile is now loaded with the debugging evaluator.
+
+Previously, the normal evaluator would have been used.  Using the
+debugging evaluator gives better error messages.
+
+* Changes to Scheme functions and syntax
+
+** We now have uninterned symbols.
+
+The new function 'make-symbol' will return a uninterned symbol.  This
+is a symbol that is unique and is guaranteed to remain unique.
+However, uninterned symbols can not yet be read back in.
+
+Use the new function 'symbol-interned?' to check whether a symbol is
+interned or not.
+
+** pretty-print has more options.
+
+The function pretty-print from the (ice-9 pretty-print) module can now
+also be invoked with keyword arguments that control things like
+maximum output width.  See its online documentation.
+
 ** Variables have no longer a special behavior for `equal?'.
 
 Previously, comparing two variables with `equal?' would recursivly
 compare their values.  This is no longer done.  Variables are now only
 `equal?' if they are `eq?'.
 
+** `(begin)' is now valid.
+
+You can now use an empty `begin' form.  It will yield #<unspecified>
+when evaluated and simply be ignored in a definition context.
+
+** Removed: substring-move-left!, substring-move-right!
+
+Use `substring-move!' instead.
+
 * Changes to the C interface
 
+** New functions for memory management
+
+A new set of functions for memory management has been added since the
+old way (scm_must_malloc, scm_must_free, etc) was error prone and
+indeed, Guile itself contained some long standing bugs that could
+cause aborts in long running programs.
+
+The new functions are more symmetrical and do not need cooperation
+from smob free routines, among other improvements.
+
+The new functions are scm_malloc, scm_realloc, scm_strdup,
+scm_strndup, scm_gc_malloc, scm_gc_realloc, scm_gc_free,
+scm_gc_register_collectable_memory, and
+scm_gc_unregister_collectable_memory.  Refer to the manual for more
+details and for upgrading instructions.
+
+The old functions for memory management have been deprecated.  They
+are: scm_must_malloc, scm_must_realloc, scm_must_free,
+scm_must_strdup, scm_must_strndup, scm_done_malloc, scm_done_free.
+
 ** New function: scm_str2string
 
 This function creates a scheme string from a 0-terminated C string.  The input
 string is copied.
 
+** Declarations of exported features are marked with SCM_API.
+
+Every declaration of a feature that belongs to the exported Guile API
+has been marked by adding the macro "SCM_API" to the start of the
+declaration.  This macro can expand into different things, the most
+common of which is just "extern" for Unix platforms.  On Win32, it can
+be used to control which symbols are exported from a DLL.
+
+If you `#define SCM_IMPORT' before including <libguile.h>, SCM_API
+will expand into "__declspec (dllimport) extern", which is needed for
+linking to the Guile DLL in Windows.
+
+There are also SCM_RL_IMPORT, QT_IMPORT, SCM_SRFI1314_IMPORT, and
+SCM_SRFI4_IMPORT, for the corresponding libraries.
+
+** SCM_NEWCELL and SCM_NEWCELL2 have been deprecated.
+
+Use the new functions scm_alloc_cell and scm_alloc_double_cell
+instead.  The old macros had problems because with them allocation and
+initialization was separated and the GC could sometimes observe half
+initialized cells.  Only careful coding by the user of SCM_NEWCELL and
+SCM_NEWCELL2 could make this safe and efficient.
+
 Changes since Guile 1.4:
 
 * Changes to the distribution
@@ -46,12 +127,24 @@ micro version number.
 
 In addition, ./GUILE-VERSION now defines GUILE_MICRO_VERSION.
 
+** New preprocessor definitions are available for checking versions.
+
+version.h now #defines SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
+SCM_MICRO_VERSION to the appropriate integer values.
+
 ** Guile now actively warns about deprecated features.
 
 The new configure option `--enable-deprecated=LEVEL' and the
 environment variable GUILE_WARN_DEPRECATED control this mechanism.
 See INSTALL and README for more information.
 
+** Guile is much more likely to work on 64-bit architectures.
+
+Guile now compiles and passes "make check" with only two UNRESOLVED GC
+cases on Alpha and ia64 based machines now.  Thanks to John Goerzen
+for the use of a test machine, and thanks to Stefan Jahn for ia64
+patches.
+
 ** New functions: setitimer and getitimer.
 
 These implement a fairly direct interface to the libc functions of the
@@ -1186,13 +1279,27 @@ intended to be used in user code.  You should avoid dealing with
 bignums directly, and should deal with numbers in general (which can
 be bignums).
 
+** Change in behavior: scm_num2long, scm_num2ulong
+
+The scm_num2[u]long functions don't any longer accept an inexact
+argument.  This change in behavior is motivated by concordance with
+R5RS: It is more common that a primitive doesn't want to accept an
+inexact for an exact.
+
 ** New functions: scm_short2num, scm_ushort2num, scm_int2num,
    scm_uint2num, scm_size2num, scm_ptrdiff2num, scm_num2short,
    scm_num2ushort, scm_num2int, scm_num2uint, scm_num2ptrdiff,
    scm_num2size.
 
 These are conversion functions between the various ANSI C integral
-types and Scheme numbers.
+types and Scheme numbers.  NOTE: The scm_num2xxx functions don't
+accept an inexact argument.
+
+** New functions: scm_float2num, scm_double2num,
+   scm_num2float, scm_num2double.
+
+These are conversion functions between the two ANSI C float types and
+Scheme numbers.
 
 ** New number validation macros:
    SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,INT,UINT}[_DEF]