* tests/asmobs/README: removed (functionality is now in standalone/).
[bpt/guile.git] / NEWS
diff --git a/NEWS b/NEWS
index cee1c49..b87b78f 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,15 +1,63 @@
-Guile NEWS --- history of user-visible changes.  -*- text -*-
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+Guile NEWS --- history of user-visible changes.
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
 See the end for copying conditions.
 
 Please send Guile bug reports to bug-guile@gnu.org.
+
+Each release reports the NEWS in the following sections:
+
+* Changes to the distribution
+* Changes to the stand-alone interpreter
+* Changes to Scheme functions and syntax
+* Changes to the C interface 
+
 \f
 Changes since the stable branch:
 
 * Changes to the distribution
 
-** There are two new thread implementation options: "null" and
-   "coop-pthreads".
+** 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
+installed and is private.  The latter is installed and used by Guile's
+public headers.  config.h is generated by configure and autoheader,
+and scmconfig.h is generated by a small C program, gen-scmconfig at
+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.
+
+** Guile now provides and uses an "effective" version number.
+
+Guile now provides scm_effective_version and effective-version
+functions which return the "effective" version number.  This is just
+the normal full version string without the final micro-version number,
+so the current effective-version is "1.6".  The effective version
+should remain unchanged during a stable series, and should be used for
+items like the versioned share directory name
+i.e. /usr/share/guile/1.6.
+
+Providing an unchanging version number during a stable release for
+things like the versioned share directory can be particularly
+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".
 
 When you configure "--with-threads=null", you will get the usual
 threading API (call-with-new-thread, make-mutex, etc), but you can't
@@ -18,15 +66,15 @@ equivalent to "--with-threads=null".  This means that the thread API
 is always present, although you might not be able to create new
 threads.
 
-When "coop" threading is not supported on your platform, you will get
-the "null" threads instead.
-
 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 "coop" option, but hopefully in a more
+same basic behavior as the old "coop" option, but hopefully in a more
 portable way.
 
+The default is now "coop-pthread", unless your platform doesn't have
+pthreads, in which case "null" threads are used.
+
 ** Guile now includes its own version of libltdl.
 
 We now use a modified version of libltdl that allows us to make
@@ -46,16 +94,223 @@ debugging evaluator gives better error messages.
 
 * Changes to Scheme functions and syntax
 
-** Mutexes are now recursive.
+** 'call-with-current-continuation' is now also available under the name
+   'call/cc'.
+
+** Checking for duplicate bindings in module system
+
+The module system now can check for name conflicts among imported
+bindings.
+
+The behavior can be controlled by specifying one or more duplicates
+handlers.  For example, to make Guile return an error for every name
+collision, write:
+
+(define-module (foo)
+  :use-module (bar)
+  :use-module (baz)
+  :duplicates check)
+
+The new default behavior of the module system when a name collision
+has been detected is to
+
+ 1. Give priority to bindings marked as a replacement.
+ 2. Issue a warning (different warning if overriding core binding).
+ 3. Give priority to the last encountered binding (this corresponds to
+     the old behavior).
+
+If you want the old behavior back without replacements or warnings you
+can add the line:
+
+  (default-duplicate-binding-handler 'last)
+
+to your .guile init file.
+
+The syntax for the :duplicates option is:
+
+  :duplicates HANDLER-NAME | (HANDLER1-NAME HANDLER2-NAME ...)
+
+Specifying multiple handlers is useful since some handlers (such as
+replace) can defer conflict resolution to others.  Each handler is
+tried until a binding is selected.
+
+Currently available duplicates handlers are:
+
+  check                     report an error for bindings with a common name
+  warn              issue a warning for bindings with a common name
+  replace           replace bindings which have an imported replacement
+  warn-override-core issue a warning for imports which override core bindings
+                    and accept the override
+  first                     select the first encountered binding (override)
+  last              select the last encountered binding (override)
+
+These two are provided by the (oop goops) module:
+  
+  merge-generics     merge generic functions with a common name
+                    into an <extended-generic>
+  merge-accessors    merge accessors with a common name
+
+The default duplicates handler is:
+
+  (replace warn-override-core warn last)
+
+A recommended handler (which is likely to correspond to future Guile
+behavior) can be installed with:
+
+  (default-duplicate-binding-handler '(replace warn-override-core check))
+
+** New define-module option: :replace
+
+:replace works as :export, but, in addition, marks the binding as a
+replacement.
+
+A typical example is `format' in (ice-9 format) which is a replacement
+for the core binding `format'.
+
+** Adding prefixes to imported bindings in the module system
+
+There is now a new :use-module option :prefix.  It can be used to add
+a prefix to all imported bindings.
+
+  (define-module (foo)
+    :use-module ((bar) :prefix bar:))
+
+will import all bindings exported from bar, but rename them by adding
+the prefix `bar:'.
+
+** Merging generic functions
+
+It is sometimes tempting to use GOOPS accessors with short names.
+For example, it is tempting to use the name `x' for the x-coordinate
+in vector packages.
+
+Assume that we work with a graphical package which needs to use two
+independent vector packages for 2D and 3D vectors respectively.  If
+both packages export `x' we will encounter a name collision.
+
+This can now be resolved automagically with the duplicates handler
+`merge-generics' which gives the module system license to merge all
+generic functions sharing a common name:
+
+(define-module (math 2D-vectors)
+  :use-module (oop goops)
+  :export (x y ...))
+                 
+(define-module (math 3D-vectors)
+  :use-module (oop goops)
+  :export (x y z ...))
+
+(define-module (my-module)
+  :use-module (math 2D-vectors)
+  :use-module (math 3D-vectors)
+  :duplicates merge-generics)
+
+x in (my-module) will now share methods with x in both imported
+modules.
+
+There will, in fact, now be three distinct generic functions named
+`x': x in (2D-vectors), x in (3D-vectors), and x in (my-module).  The
+last function will be an <extended-generic>, extending the previous
+two functions.
+
+Let's call the imported generic functions the "ancestor functions".  x
+in (my-module) is, in turn, a "descendant function" of the imported
+functions, extending its ancestors.
+
+For any generic function G, the applicable methods are selected from
+the union of the methods of the descendant functions, the methods of G
+itself and the methods of the ancestor functions.
+
+This, ancestor functions share methods with their descendants and vice
+versa.  This implies that x in (math 2D-vectors) can will share the
+methods of x in (my-module) and vice versa, while x in (math 2D-vectors)
+doesn't share the methods of x in (math 3D-vectors), thus preserving
+modularity.
+
+Sharing is dynamic, so that adding new methods to a descendant implies
+adding it to the ancestor.
+
+If duplicates checking is desired in the above example, the following
+form of the :duplicates option can be used instead:
+
+  :duplicates (merge-generics check)
+
+** New function: effective-version
+
+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
+
+Return the computed value of the future.  Wait if the computation is
+not finished.  (Akin to 'force'.)
+
+** New syntax: parallel FORM ...
+
+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.
+
+** Fair mutexes and condition variables
+
+Fair mutexes and condition variables have been added.  The fairness
+means that scheduling is arranged to give as equal time shares as
+possible and that threads are awakened in a first-in-first-out
+manner.  This is not guaranteed with standard mutexes and condition
+variables.
 
-Locking a mutex that you have already locked will now succeed.  Every
-call to lock-mutex must be matched with a call to unlock-mutex.  Only
-the last call to unlock-mutex will actually unlock the mutex.
+In addition, fair mutexes are recursive.  Locking a fair mutex that
+you have already locked will succeed.  Every call to lock-mutex must
+be matched with a call to unlock-mutex.  Only the last call to
+unlock-mutex will actually unlock the mutex.
+
+A fair condition variable must be used together with a fair mutex,
+just as a standard condition variable must be used together with a
+standard mutex.
+
+** New functions: make-fair-mutex, make-fair-condition-variable'
+
+Make a new fair mutex and a new fair condition variable respectively.
 
 ** New function 'try-mutex'.
 
 This function will attempt to lock a mutex but will return immediately
-instead if blocking, indicating failure.
+instead if blocking and indicate failure.
 
 ** Waiting on a condition variable can have a timeout.
 
@@ -204,8 +459,198 @@ without the soft port blocking.
 Guile now has breakpoints.  For details see the `Debugging Features'
 chapter in the reference manual.
 
+** Deprecated: undefine
+
+There is no replacement for undefine.
+
 * Changes to the C interface
 
+** Many public #defines with generic names have been made private.
+
+#defines with generic names like HAVE_FOO or SIZEOF_FOO have been made
+private or renamed with a more suitable public name.  See below for
+the ones which have been renamed.
+
+** HAVE_STDINT_H and HAVE_INTTYPES_H have been removed from public use.
+
+HAVE_STDINT_H and HAVE_INTTYPES_H removed from public use.  These are
+no longer needed since the older uses of stdint.h and inttypes.h are
+now handled by configure.in and gen-scmconfig.c.
+
+** USE_DLL_IMPORT is no longer defined publically.
+
+gen-scmconfig now uses it to decide what contents to place in the
+public scmconfig.h header without adding the USE_DLL_IMPORT itself.
+
+** HAVE_LIMITS_H has been removed from public use.
+
+gen-scmconfig now just uses HAVE_LIMITS_H to decide whether or not to
+add a limits.h include in scmconfig.h.
+
+** time.h, sys/time.h, etc. #ifdefery has been removed from public headers.
+
+gen-scmconfig now just uses the same logic to decide what time related
+#includes to add to scmconfig.h.
+
+** HAVE_STRUCT_TIMESPEC has been removed from public use.
+
+scmconfig.h now just defines scm_t_timespec.
+
+** HAVE_PTRDIFF has been removed from public use and Guile doesn't
+   define ptrdiff_t.
+
+Guile now publically defines scm_t_ptrdiff and
+SCM_SIZEOF_SCM_T_PTRDIFF in scmconfig.h, and all occurrences of
+ptrdiff_t have been replaced with scm_t_ptrdiff.
+
+Guile defines its own type this rather than just relying on ptrdiff_t
+and SCM_SIZEOF_PTRDIFF_T because Guile actually typedefs long to
+scm_t_ptrdiff when ptrdiff_t isn't available.  A public "typedef long
+ptrdiff_t" could conflict with other headers.
+
+** HAVE_UINTPTR_T and HAVE_UINTPTR_T have been removed from public use.
+
+They are replaced by public definitions of SCM_SIZEOF_UINTPTR_T and
+SCM_SIZEOF_INTPTR_T.  These are defined to 0 if the corresponding type
+is not available.
+
+** The public #define STDC_HEADERS has been renamed to SCM_HAVE_STDC_HEADERS.
+
+The previous name was too generic for the global public namespace.
+
+** The public #define HAVE_SYS_SELECT has been renamed to
+   SCM_HAVE_SYS_SELECT_H.
+
+The previous name was too generic for the global public namespace.
+
+** The public #define HAVE_FLOATINGPOINT_H has been renamed to
+   SCM_HAVE_FLOATINGPOINT_H.
+
+The previous name was too generic for the global public namespace.
+
+** The public #define HAVE_IEEEFP_H has been renamed to SCM_HAVE_IEEEFP_H.
+
+The previous name was too generic for the global public namespace.
+
+** The public #define HAVE_NAN_H has been renamed to SCM_HAVE_NAN_H.
+
+The previous name was too generic for the global public namespace.
+
+** The public #define HAVE_WINSOCK2_H has been renamed to SCM_HAVE_WINSOCK2_H.
+
+The previous name was too generic for the global public namespace.
+
+** The public #define HAVE_ARRAYS has been renamed to SCM_HAVE_ARRAYS.
+
+The previous name was too generic for the global public namespace.
+
+** The public #define STACK_GROWS_UP has been renamed to SCM_STACK_GROWS_UP.
+
+The previous name was too generic for the global public namespace.
+
+** The public #define USE_PTHREAD_THREADS has been renamed to
+   SCM_USE_PTHREAD_THREADS.
+
+The previous name was too generic for the global public namespace.
+
+** The public #define USE_NULL_THREADS has been renamed to
+   SCM_USE_NULL_THREADS.
+
+The previous name was too generic for the global public namespace.
+
+** The public #define USE_COOP_THREADS has been renamed to
+   SCM_USE_COOP_THREADS.
+
+The previous name was too generic for the global public namespace.
+
+** SCM_C_INLINE is publically defined if possible.
+
+If the platform has a way to define inline functions, SCM_C_INLINE
+will be defined to that text.  Otherwise it will be undefined.  This
+is a little bit different than autoconf's normal handling of the
+inline define via AC_C_INLINE.
+
+** Guile now publically defines some basic type infrastructure.
+
+Guile always defines
+
+  SCM_SIZEOF_CHAR
+  SCM_SIZEOF_UNSIGNED_CHAR
+  SCM_SIZEOF_SHORT
+  SCM_SIZEOF_UNSIGNED_SHORT
+  SCM_SIZEOF_LONG
+  SCM_SIZEOF_UNSIGNED_LONG
+  SCM_SIZEOF_INT
+  SCM_SIZEOF_UNSIGNED_INT
+  SCM_SIZEOF_LONG_LONG /* defined to 0 if type not available */
+  SCM_SIZEOF_UNSIGNED_LONG_LONG /* defined to 0 if type not available */
+
+  scm_t_int8
+  scm_t_uint8
+  scm_t_int16
+  scm_t_uint16
+  scm_t_int32
+  scm_t_uint32
+
+Guile always defines
+
+  SCM_HAVE_T_INT64
+  SCM_HAVE_T_UINT64
+
+and when either of these are defined to 1, optionally defines 
+
+  scm_t_int64
+  scm_t_uint64
+
+respectively.
+
+Guile always defines
+
+  scm_t_timespec
+
+** The preprocessor define USE_THREADS has been deprecated.
+
+Going forward, assume that the thread API is always present.
+
+** The preprocessor define GUILE_ISELECT has been deprecated.
+
+Going forward, assume that scm_internal_select is always present.
+
+** The preprocessor define READER_EXTENSIONS has been deprecated.
+
+Going forward, assume that the features represented by
+READER_EXTENSIONS are always present.
+
+** The preprocessor define DEBUG_EXTENSIONS has been deprecated.
+
+Going forward, assume that the features represented by
+DEBUG_EXTENSIONS are always present.
+
+** The preprocessor define DYNAMIC_LINKING has been deprecated.
+
+Going forward, assume that the features represented by
+DYNAMIC_LINKING are always present.
+
+** The preprocessor define STACK_DIRECTION has been deprecated.
+
+There should be no need to know about the stack direction for ordinary
+programs.  (Do not use.)
+
+** New function: scm_effective_version
+
+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.
+
+** The function scm_call_with_new_thread has a new prototype.
+
+Instead of taking a list with the thunk and handler, these two
+arguments are now passed directly:
+
+    SCM scm_call_with_new_thread (SCM thunk, SCM handler);
+
+This is an incompatible change.
+
 ** The value 'scm_mask_ints' is no longer writable.
 
 Previously, you could set scm_mask_ints directly.  This is no longer
@@ -347,66 +792,78 @@ option to disable the checking has most probably not been used anyway.
 Full number of arguments checking of closures is mandatory now.  However, the
 option to disable the checking has most probably not been used anyway.
 
-** 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, scm_substring_move_left_x, scm_substring_move_right_x,
-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,
+** Deprecated configure flags USE_THREADS and GUILE_ISELECT
+
+Previously, when the C preprocessor macro USE_THREADS was defined,
+libguile included a thread API.  This API is now always included, even
+when threads are not really supported.  Thus, you don't need to test
+for USE_THREADS.
+
+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.
+
+** 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, 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,
+*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_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_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,
+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_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_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_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_init_symbols_deprecated, s_vector_set_length_x,
+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_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
 
 Changes since Guile 1.4:
@@ -2019,10 +2476,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.
@@ -6316,4 +6769,3 @@ Local variables:
 mode: outline
 paragraph-separate: "[         \f]*$"
 end:
-