* backtrace.c (display_expression, display_frame): Call
[bpt/guile.git] / NEWS
diff --git a/NEWS b/NEWS
index c8aff5b..c348cf2 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -18,6 +18,8 @@ Changes since the stable branch:
 
 ** Guile is now licensed with the GNU Lesser General Public License.
 
+** The manual is now licensed with the GNU Free Documentation License.
+
 ** Guile now requires GNU MP (http://swox.com/gmp).
 
 Guile now uses the GNU MP library for arbitrary precision arithmetic.
@@ -112,6 +114,15 @@ form around the code performing the heavy computations (typically a
 C code primitive), enabling the computations to run in parallel
 while the scripting code runs single-threadedly.
 
+** New module (srfi srfi-26)
+
+This is an implementation of SRFI-26.
+
+** New module (srfi srfi-31)
+
+This is an implementation of SRFI-31 which provides a special form
+`rec' for recursive evaluation.
+
 ** Guile now includes its own version of libltdl.
 
 We now use a modified version of libltdl that allows us to make
@@ -510,7 +521,7 @@ interned or not.
 
 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.
+maximum output width.  See the manual for details.
 
 ** Variables have no longer a special behavior for `equal?'.
 
@@ -571,6 +582,10 @@ order described by the SRFI-1 specification
 
 list-copy now accepts improper lists, per the specification.
 
+** SRFI-4 fixes
+
+Larger values in 64-bit vectors should print correctly now.
+
 ** SRFI-19 fixes
 
 date-week-number now correctly respects the requested day of week
@@ -578,42 +593,97 @@ starting the week.
 
 * Changes to the C interface
 
+** SCM_CELL_WORD_LOC has been deprecated.
+
+Use the new macro SCM_CELL_OBJECT_LOC instead, which return a pointer
+to a SCM, as opposed to a pointer to a scm_t_bits.
+
+This was done to allow the correct use of pointers into the Scheme
+heap.  Previously, the heap words were of type scm_t_bits and local
+variables and function arguments were of type SCM, making it
+non-standards-conformant to have a pointer that can point to both.
+
+** New macros SCM_SMOB_DATA_2, SM_SMOB_DATA_3, etc.
+
+These macros should be used instead of SCM_CELL_WORD_2/3 to access the
+second and third words of double smobs.  Likewise for
+SCM_SET_SMOB_DATA_2 and SCM_SET_SMOB_DATA_3.
+
+Also, there is SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS that should be
+used to get and set the 16 exra bits in the zeroth word of a smob.
+
+And finally, there is SCM_SMOB_OBJECT and SCM_SMOB_SET_OBJECT for
+accesing the first immediate word of a smob as a SCM value, and there
+is SCM_SMOB_OBJECT_LOC for getting a pointer to the first immediate
+smob words.  Like wise for SCM_SMOB_OBJECT_2, etc.
+
 ** New way to deal with non-local exits and reentries.
 
 There is a new set of functions that essentially do what
-scm_internal_dynamic_wind does, but in a more convenient way.  Here is
-a quick example of how to prevent a potential memory leak:
+scm_internal_dynamic_wind does, but in a way that is more convenient
+for C code in some situations.  Here is a quick example of how to
+prevent a potential memory leak:
 
   void
   foo ()
   {
     char *mem;
 
-    scm_begin_frame (0);
+    scm_frame_begin (0);
 
     mem = scm_malloc (100);
-    scm_on_unwind (free, mem, SCM_F_WIND_EXPLICITELY);
+    scm_frame_unwind_handler (free, mem, SCM_F_WIND_EXPLICITELY);
+
+    /* MEM would leak if BAR throws an error.
+       SCM_FRAME_UNWIND_HANDLER frees it nevertheless.  */
 
-    /* MEM would leak if BAR throws an error.  SCM_ON_UNWIND frees it
-       nevertheless.
-     */
     bar ();
   
-    scm_end_frame ();
+    scm_frame_end ();
 
     /* Because of SCM_F_WIND_EXPLICITELY, MEM will be freed by 
-       SCM_END_FRAME as well. 
+       SCM_FRAME_END as well. 
     */
   }
 
 For full documentation, see the node "Frames" in the manual.
 
+** New way to block and unblock asyncs
+
+In addition to scm_c_call_with_blocked_asyncs you can now also use
+scm_frame_block_asyncs in a 'frame' (see above).  Likewise for
+scm_c_call_with_unblocked_asyncs and scm_frame_unblock_asyncs.
+
+** New way to temporarily set the current input, output or error ports
+
+C code can now use scm_frame_current_<foo>_port in a 'frame' (see
+above).  <foo> is one of "input", "output" or "error".
+
+** New way to temporarily set fluids
+
+C code can now use scm_frame_fluid in a 'frame' (see
+above) to temporarily set the value of a fluid.
+
 ** New types scm_t_intmax and scm_t_uintmax.
 
 On platforms that have them, these types are identical to intmax_t and
 uintmax_t, respectively.  On other platforms, they are identical to
 the largest integer types that Guile knows about.
 
+** scm_unmemocopy and scm_unmemoize have been removed from public use.
+
+For guile internal use, the functions scm_i_unmemocopy_expr,
+scm_i_unmemocopy_body and scm_i_unmemoize_expr are provided to replace
+scm_unmemocopy and scm_unmemoize.  User code should not have used
+scm_unmemocopy and scm_unmemoize and thus should not use the replacement
+functions also.
+
+Background: Formerly, scm_unmemocopy and scm_unmemoize would have allowed to
+unmemoize a single expression as well as a sequence of body forms.  This would
+have lead to problems when unmemoizing code of the new memoizer.  Now the two
+cases have to be distinguished.
+
+
 ** Many public #defines with generic names have been made private.
 
 #defines with generic names like HAVE_FOO or SIZEOF_FOO have been made
@@ -1014,12 +1084,22 @@ scm_m_expand_body, scm_macroexp
 These functions were used in the implementation of the evaluator.  It's
 unlikely that they have been used by user code.
 
+** Deprecated functions and variables for evaluation and application:
+scm_ceval, scm_deval and scm_ceval_ptr
+
+These functions and variables were used in the implementation of the
+evaluator.  It's unlikely that they have been used by user code.  If you have
+used these functions, switch to scm_eval or scm_eval_x.
+
 ** Deprecated functions for unmemoization: scm_unmemocar
 
-** Deprecated macros for iloc handling: SCM_ILOC00, SCM_IDINC, SCM_IDSTMSK
+** Deprecated definitions for iloc and isym handling
 
-These macros were used in the implementation of the evaluator.  It's unlikely
-that they have been used by user code.
+SCM_ILOC00, SCM_IDINC, SCM_IDSTMSK, SCM_IFRINC, SCM_ICDR, SCM_IFRAME,
+SCM_IDIST, SCM_ICDRP, SCM_ISYMNUM, SCM_ISYMCHARS, scm_isymnames.
+
+These definitions were used in the implementation of the evaluator.  It's
+unlikely that they have been used by user code.
 
 ** Removed definitions: scm_lisp_nil, scm_lisp_t, s_nil_ify,
 scm_m_nil_ify, s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
@@ -1053,6 +1133,16 @@ scm_istring2number, scm_vtable_index_vcell, scm_si_vcell, SCM_ECONSP,
 SCM_NECONSP, SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL,
 SCM_GLOC_VAL_LOC, scm_make_gloc, scm_gloc_p, scm_tc16_variable
 
+** Deprecated definitions for debugging: scm_debug_mode, SCM_DEBUGGINGP
+
+These functions were used in the implementation of the evaluator.  It's
+unlikely that they have been used by user code.
+
+** Removed macro SCM_MAKSPCSYM
+
+This macro was used for defining byte codes of the evaluator.  It is almost
+impossible that user code has used this macro.
+
 \f
 Changes since Guile 1.4: