Updated for new SCM_SMOB_* macros.
[bpt/guile.git] / NEWS
diff --git a/NEWS b/NEWS
index e1dc4e0..d5f4887 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,5 @@
 Guile NEWS --- history of user-visible changes.
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
 See the end for copying conditions.
 
 Please send Guile bug reports to bug-guile@gnu.org.
@@ -16,6 +16,15 @@ Changes since the stable branch:
 
 * Changes to the distribution
 
+** 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.
+At the moment it is being used to handle Guile's bignums.
+
 ** Guile now has separate private and public configuration headers.
 
 Guile now has config.h and libguile/scmconfig.h.  The former is not
@@ -26,6 +35,12 @@ build time based in part on the contents of config.h.
 
 Seen libguile/__scm.h and gen-scmconfig.c for more information.
 
+Note too that nearly all public defines are now set to either 1 or 0
+rather than being set to 1 or left undefined.  See gen-scmconfig.c and
+the GNU Coding Guidelines for the rationale.  However, pre-existing
+defines that were not renamed were not changed.  i.e. GUILE_DEBUG is
+still either 1 or undefined.
+
 ** The INSTALL file is now the generic automake installed one.
 
 Guile specific instructions can be found in the README.
@@ -46,7 +61,7 @@ important for Guile "add-on" packages, since it provides a directory
 that they can install to that won't be changed out from under them
 with each micro release during a stable series.
 
-** There are two new thread implementation options: "null" and "coop-pthreads".
+** Thread implementation has changed.
 
 When you configure "--with-threads=null", you will get the usual
 threading API (call-with-new-thread, make-mutex, etc), but you can't
@@ -55,21 +70,60 @@ equivalent to "--with-threads=null".  This means that the thread API
 is always present, although you might not be able to create new
 threads.
 
-The "coop-pthread" (or shorter: "copt") thread implementation will use
-portable POSIX threads but will restrict them so that only one thread
-can execute 'in Guile' at any one time.  This option will give you the
-same basic behavior as the old "coop" option, but hopefully in a more
-portable way.
+When you configure "--with-threads=pthreads" or "--with-threads=yes",
+you will get threads that are implemented with the portable POSIX
+threads.  These threads can run concurrently (unlike the previous
+"coop" thread implementation), but need to cooperate for things like
+the GC.  See the manual for details. [XXX - write this.]
+
+The default is "pthreads", unless your platform doesn't have pthreads,
+in which case "null" threads are used.
+
+** New module (ice-9 serialize):
+
+(serialize FORM1 ...) and (parallelize FORM1 ...) are useful when
+you don't trust the thread safety of most of your program, but
+where you have some section(s) of code which you consider can run
+in parallel to other sections.
+
+They "flag" (with dynamic extent) sections of code to be of
+"serial" or "parallel" nature and have the single effect of
+preventing a serial section from being run in parallel with any
+serial section (including itself).
 
-The default is now "coop-pthread", unless your platform doesn't have
-pthreads, in which case "null" threads are used.
+Both serialize and parallelize can be nested.  If so, the
+inner-most construct is in effect.
+
+NOTE 1: A serial section can run in parallel with a parallel
+section.
+
+NOTE 2: If a serial section S is "interrupted" by a parallel
+section P in the following manner: S = S1 P S2, S2 is not
+guaranteed to be resumed by the same thread that previously
+executed S1.
+
+WARNING: Spawning new threads within a serial section have
+undefined effects.  It is OK, though, to spawn threads in unflagged
+sections of code where neither serialize or parallelize is in
+effect.
+
+A typical usage is when Guile is used as scripting language in some
+application doing heavy computations.  If each thread is
+encapsulated with a serialize form, you can then put a parallelize
+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.
 
 ** Guile now includes its own version of libltdl.
 
 We now use a modified version of libltdl that allows us to make
 improvements to it without having to rely on libtool releases.
 
-* Changes to the standalone interpreter
+* Changes to the stand-alone interpreter
 
 ** New command line option `--no-debug'.
 
@@ -81,8 +135,48 @@ evaluator turned off, even for interactive sessions.
 Previously, the normal evaluator would have been used.  Using the
 debugging evaluator gives better error messages.
 
+** The '-e' option now 'read's its argument.
+
+This is to allow the new '(@ MODULE-NAME VARIABLE-NAME)' construct to
+be used with '-e'.  For example, you can now write a script like
+
+  #! /bin/sh
+  exec guile -e '(@ (demo) main)' -s "$0" "$@"
+  !#
+
+  (define-module (demo)
+    :export (main))
+
+  (define (main args)
+    (format #t "Demo: ~a~%" args))
+
+
 * Changes to Scheme functions and syntax
 
+** New syntax '@' and '@@':
+
+You can now directly refer to variables exported from a module by
+writing
+
+    (@ MODULE-NAME VARIABLE-NAME)
+
+For example (@ (ice-9 pretty-print) pretty-print) will directly access
+the pretty-print variable exported from the (ice-9 pretty-print)
+module.  You don't need to 'use' that module first.  You can also use
+'@' with 'set!'.
+
+The related syntax (@@ MODULE-NAME VARIABLE-NAME) works just like '@',
+but it can also access variables that have not been exported.  It is
+intended only for kluges and temporary fixes and for debugging, not
+for ordinary code.
+
+** 'while' now provides 'break' and 'continue'
+
+break and continue were previously bound in a while loop, but not
+documented, and continue didn't quite work properly.  The undocumented
+parameter to break which gave a return value for the while has been
+dropped.
+
 ** 'call-with-current-continuation' is now also available under the name
    'call/cc'.
 
@@ -230,50 +324,15 @@ Returns the "effective" version number.  This is just the normal full
 version string without the final micro-version number.  See "Changes
 to the distribution" above.
 
-** Futures
-
-Futures is a way of providing an alternative evaluation policy, very
-similar in principle to "promises".  Like promises, futures allow the
-main process to continue instantly, but while promises postpone
-evaluation ("lazy" evaluation) until the value is requested, futures
-immediately starts evaluation in a parallel thread.
-
-Futures are good when you want to express that "I'll need the value of
-this computation sometime soon" and want to allow processing to go on
-in the background until that time arrives.
-
-** New syntax: future FORM
-
-Begin evaluation of FORM in a parallel thread and return the future
-immediately.  (Akin to 'delay'.)
-
-** New procedure: future-ref FUTURE
+** Futures: future, make-future, future-ref
 
-Return the computed value of the future.  Wait if the computation is
-not finished.  (Akin to 'force'.)
+Futures are like promises, but begun immediately in a new thread.  See
+the "Futures" section in the reference manual.
 
-** New syntax: parallel FORM ...
+** New threading functions: parallel, letpar, par-map, and friends
 
-Compute the results of FORM ... in parallel (in a separate thread for
-each form) and return them as multiple values.
-
-** New syntax: letpar ((VAR EXP) ...) BODYFORM ...
-
-Like 'let' but evaluates the binding expressions EXP ... in parallel.
-
-** New functions: par-map, par-for-each PROC ARGLIST ...
-
-Like 'map' and 'for-each' but evaluate the procedure PROC in a
-separate thread for each (set of) argument(s).  All applications are
-guaranteed to be completed before the procedure returns.
-
-** New functions: n-par-map, n-par-for-each N PROC ARGLIST ...
-
-Like 'par-map' and 'par-for-each' but evaluate the procedure PROC in N
-threads.  This is useful when PROC uses large amounts of resources
-and/or the argument list(s) is/are long so that one thread per (set
-of) argument(s) would consume too much system resources.  On a
-dual-CPU system, N = 4 would often be a good choice.
+These are convenient ways to run calculations in parallel in new
+threads.  See "Parallel forms" in the manual for details.
 
 ** Fair mutexes and condition variables
 
@@ -399,6 +458,51 @@ platform supports this, too.  The two zeros are equal according to
     (eqv? 0.0 (- 0.0))
     => #f
 
+** Guile now has exact rationals.
+
+Guile can now represent fractions such as 1/3 exactly.  Computing with
+them is also done exactly, of course:
+
+    (* 1/3 3/2)
+    => 1/2
+
+** 'floor', 'ceiling', 'round' and 'truncate' now return exact numbers
+   for exact arguments.
+
+For example: (floor 2) now returns an exact 2 where in the past it
+returned an inexact 2.0.  Likewise, (floor 5/4) returns an exact 1.
+
+** inexact->exact no longer returns only integers.
+
+Without exact rationals, the closest exact number was always an
+integer, but now inexact->exact returns the fraction that is exactly
+equal to a floating point number.  For example:
+
+    (inexact->exact 1.234)
+    => 694680242521899/562949953421312
+
+When you want the old behavior, use 'round' explicitely:
+
+    (inexact->exact (round 1.234))
+    => 1
+
+** New function 'rationalize'.
+
+This function finds a simple fraction that is close to a given real
+number.  For example (and compare with inexact->exact above):
+
+    (rationalize (inexact->exact 1.234) 1/2000)
+    => 58/47
+
+Note that, as required by R5RS, rationalize returns only then an exact
+result when both its arguments are exact.
+
+** 'odd?' and 'even?' work also for inexact integers.
+
+Previously, (odd? 1.0) would signal an error since only exact integers
+were recognized as integers.  Now (odd? 1.0) returns #t, (odd? 2.0)
+returns #f and (odd? 1.5) signals an error.
+
 ** We now have uninterned symbols.
 
 The new function 'make-symbol' will return a uninterned symbol.  This
@@ -412,7 +516,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?'.
 
@@ -425,10 +529,6 @@ compare their values.  This is no longer done.  Variables are now only
 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.
-
 ** Deprecated: procedure->macro
 
 Change your code to use either procedure->memoizing-macro or, probably better,
@@ -452,8 +552,105 @@ chapter in the reference manual.
 
 There is no replacement for undefine.
 
+** call-with-output-string doesn't segv on closed port
+
+Previously call-with-output-string would give a segmentation fault if
+the string port was closed by the called function.  An exception is
+raised now.
+
+** (ice-9 popen) duplicate pipe fd fix
+
+open-pipe, open-input-pipe and open-output-pipe left an extra copy of
+their pipe file descriptor in the child, which was normally harmless,
+but it can prevent the parent seeing eof or a broken pipe immediately
+and has now been fixed.
+
+** source-properties and set-source-properties! fix
+
+Properties set with set-source-properties! can now be read back
+correctly with source-properties.
+
+** SRFI-1 fixes
+
+delete and delete! now call the "=" procedure with arguments in the
+order described by the SRFI-1 specification
+
+list-copy now accepts improper lists, per the specification.
+
+** SRFI-19 fixes
+
+date-week-number now correctly respects the requested day of week
+starting the week.
+
 * Changes to the C interface
 
+** 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 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_frame_begin (0);
+
+    mem = scm_malloc (100);
+    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.  */
+
+    bar ();
+  
+    scm_frame_end ();
+
+    /* Because of SCM_F_WIND_EXPLICITELY, MEM will be freed by 
+       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.
+
 ** Many public #defines with generic names have been made private.
 
 #defines with generic names like HAVE_FOO or SIZEOF_FOO have been made
@@ -581,12 +778,12 @@ Guile always defines
   scm_t_int32
   scm_t_uint32
 
-Guile always defines
+Guile always defines these to 0 or 1
 
   SCM_HAVE_T_INT64
   SCM_HAVE_T_UINT64
 
-and when either of these are defined to 1, optionally defines 
+and when either of these are defined to 1, also defines
 
   scm_t_int64
   scm_t_uint64
@@ -597,6 +794,45 @@ Guile always defines
 
   scm_t_timespec
 
+** The macro SCM_IFLAGP now only returns true for flags
+
+User code should never have used this macro anyway.  And, you should not use
+it in the future either.  Thus, the following explanation is just for the
+impropable case that your code actually made use of this macro, and that you
+are willing to depend on internals which will probably change in the near
+future.
+
+Formerly, SCM_IFLAGP also returned true for evaluator bytecodes created with
+SCM_MAKSPCSYM (short instructions) and evaluator bytecodes created with
+SCM_MAKISYM (short instructions).  Now, SCM_IFLAG only returns true for
+Guile's special constants created with SCM_MAKIFLAG.  To achieve the old
+behaviour, instead of
+
+  SCM_IFLAGP(x)
+
+you would have to write
+
+  (SCM_ISYMP(x) || SCM_IFLAGP(x))
+
+** The macro SCM_TYP16S has been deprecated.
+
+This macro is not intended for public use.  However, if you allocated types
+with tc16 type codes in a way that you would have needed this macro, you are
+expected to have a deep knowledge of Guile's type system.  Thus, you should
+know how to replace this macro.
+
+** The macro SCM_SLOPPY_INEXACTP has been deprecated.
+
+Use SCM_INEXACTP instead.
+
+** The macro SCM_SLOPPY_REALP has been deprecated.
+
+Use SCM_REALP instead.
+
+** The macro SCM_SLOPPY_COMPLEXP has been deprecated.
+
+Use SCM_COMPLEXP instead.
+
 ** The preprocessor define USE_THREADS has been deprecated.
 
 Going forward, assume that the thread API is always present.
@@ -792,72 +1028,89 @@ Analogously, GUILE_ISELECT was defined when the function
 scm_internal_select was provided by Guile.  This function is now
 always defined, and GUILE_ISELECT with it.
 
+** New function scm_c_port_for_each.
+
+This function is like scm_port_for_each but takes a pointer to a C
+function as the callback instead of a SCM value.
+
+** Deprecated definitions of error strings: scm_s_expression, scm_s_test,
+scm_s_body, scm_s_bindings, scm_s_variable, scm_s_clauses, scm_s_formals
+
+These error message strings were used to issue syntax error messages by
+guile's evaluator.  It's unlikely that they have been used by user code.
+
+** Deprecated helper macros for evaluation and application: SCM_EVALIM2,
+SCM_EVALIM, SCM_XEVAL, SCM_XEVALCAR
+
+These macros were used in the implementation of the evaluator.  It's unlikely
+that they have been used by user code.
+
+** Deprecated helper functions for evaluation and application:
+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 definitions for iloc and isym handling
+
+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,
 scm_m_0_ify, s_1_ify, scm_m_1_ify, scm_debug_newcell,
 scm_debug_newcell2, scm_tc16_allocated, SCM_SET_SYMBOL_HASH,
 SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY,
 SCM_IM_1_IFY, SCM_GC_SET_ALLOCATED, scm_debug_newcell,
-scm_debug_newcell2, long_long, ulong_long, scm_sizet, SCM_WNA,
-SCM_OUTOFRANGE, SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL,
-SCM_FPE_SIGNAL, SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL,
-SCM_GC_SIGNAL, SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG,
-SCM_NUM_SIGS, moddata, registered_mods, scm_register_module_xxx,
-scm_registered_modules, scm_clear_registered_modules, scm_wta,
-*top-level-lookup-closure*, scm_top_level_lookup_closure_var,
-scm_system_transformer, scm_eval_3, scm_eval2, SCM_SETAND_CAR,
-SCM_SETOR_CAR, SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
-SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16, SCM_GCCDR,
-scm_remember, scm_protect_object, scm_unprotect_object,
-root_module_lookup_closure, scm_sym_app, scm_sym_modules,
-module_prefix, make_modules_in_var, beautify_user_module_x_var,
-try_module_autoload_var, scm_module_full_name, scm_the_root_module,
-scm_make_module, scm_ensure_user_module, scm_load_scheme_module,
-scm_port, scm_ptob_descriptor, scm_port_rw_active,
-scm_close_all_ports_except, scm_rstate, scm_rng, scm_i_rstate,
-SCM_SLOPPY_STRINGP, SCM_RWSTRINGP, SCM_STRING_UCHARS,
-SCM_STRING_CHARS, scm_read_only_string_p, scm_makstr, scm_makfromstr,
-scm_make_shared_substring, scm_tc7_substring, SCM_SLOPPY_CONSP,
-SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol, scm_tcs_symbols,
-sym_huh, scm_variable_set_name_hint, scm_builtin_variable,
-SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP,
-scm_internal_with_fluids, scm_make_gsubr, scm_make_gsubr_with_generic,
-scm_create_hook, list*, SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3,
-SCM_LIST4, SCM_LIST5, SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9,
-scm_listify, scm_sloppy_memq, scm_sloppy_memv, scm_sloppy_member,
-scm_end_of_file_key, scm_read_and_eval_x, scm_mkbig, scm_big2inum,
-scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
-scm_big2dbl, SCM_FIXNUM_BIT, scm_subr_entry, SCM_SUBR_DOC,
-scm_make_subr_opt, scm_make_subr, scm_make_subr_with_generic,
-setjmp_type, setjmp_type, scm_call_catching_errors,
-scm_make_smob_type_mfpe, scm_set_smob_mfpe, scm_strprint_obj,
-scm_read_0str, scm_eval_0str, SCM_CHARS, SCM_UCHARS, SCM_SETCHARS,
+scm_debug_newcell2, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
+SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
+SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS,
+scm_top_level_lookup_closure_var, *top-level-lookup-closure*,
+scm_system_transformer, scm_eval_3, scm_eval2,
+root_module_lookup_closure, SCM_SLOPPY_STRINGP, SCM_RWSTRINGP,
+scm_read_only_string_p, scm_make_shared_substring, scm_tc7_substring,
+sym_huh, SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP, scm_mkbig,
+scm_big2inum, scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big,
+scm_dbl2big, scm_big2dbl, SCM_FIXNUM_BIT, SCM_SETCHARS,
 SCM_SLOPPY_SUBSTRP, SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX,
-SCM_LENGTH, SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
-SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
-scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
-scm_intern_obarray_soft, scm_intern_obarray, scm_intern, scm_intern0,
-scm_sysintern, scm_sysintern0, scm_sysintern0_no_module_lookup,
-scm_symbol_value0, scm_string_to_obarray_symbol, scm_intern_symbol,
-scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
-scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
-scm_init_symbols_deprecated, s_vector_set_length_x,
+SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS, SCM_ROUCHARS,
+SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_sym2vcell, scm_intern,
+scm_intern0, scm_sysintern, scm_sysintern0,
+scm_sysintern0_no_module_lookup, scm_init_symbols_deprecated,
 scm_vector_set_length_x, scm_contregs, scm_debug_info,
-scm_debug_frame, SCM_DSIDEVAL, SCM_OPDIRP, scm_fport, scm_option,
-SCM_CONST_LONG, SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
-SCM_GLOBAL_VCELL_INIT, scm_srcprops, scm_srcprops_chunk,
-scm_info_frame, scm_stack, scm_array, scm_array_dim,
-SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH, SCM_FUNC_NAME, SCM_WTA,
-RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
-SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_STRINGORSUBSTR,
-SCM_VALIDATE_ROSTRING, SCM_VALIDATE_ROSTRING_COPY,
-SCM_VALIDATE_NULLORROSTRING_COPY, SCM_VALIDATE_RWSTRING,
-SCM_VALIDATE_OPDIR, DIGITS, scm_small_istr2int, scm_istr2int,
+scm_debug_frame, SCM_DSIDEVAL, SCM_CONST_LONG, SCM_VCELL,
+SCM_GLOBAL_VCELL, SCM_VCELL_INIT, SCM_GLOBAL_VCELL_INIT,
+SCM_HUGE_LENGTH, SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
+SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
+SCM_VALIDATE_RWSTRING, DIGITS, scm_small_istr2int, scm_istr2int,
 scm_istr2flo, scm_istring2number, scm_istr2int, scm_istr2flo,
 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:
 
 * Changes to the distribution
@@ -1710,24 +1963,18 @@ 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);
+Call a procedure with the indicated number of arguments.  See "Fly
+Evaluation" in the manual.
 
 ** 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);
+Call a procedure with the indicated number of arguments and a list of
+further arguments.  See "Fly Evaluation" in the manual.
 
 ** 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.
+Create a list of the given number of elements.  See "List
+Constructors" in the manual.
 
 ** Renamed function: scm_listify has been replaced by scm_list_n.
 
@@ -2468,10 +2715,6 @@ These macros will be removed in a future release of Guile.
 scm_dblproc, SCM_UNEGFIXABLE, SCM_FLOBUFLEN, SCM_INEXP, SCM_CPLXP, SCM_REAL,
 SCM_IMAG, SCM_REALPART, scm_makdbl, SCM_SINGP, SCM_NUM2DBL, SCM_NO_BIGDIG
 
-Further, it is recommended not to rely on implementation details for guile's
-current implementation of bignums.  It is planned to replace this
-implementation with gmp in the future.
-
 ** Port internals: the rw_random variable in the scm_port structure
 must be set to non-zero in any random access port.  In recent Guile
 releases it was only set for bidirectional random-access ports.