* convert.c: include <string.h> for convert_i.c.
[bpt/guile.git] / NEWS
diff --git a/NEWS b/NEWS
index eb766c7..dd3e4c1 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -6,14 +6,72 @@ 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
@@ -27,12 +85,20 @@ 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
+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__, __SCM_SRFI1314_IMPORT__, and
-__SCM_SRFI4_IMPORT__, for the corresponding libraries.
+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:
 
@@ -61,6 +127,11 @@ 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