Use $(GCC_CFLAGS) for `-Werror' et al. so that it's not used to compile
[bpt/guile.git] / libguile / ChangeLog
index 24bc5ca..a3c9767 100644 (file)
+2008-08-25  Ludovic Courtès  <ludo@gnu.org>
+
+       * Makefile.am (AM_CFLAGS): New.
+       (guile_CFLAGS, libguile_la_CFLAGS): Use it.
+
+2008-08-20  Ludovic Courtès  <ludo@gnu.org>
+
+       * eval.c, filesys.c, gc.c, numbers.c, stime.c, threads.c: Don't
+       define `_GNU_SOURCE' explicitly as it's now defined in
+       <config.h> thanks to `AC_USE_SYSTEM_EXTENSIONS'.
+
+2008-08-19  Han-Wen Nienhuys  <hanwen@lilypond.org>
+           Ludovic Courtès  <ludo@gnu.org>
+
+       * goops.c (scm_init_goops_builtins, go_to_hell): Fix allocation
+       of `hell' by passing "hell_size * sizeof (*hell)" instead of
+       "hell_size" to `scm_malloc ()' and `scm_realloc ()'.
+
+2008-08-02  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * numbers.c (scm_rationalize): Update docstring to match the
+       manual (which is more correct).  Change argument "err" to "eps",
+       also to match the manual.
+
+2008-07-17  Neil Jerram  <neil@ossau.uklinux.net>
+
+       From Thiemo Seufer <ths@networkno.de>:
+       
+       * gc_os_dep.c (CPP_WORDSZ, ALIGN_DOUBLE, DATAEND,
+        DYNAMIC_LOADING): Added #defines.
+        (_fdata, _end): Added declarations.
+        (DATASTART): Use _fdata instead of __data_start.
+        (STACKBOTTOM): Changed from 0x80000000 to 0x7fff8000.
+
+2008-07-16  Ludovic Courtès  <ludo@gnu.org>
+
+       * gen-scmconfig.h.in (SCM_I_GSC_HAVE_STRUCT_DIRENT64): New.
+       * gen-scmconfig.c (main): Produce definitions of
+       `SCM_HAVE_STRUCT_DIRENT64' and `SCM_HAVE_READDIR64_R'.
+       * _scm.h (dirent_or_dirent64): Depend on
+       `SCM_HAVE_STRUCT_DIRENT64', for the sake of HP-UX 11.11.
+       (readdir_r_or_readdir64_r): Depend on `SCM_HAVE_READDIR64_R',
+       for HP-UX 11.11.
+
+2008-07-05  Ludovic Courtès  <ludo@gnu.org>
+
+       * strings.c (scm_c_symbol_length): New function.
+       * strings.h (scm_c_symbol_length): New declaration.
+
+2008-07-04  Ludovic Courtès  <ludo@gnu.org>
+
+       * posix.h (scm_i_locale_mutex): Don't declare as `SCM_INTERNAL'
+       since it's needed by `libguile-i18n'.  Reported by Patrick
+       Horgan <phorgan1@gmail.com>.
+
+       * __scm.h (SCM_INTERNAL): Add `extern' so that these symbols are
+       not considered as "common" by GCC 4.3.  Reported by Patrick
+       Horgan <phorgan1@gmail.com>.
+
+2008-06-28  Ludovic Courtès  <ludo@gnu.org>
+
+       * Makefile.am (INCLUDES): Renamed to...
+       (AM_CPPFLAGS): this, to match current Automake conventions.
+       Users updated.
+
+       * tags.h (SCM_UNPACK): Disable type-checking for `__DECC' and
+       `__HP_cc'.  Reported by Peter O'Gorman <pogma@thewrittenword.com>.
+
+2008-06-02  Ludovic Courtès  <ludo@gnu.org>
+
+       * deprecated.c (maybe_close_port): Rename EXCEPT to EXCEPT_SET
+       to workaround `#define except' on Tru64.  Reported by Peter
+       O'Gorman <pogma@thewrittenword.com>.
+
+2008-05-31  Ludovic Courtès  <ludo@gnu.org>
+
+       * __scm.h (SCM_INTERNAL): New macro.
+       * *.h: Use it to mark as internal `scm_i_' and `scm_init_'
+       functions that are not used by public macros or inline
+       functions.
+
+2008-05-14  Julian Graham  <joolean@gmail.com>
+
+       * threads.c (fat_mutex)[recursive]: New field.
+       (make_fat_mutex): Adjust initialization to reflect changes to
+       mutex lock level semantics.
+       (fat_mutex_lock, fat_mutex_unlock): Add support for unowned
+       mutexes and locking mutexes on behalf of other threads.
+       (scm_lock_mutex, scm_lock_mutex_timed): Update to reflect
+       signature change to fat_mutex_lock.
+       (scm_mutex_owner, scm_mutex_level, scm_mutex_locked_p): New /
+       re-enabled functions.
+       * threads.h (scm_mutex_owner, scm_mutex_level,
+       scm_mutex_locked_p): Prototypes for new functions.
+
+2008-05-12  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * discouraged.c: Expand DEFFROM and DEFTO macros, to avoid
+       compiler warnings about excess semicolons.  (Reported by Didier
+       Godefroy.)
+
+2008-05-08  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * throw.c (scm_ithrow): For IA64 add a return statement, to
+       appease GCC.
+
+       * threads.h (scm_i_thread): New IA64 fields:
+       register_backing_store_base and pending_rbs_continuation.
+
+       * threads.c (guilify_self_1): For IA64: cap RBS base address at
+       the current value of scm_ia64_ar_bsp, and store the capped value
+       in thread state.
+       (SCM_MARK_BACKING_STORE): Use thread->register_backing_store_base
+       instead of scm_ia64_register_backing_store_base().
+       (scm_threads_mark_stacks): Add "&" in "&t->regs", so that the code
+       works both for jmp_buf defined as an array, and jmp_buf defined as
+       a struct.
+
+       * continuations.h (scm_t_contregs): Remove `fresh' and `ctx'
+       fields; these are now inside the IA64 definition of `jmp_buf'.
+
+       * continuations.c (scm_make_continuation): Simplify, by moving
+       some of the IA64 code inside the definition of "setjmp", and by
+       some obvious commonizations.  For IA64 register backing store
+       (RBS) stack base, use thread->register_backing_store_base instead
+       of scm_ia64_register_backing_store_base().
+       (copy_stack): For IA64, store pointer to continuation being
+       invoked in thread state, so we can restore the continuation's RBS
+       stack just before the next setcontext call.
+       (copy_stack_and_call): Don't restore RBS stack explicitly here.
+       It will be restored, if appropriate, inside the longjmp call.
+       (scm_ia64_longjmp): New function.
+
+       * __scm.h (setjmp, longjmp, jmp_buf): For IA64, implement using
+       getcontext and setcontext.
+
+2008-05-07  Ludovic Courtès  <ludo@gnu.org>
+
+       * numbers.c (scm_from_complex_double): Mark as `SCM_UNUSED'.
+       This fixes compilation with `-Werror' on FreeBSD 6.2 (i386).
+
+2008-05-05  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * c-tokenize.lex: #define YY_NO_INPUT.
+
+2008-04-26  Ludovic Courtès  <ludo@gnu.org>
+
+       * read.c (scm_read_sexp): Remove extraneous semi-colon at
+       end-of-line, which broke compilation with GCC 2.7.  Reported by
+       Alain Guibert <alguibert+bts@free.fr>.
+
+2008-04-24  Ludovic Courtès  <ludo@gnu.org>
+
+       * Makefile.am (DEFAULT_INCLUDES): New.  Fixes compilation on
+       Tru64 where our "random.h" would shadown libc's one.
+       (INCLUDES): Add "-I$(top_buildir)", which is normally in
+       `DEFAULT_INCLUDES'.
+       * gen-scmconfig.c: Include <libguile/gen-scmconfig.h>, not
+       "gen-scmconfig.h" since that file is under `$(builddir)'.
+
+2008-04-16  Ludovic Courtès  <ludo@gnu.org>
+
+       * ports.c (scm_getc, scm_putc, scm_puts): Moved...
+       * inline.h: ... here.  Noticeably improves `read' performance.
+
+2008-04-15  Ludovic Courtès  <ludo@gnu.org>
+           Julian Graham  <joolean@gmail.com>
+
+       * read.c (scm_keyword_postfix): New.
+       (scm_read_opts): Update docstring for `keywords'.
+       (scm_read_mixed_case_symbol): Add support for postfix keywords.
+
+2008-04-13  Ludovic Courtès  <ludo@gnu.org>
+
+       * inline.h (SCM_C_USE_EXTERN_INLINE): New macro.  Use it to make
+       sure "extern" declarations are produced when "extern inline" is
+       used.  Simplify macrology around inline definitions.
+
+2008-04-10  Ludovic Courtès  <ludo@gnu.org>
+
+       * inline.h (SCM_C_EXTERN_INLINE): Special-case Apple's GCC
+       4.0-based compiler, which doesn't support GNU inline semantics
+       at all in C99 mode but doesn't define `__GNUC_STDC_INLINE__'.
+       See http://thread.gmane.org/gmane.network.gnutls.general/1135 .
+
+2008-04-10  Andy Wingo  <wingo@pobox.com>
+
+       * struct.c (scm_struct_ref, scm_struct_set_x): "Light" structs
+       have no hidden words (members of the SCM_STRUCT_DATA(x) array
+       accessed with negative indices). In that case, determine the
+       number of fields from the length of the struct layout
+       descriptor. (Most GOOPS instances are light structs.)
+
+       * goops.c (wrap_init): Initialize 'u' slots to 0, not some random
+       SCM value.
+
+       * goops.c (get_slot_value, set_slot_value): In the struct
+       allocation case, don't poke the slots array directly -- we should
+       go through struct-ref/struct-set! code so that we get the
+       permissions and allocation ('u' versus 'p') correct.
+
+2008-04-03  Ludovic Courtès  <ludo@gnu.org>
+
+       * inline.h (SCM_C_EXTERN_INLINE): New macro, addresses the
+       "extern inline" semantic change in C99 mode with GCC 4.3 and
+       later and the warning in C99 mode with GCC 4.2.  Use it in the
+       inline function definitions.
+
+2008-03-24  Neil Jerram  <neil@ossau.uklinux.net>
+
+       Applying patch from Julian Graham, containing minor fixes to his
+       thread enhancements:
+
+       * threads.c (to_timespec): Change 1000000 multiplier to
+       1000000000.
+       (unchecked_unlock_sym, allow_external_unlock_sym,
+       recursive_sym): Use SCM_SYMBOL.
+       (scm_make_mutex_with_flags): When raising unsupported option
+       error, report what the unsupported option was.
+       (fat_mutex_unlock): When raising errors, unlock m->lock first.
+       (fat_cond_timedwait): Removed.
+       (scm_timed_wait_condition_variable): Call fat_mutex_unlock
+       directly instead of via fat_cond_timedwait.
+
+2008-03-10  Ludovic Courtès  <ludo@gnu.org>
+
+       * eval.c, filesys.c: Enclose `alloca' blob in `#ifndef alloca',
+       as per Gnulib's `alloca'.  This should fix compilation on
+       FreeBSD 6.
+
+2008-03-09  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * numbers.c: Only define scm_from_complex_double if it will
+       actually be used.
+
+2008-03-08  Julian Graham  <joolean@gmail.com>
+
+       * threads.c (scm_join_thread_timed, scm_thread_p,
+       scm_make_mutex_with_flags, scm_lock_mutex_timed,
+       scm_unlock_mutex_timed, scm_mutex_p, scm_condition_variable_p): New
+       functions.
+       (thread_mark): Updated to mark new struct field `mutexes'.
+       (do_thread_exit): Notify threads waiting on mutexes locked by exiting
+       thread.
+       (scm_join_thread, scm_make_mutex, scm_make_recursive_mutex,
+       scm_mutex_lock): Reimplement in terms of their newer
+       counterparts.
+       (scm_abandoned_mutex_error_key): New symbol.
+       (fat_mutex)[unchecked_unlock, allow_external_unlock]: New fields.
+       (fat_mutex_lock): Reimplement to support timeouts and abandonment.
+       (fat_mutex_trylock, scm_try_mutex): Remove fat_mutex_trylock and
+       reimplement scm_try_mutex as a lock attempt with a timeout of zero.
+       (fat_mutex_unlock): Allow unlocking from other threads and unchecked
+       unlocking; implement in terms of condition variable wait.
+       (scm_timed_wait_condition_variable): Reimplement in terms of
+       fat_mutex_unlock.
+       * threads.h (scm_i_thread)[mutexes]: New field.
+       (scm_join_thread_timed, scm_thread_p, scm_lock_mutex_timed,
+       scm_unlock_mutex_timed, scm_mutex_p, scm_condition_variable_p):
+       Prototypes for new functions.
+
+2008-03-06  Ludovic Courtès  <ludo@gnu.org>
+
+       * eval.c (scm_eval): If MODULE_OR_STATE is not a dynamic state,
+       make sure it's a module.  Reported by David I. Lehn.
+
+2008-03-02  Ludovic Courtès  <ludo@gnu.org>
+
+       * pairs.h (scm_is_pair): Moved declaration to `inline.h'.
+       * inline.h: Make sure `extern' declarations are not produced
+       when `inline' is supported but GCC is not used.  This
+       fixes "mixed linkage" errors with compilers such as
+       DEC/Compaq/HP CC.
+
+2008-02-27  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * _scm.h (errno): Remove declarations that have been there
+       forever, and are known to conflict on some platforms with that
+       provided by <errno.h>, which we include unconditionally.  If
+       <errno.h> doesn't provide a errno declaration, what is the point
+       of it?
+
+2008-02-23  Ludovic Courtès  <ludo@gnu.org>
+
+       * numbers.c (scm_make_rectangular): Rename argument to
+       `real_part' and `imaginary_part' to work around Solaris 2.10
+       headers which define `imaginary' as a macro.  Patch by Tim
+       Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>.
+
+2008-02-22  Ludovic Courtès  <ludo@gnu.org>
+
+       * read.c (strncasecmp): Add declaration when
+       `HAVE_DECL_STRNCASECMP' is undefined.  Fixes compilation on
+       NetBSD 1.6.
+
+       * gc.c (scm_ia64_ar_bsp)[linux]: Don't discard `const' qualifier
+       of OPAQUE.
+
+2008-02-21  Ludovic Courtès  <ludo@gnu.org>
+
+       Fix bug #22369.
+
+       * goops.c (scm_add_slot): Add `SCM_UNDEFINED' as last argument
+       to `scm_list_n ()'.  Thanks to René Köcher
+       <shirk87@googlemail.com>.
+
+2008-02-17  Ludovic Courtès  <ludo@gnu.org>
+
+       * script.c (scm_compile_shell_switches): Update copyright year.
+
+2008-02-16  Ludovic Courtès  <ludo@gnu.org>
+
+       * gc_os_dep.c: Add NetBSD/alpha support.  Patch by Greg Troxel
+       <gdt@ir.bbn.com>.
+
+2008-02-12  Ludovic Courtès  <ludo@gnu.org>
+
+       * guile-snarf.in (tempdir): Honor `$TMPDIR'.
+
+2008-02-11  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * numbers.c (SCM_COMPLEX_VALUE): Use GUILE_I instead of _Complex_I
+       directly, and only if GUILE_I was defined by the configure step.
+       (scm_log, scm_log10, scm_exp, scm_sqrt): Use SCM_COMPLEX_VALUE
+       code only if SCM_COMPLEX_VALUE is defined.
+
+2008-02-07  Ludovic Courtès  <ludo@gnu.org>
+
+       Fix bug #21378.
+       Thanks to David Diffenbaugh <davediff@nbcs.rutgers.edu>.
+
+       * read.c (scm_read_quote): Don't use `__FUNCTION__' since it is
+       not supported by Sun CC on Solaris 9.
+       (scm_read_keyword): Likewise.
+       * strings.c (scm_take_locale_stringn): Remove
+       `SCM_C_INLINE_KEYWORD' to allow compilation with Sun CC.
+
+2008-02-07  Julian Graham  <joolean@gmail.com>
+
+       * threads.c (do_thread_exit, scm_cancel_thread,
+       scm_set_thread_cleanup_x, scm_thread_cleanup): Lock on thread-specific
+       admin mutex instead of `thread_admin_mutex'.
+       * threads.h (scm_i_thread)[admin_mutex]: New field.
+       * throw.c (make_jmpbuf): Don't enter critical section during thread
+       spawn -- there is a possibility of deadlock if other threads are
+       exiting.
+
+2008-02-06  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * gc-malloc.c (scm_gc_malloc): Return NULL if requested size is 0.
+       (scm_gc_free): Don't call `free' if mem is NULL.
+
+2008-02-06  Ludovic Courtès  <ludo@gnu.org>
+
+       * numbers.c (scm_i_mkbig, scm_i_long2big, scm_i_ulong2big,
+       scm_i_clonebig, scm_i_bigcmp, scm_i_dbl2big, scm_i_dbl2num,
+       scm_i_normbig): Remove `SCM_C_INLINE_KEYWORD' since these are
+       declared as `extern' in `numbers.h'.  This precluded compilation
+       on Solaris 9 with Sun CC (reported by David Halik
+       <dhalik@nbcs.rutgers.edu>).
+
+2008-02-05  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * fports.c (fport_seek): Make dependent on GUILE_USE_64_CALLS.
+
+       * _scm.h: Make definition of CHOOSE_LARGEFILE depend on
+       GUILE_USE_64_CALLS.
+
+2008-02-01  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * modules.c (the_root_module): Moved before scm_current_module.
+       (scm_current_module): Return the root module if `the-module' fluid
+       gives #f.
+
+2008-01-22  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * COPYING: Removed.
+
+       * __scm.h, _scm.h, weaks.c: Update copyright statement to LGPL.
+
+2008-01-18  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * hashtab.c (scm_hash_fn_create_handle_x): If supplied assoc_fn
+       returns neither a pair nor #f, signal a wrong-type-arg error.
+       (Thanks to Gregory Marton for reporting this.)
+
+2007-12-29  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * gc.c (mark_gc_async): Change "func_data" to "fn_data", to avoid
+       clash with AIX header file.
+       * hooks.c (scm_c_hook_add, scm_c_hook_remove): Same again.
+       * hooks.h (scm_t_c_hook_function, scm_c_hook_add,
+       scm_c_hook_remove): Same again.
+
+2007-12-08  Ludovic Courtès  <ludo@gnu.org>
+
+       * __scm.h (SCM_EXPECT, SCM_LIKELY, SCM_UNLIKELY): New macros.
+       (SCM_ASSERT, SCM_ASSERT_TYPE, SCM_ASRTGO, SCM_GASSERT0,
+       SCM_GASSERT1, SCM_GASSERT2, SCM_GASSERTn): Use them.
+       * eval.c (ASSERT_SYNTAX, ASSERT_SYNTAX_2): Likewise.
+       * eval.i.c (CEVAL): Use branch prediction hints for syntax
+       errors, wrong number of arguments and similar.
+       * numbers.c (scm_sum): Use `SCM_LIKELY' for the sum of two
+       immediate numbers.
+       (scm_difference, scm_product, scm_i_divide): Likewise.
+       * validate.h (SCM_ASSERT_RANGE): Use `SCM_UNLIKELY'.
+
+2007-12-04  Ludovic Courtès  <ludo@gnu.org>
+
+       * ports.c (scm_c_read): Validate PORT as an open input port.
+       (scm_c_write): Validate PORT as an open output port.
+
+       * socket.c (scm_accept): Leave guile mode using
+       `scm_std_select ()' before calling `accept(2)'.  Reported by
+       dskr <dskr@mac.com>.
+
+2007-10-27  Ludovic Courtès  <ludo@gnu.org>
+
+       * fports.c (scm_i_evict_port): Expect a port, rather than a pair
+       containing the port.  Fixes a bug in the new port table (2007-08-26).
+       (scm_evict_ports): Use `scm_c_port_for_each ()'.
+
+2007-10-21  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * eval.c (unmemoize_delay): Extend the environment before
+       unmemoizing the promise thunk.  This fixes a segmentation fault
+       reported by Frank Schwidom.
+
+2007-10-20  Julian Graham  <joolean@gmail.com>
+
+       Add support for thread cancellation and user-defined thread
+       cleanup handlers.  Small rework by Ludovic Courtès.
+
+       * null-threads.h (scm_i_pthread_cancel,
+       scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
+       * pthread-threads.h (scm_i_pthread_cancel,
+       scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
+       * scmsigs.c (scm_i_signal_delivery_thread,
+       signal_delivery_thread_mutex): New.
+       (signal_delivery_thread): Leave when `read_without_guile ()'
+       returns zero.
+       (start_signal_delivery_thread): Acquire SIGNAL_DELIVERY_THREAD
+       before spawning the thread.  Initialize
+       SCM_I_SIGNAL_DELIVERY_THREAD.
+       (ensure_signal_delivery_thread): Renamed to...
+       (scm_i_ensure_signal_delivery_thread): this.
+       (scm_i_close_signal_pipe): New.
+       * scmsigs.h: Updated.
+       * threads.c (thread_mark): Mark `t->cleanup_handler'.
+       (guilify_self_1): Initialize `t->cleanup_handler' and
+       `t->canceled'.
+       (do_thread_exit): Invoke `t->cleanup_handler'.
+       (on_thread_exit): Call `scm_i_ensure_signal_delivery_thread ()'.
+       Call `scm_i_close_signal_pipe ()' when the next-to-last thread
+       vanishes.
+       (scm_leave_guile_cleanup): New.
+       (scm_i_with_guile_and_parent): Use `scm_i_pthread_cleanup_push ()'
+       and `scm_leave_guile_cleanup ()' to leave guile mode, rather
+       than call `scm_leave_guile ()' after FUNC.
+       (scm_cancel_thread, scm_set_thread_cleanup_x,
+       scm_threads_cleanup): New.
+       (scm_all_threads): Remove SCM_I_SIGNAL_DELIVERY_THREAD from the
+       returned list.
+       * threads.h (scm_i_thread)[cleanup_handler, canceled]: New
+       fields.
+       Add declarations of new functions.
+
+2007-10-17  Ludovic Courtès  <ludo@gnu.org>
+
+       * read.c (CHAR_IS_BLANK_): Add `\r' (ASCII 0x0d).  This fixes a
+       regression compared to 1.8.2.  Reported by Puneet
+       <schemer@gmail.com>.
+
+2007-10-10  Ludovic Courtès  <ludo@gnu.org>
+
+       * pthread-threads.h (SCM_I_PTHREAD_MUTEX_INITIALIZER): Check
+       `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
+       * gen-scmconfig.h.in
+       (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER): New.
+       * gen-scmconfig.c (main): Define
+       `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
+
+2007-10-04  Ludovic Courtès  <ludo@gnu.org>
+
+       * i18n.c (scm_make_locale)[!USE_GNU_LOCALE_API]: Don't call
+       `leave_locale_section ()' on failure of
+       `enter_locale_section ()' since the mutex is not held and locale
+       settings are unchanged.
+       (scm_nl_langinfo)[!USE_GNU_LOCALE_API]: Use
+       `restore_locale_settings ()' instead of `leave_locale_section ()'
+       since the mutex is not held.
+
+2007-10-02  Ludovic Courtès  <ludo@gnu.org>
+
+       * threads.c (on_thread_exit): Don't call `scm_leave_guile ()'
+       since we're already in non-guile mode.  Reported by Greg Toxel
+       for NetBSD.
+
+2007-10-01  Ludovic Courtès  <ludo@gnu.org>
+
+       * ports.c (flush_output_port): Expect directly a port instead of
+       a pair.  Fixes a bug in the new port table (2007-08-26).
+
+2007-09-11  Kevin Ryde  <user42@zip.com.au>
+
+       * posix.c (scm_putenv): Confine the putenv("NAME=") bit to mingw, use
+       putenv("NAME") as the fallback everywhere else.  In particular this is
+       needed for solaris 9.  Reported by Frank Storbeck.
+
+2007-09-03  Ludovic Courtès  <ludo@gnu.org>
+
+       * read.c (flush_ws): Handle SCSH block comments.
+
+2007-09-03  Ludovic Courtès  <ludo@gnu.org>
+
+       Fix alignment issues which showed up at least on SPARC.
+
+       * socket.c (scm_t_max_sockaddr, scm_t_getsockopt_result): New.
+       (scm_inet_pton): Change DST to `scm_t_uint32' for correct
+       alignment.
+       (scm_getsockopt): Change OPTVAL to `scm_t_getsockopt_result' for
+       correct alignment.
+       (_scm_from_sockaddr): Change ADDRESS to `scm_t_max_sockaddr *'.
+       (scm_from_sockaddr): Cast ADDRESS to `scm_t_max_sockaddr *'.
+       (MAX_SIZE_UN, MAX_SIZE_IN6): Removed.
+       (scm_accept, scm_getsockname, scm_getpeername, scm_recvfrom):
+       Use `scm_t_max_sockaddr' instead of "char max_addr[MAX_ADDR_SIZE]".
+
+2007-09-03  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (scm_log): Test HAVE_CLOG as well as HAVE_COMPLEX_DOUBLE
+       before using clog().  It's possible for gcc to provide the "complex
+       double" type, but for the system not to have the complex funcs.
+       (scm_exp): Ditto HAVE_CEXP for cexp().
+       (clog, cexp, carg): Remove fallback definitions.  These only
+       duplicated the code within scm_log and scm_exp, and the latter have to
+       exist for the case when there's no "complex double".  So better just
+       fix up the conditionals selecting between the complex funcs and plain
+       doubles than worry about fallbacks.
+
+2007-09-02  Ludovic Courtès  <ludo@gnu.org>
+
+       * socket.c (scm_make_socket_address): Free C_ADDRESS after use.
+       This fixes a memory leak.
+
+2007-08-26  Han-Wen Nienhuys  <hanwen@lilypond.org>
+
+       * fports.c gc-card.c gc.c gc.h ioext.c ports.c ports.h weaks.h
+       gc.c: replace port table with weak hash table. This simplifies
+       memory management, and fixes freed cells appearing in
+       port-for-each output.
+
+       * init.c (cleanup_for_exit): abort cleanup if init_mutex is still
+       held.
+
+2007-08-23  Ludovic Courtès  <ludo@gnu.org>
+
+       * read.c (scm_read_quote): Record position and copy source
+       expression when asked to.  Reported by Kevin.
+
+       * stime.c: Define `_REENTRANT' only if not already defined.
+
+2007-08-21  Kevin Ryde  <user42@zip.com.au>
+
+       * gc-card.c (scm_i_card_statistics): Record scm_tc7_number types as
+       tc16 values so big, real, complex and fraction can be distinguished.
+
+       (scm_i_tag_name): Return "number" for scm_tc7_number, not NULL.  NULL
+       was making numbers come out as "type 23" in gc-live-object-stats.
+       Fix tests of the tc16 number types, they were checked under
+       scm_tc7_number, but the values went down the tag>=255 smob case.
+       Put smob case under scm_tc7_smob instead of using tag>=255, per
+       recommendation in comments with scm_tc7_smob to use symbolic values.
+       Use SCM_TC2SMOBNUM to extract scm_smobs index, instead of explicit
+       code.  Lose some unnecessary "break" statements.
+
+       (scm_i_card_statistics): Use scm_hashq_create_handle_x and modify the
+       element returned, rather than two lookups scm_hashq_ref and
+       scm_hashq_set_x.
+
+2007-08-17  Kevin Ryde  <user42@zip.com.au>
+
+       * stime.c: Add #define _REENTRANT, to get gmtime_r() prototype on
+       solaris 2.6.  Reported by anirkko.
+
+2007-07-29  Ludovic Courtès  <ludo@gnu.org>
+
+       * Makefile.am (INCLUDES): Added Gnulib includes.
+       (gnulib_library): New.
+       (libguile_i18n_v_@LIBGUILE_I18N_MAJOR@_la_LIBADD): Added
+       `$(gnulib_library)'.
+       (libguile_la_LIBADD): Likewise.
+
+       * posix.c: Don't define `_GNU_SOURCE' since `gl_EARLY' arranges
+       to define it when available.
+       * srfi-14.c: Likewise.
+       * i18n.c: Likewise.  Include Gnulib's <alloca.h>
+       * eval.c: Include Gnulib's <alloca.h>.
+       * filesys.c: Likewise.
+       * read.c: Don't include <strings.h> and don't provide an
+       `strncasecmp ()' replacement; use Gnulib's <string.h> and
+       `strncasecmp ()' instead.
+
+2007-07-25  Ludovic Courtès  <ludo@gnu.org>
+
+       * eval.c (macroexp): When `scm_ilength (res) <= 0', return
+       immediately.  This used to produce a circular memoized
+       expression, e.g., for `(set (quote x) #t)'.
+
+2007-07-22  Ludovic Courtès  <ludo@gnu.org>
+
+       Overhauled the reader, making it faster.
+
+       * gdbint.c (tok_buf, tok_buf_mark_p): Removed.
+       (gdb_read): Don't use a token buffer.  Use `scm_read ()' instead
+       of `scm_lreadr ()'.
+
+       * read.c: Overhauled.  No longer use a token buffer.  Use a
+       on-stack C buffer in the common case and use Scheme strings when
+       larger buffers are needed.
+       * read.h (scm_grow_tok_buf, scm_flush_ws, scm_casei_streq,
+       scm_lreadr, scm_lreadrecparen): Removed.
+       (scm_i_input_error): Marked as `SCM_NORETURN'.
+
+2007-07-15  Ludovic Courtès  <ludo@gnu.org>
+
+       * script.c (scm_compile_shell_switches): Updated copyright year.
+
+2007-07-11  Ludovic Courtès  <ludo@gnu.org>
+
+       * goops.c (scm_sys_method_more_specific_p): Added docstring.
+       Make sure LEN is greater than or equal to the minimum length of
+       specializers of M1 and M2.  This fixes a segfault later on in
+       `more_specificp ()' if TARGS is too small.  Reported by Marco
+       Maggi <marco.maggi-ipsu@poste.it>.
+
+2007-06-26  Ludovic Courtès  <ludo@gnu.org>
+
+       * fluids.c (next_fluid_num): When growing ALLOCATED_FLUIDS, make
+       sure to free the previous array after the new one has been
+       installed.  This leak is made visible by running
+       "(define l (map (lambda (i) (make-fluid)) (iota 255)))"
+       from the REPL within Valgrind.
+
+2007-06-12  Ludovic Courtès  <ludo@chbouib.org>
+
+       * socket.c (scm_inet_ntop): In the `AF_INET' case, declare `addr4'
+       as an `scm_t_uint32' rather than re-using `addr6'.  This fixes a
+       bus error on SPARC (and possibly others) due to unaligned access.
+
+2007-06-07  Ludovic Courtès  <ludovic.courtes@laas.fr>
+
+       * posix.c (scm_ttyname): Check whether RESULT is NULL before
+       making a string from it (reported by Dan McMahill).  Don't call
+       `scm_from_locale_string ()' before the mutex is released.
+
+2007-05-26  Ludovic Courtès  <ludo@chbouib.org>
+
+       * eval.c (scm_m_define): Updated comment.  Changed order for value
+       evaluation and `scm_sym2var ()' call, which is perfectly valid per
+       R5RS.  This reverts the change dated 2004-04-22 by Dirk Herrmann.
+
+2007-05-05  Ludovic Courtès  <ludo@chbouib.org>
+
+       Implemented lazy duplicate binding handling.
+
+       * modules.c (scm_export): Renamed to...
+       (scm_module_export): This.  Now public.
+       (module_variable): Removed.
+       (default_duplicate_binding_procedures_var): New variable.
+       (default_duplicate_binding_handlers, resolve_duplicate_binding,
+       module_imported_variable, scm_module_local_variable,
+       scm_module_variable): New functions.
+       (scm_module_import_interface): Rewritten.
+       (scm_module_reverse_lookup): Exported as a Scheme function.
+       * modules.h (scm_module_index_duplicate_handlers,
+       scm_module_index_import_obarray): New macros.
+       (scm_module_variable, scm_module_local_variable,
+       scm_module_export): New declarations.
+
+2007-04-17  Ludovic Courtès  <ludovic.courtes@laas.fr>
+
+       * numbers.c: Commented out trailing `HAVE_COMPLEX_DOUBLE' after
+       `#endif'.  Use `#ifndef HAVE_XXX' rather than `#if !HAVE_XXX'.
+
+2007-04-09  Han-Wen Nienhuys  <hanwen@lilypond.org>
+
+       * numbers.c (carg): provide carg, cexp, clog in case they are
+       missing.
+
+2007-03-12  Ludovic Courtès  <ludovic.courtes@laas.fr>
+
+       * i18n.c (scm_nl_langinfo): `#ifdef'd uses of `GROUPING',
+       `FRAC_DIGITS', etc., which are GNU extensions.  Reported by
+       Steven Wu.
+
+2007-03-08  Kevin Ryde  <user42@zip.com.au>
+
+       * struct.c, struct.h (scm_make_vtable): New function, providing
+       `make-vtable'.
+       * stacks.c (scm_init_stacks): Use it.
+
+2007-03-06  Kevin Ryde  <user42@zip.com.au>
+
+       * struct.c (scm_make_struct): Check for R,W,O at end of layout when
+       allocating a tail array.  If there's no such then those tail fields
+       are uninitialized and garbage SCMs there can cause a segv if printed
+       (after fetching with struct-ref).
+
+2007-02-22  Kevin Ryde  <user42@zip.com.au>
+
+       * scmsigs.c (scm_sleep): In docstring, cross refence usleep.
+       (scm_usleep): Update docstring per manual, cross reference sleep.
+
+       * struct.c (scm_make_struct): Move SCM_CRITICAL_SECTION_END up so that
+       scm_struct_init is not within that section.  scm_struct_init can
+       thrown an error, which within a critical section results in an
+       abort().
+
+2007-02-19  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * Makefile.am (noinst_HEADERS): Add private-options.h, so that it
+       is included in the distribution.
+       (noinst_HEADERS): And the same for eval.i.c.
+
+2007-01-31  Ludovic Courtès  <ludovic.courtes@laas.fr>
+
+       * i18n.c: Include "libguile/threads.h" and "libguile/posix.h"
+       unconditionally.  Include <langinfo.h> and <nl_types.h> when
+       available.
+       (SCM_I18N_STRINGIFY, SCM_LOCALE_CATEGORY_MASK,
+       SCM_LIST_OR_INTEGER_P): New macros.
+       (LC_*_MASK): When `USE_GNU_LOCALE_API' is undefined, define them
+       as powers of two instead of `(1 << LC_*)'.
+       (scm_i_locale_free): New function/macro.
+       (scm_global_locale): New global variable.
+       (smob_locale_free): Use `scm_i_locale_free ()'.
+       (smob_locale_mark): Check whether the SMOB is `%global-locale'.
+       (get_current_locale_settings): Return `EINVAL' instead of `errno'
+       when `setlocale' fails.
+       (restore_locale_settings): Likewise.
+       (install_locale_categories): Likewise.
+       (install_locale): Likewise.  Stop the locale stack traversal when
+       all categories have been handled.
+       (get_current_locale, category_to_category_mask,
+       category_list_to_category_mask): New function.
+       (scm_make_locale): Use them.  Accept both lists of `LC_*' values
+       and single `LC_*' values as the first argument.  Handle the case
+       where BASE_LOCALE is `%global-locale'.  When `USE_GNU_LOCALE_API',
+       duplicate C_BASE_LOCALE before using it.
+       (scm_nl_langinfo, define_langinfo_items): New functions.
+       (scm_init_i18n): When `HAVE_NL_LANGINFO', add feature
+       `nl-langinfo' and invoke `define_langinfo_items ()'.
+       * i18n.h (scm_global_locale, scm_nl_langinfo): New declarations.
+       * posix.c: Include <xlocale.h> when available.
+       (scm_i_locale_mutex): Always define it.  Statically initialized.
+       (scm_set_locale): Invoke `scm_i_to_lc_category ()' before
+       acquiring the locale mutex.
+       (scm_init_posix): No longer initialize SCM_I_LOCALE_MUTEX here.
+
+2007-01-27  Kevin Ryde  <user42@zip.com.au>
+
+       * ports.c (scm_port_line, scm_set_port_line_x), read.c
+       (scm_i_input_error, scm_lreadr, scm_lreadrecparen): Corrections to
+       port line number type, should be "long" not "int", as per line_number
+       field of scm_t_port.  (Makes a difference only on 64-bit systems, and
+       only then for a linenum above 2Gig.)
+
+2007-01-25  Han-Wen Nienhuys  <hanwen@lilypond.org>
+
+       * vector.c: remove comment as per kryde's request.
+
+2007-01-25  Kevin Ryde  <user42@zip.com.au>
+
+       * sort.c (scm_stable_sort): Return empty list for input empty list, as
+       done in guile 1.6 and as always done by plain `sort'.  Was falling
+       through to SCM_WRONG_TYPE_ARG.  Reported by Ales Hvezda.
+
+2007-01-22  Han-Wen Nienhuys  <hanwen@lilypond.org>
+
+       * vectors.c (s_scm_vector_move_right_x): complain about naming.
+
+       * srcprop.c: regularize comments.
+
+       * eval.c: remove superfluous ifndef DEVAL.
+
+       * private-options.h: idem.
+
+       * eval.i.c: copyright nitpicking.
+
+       * eval.c: distangle. move duplicate code to eval.i.c and include
+       twice.
+
+       * eval.i.c: new file.
+
+       * backtrace.c, debug.c, debug.h, deprecation.c, eq.c, eval.c
+       eval.h, gsubr.c, init.c, macros.c, print.c, print.h, read.c,
+       read.h, stacks.c, symbols.c, throw.c: use private-options.h
+
+       * private-options.h: new file: contain hardcoded option
+       definitions.
+
+       * private-gc.h: add FSF header.
+
+2007-01-19  Han-Wen Nienhuys  <hanwen@lilypond.org>
+
+       * debug.h (SCM_RESET_DEBUG_MODE): switch to debugging if
+       memoize-symbol is set.
+
+       * eval.h (SCM_MEMOIZE_HDLR): add macros for memoize symbol trap.
+
+       * eval.c (CEVAL): add memoize_symbol trap.
+
+       * options.c (scm_options_try): new function. This allows error
+       reporting before changing options in a critical section.
+
+       * srcprop.c: use double cell for storing source-properties.  Put
+       filename in the plist, and share between srcprops if possible.
+       Remove specialized storage.
+
+       * srcprop.h: remove macros without SCM_ prefix from
+       interface. Remove specialized storage/type definitions.
+
+       * read.c: idem.
+
+       * print.c: idem.
+
+       * eval.c: terminate option lists with 0.
+
+       * options.c: remove n (for length) from scm_option_X
+       functions. Detect option list length by looking for NULL name.
+
+2007-01-19  Ludovic Courtès  <ludovic.courtes@laas.fr>
+
+       * struct.c (scm_i_struct_equalp): Skip comparison if both FIELD1
+       is equal to S1 and FIELD2 is equal to S2.  This avoids infinite
+       recursion when comparing `s' fields, as the REQUIRED_VTABLE_FIELDS
+       added by `make-vtable-vtable'.  Reported by Marco Maggi.
+
+2007-01-18  Han-Wen Nienhuys  <hanwen@lilypond.org>
+
+       * throw.c (scm_ithrow): more refined error message: print symbols
+       too.
+
+2007-01-16  Kevin Ryde  <user42@zip.com.au>
+
+       * feature.c, feature.h (scm_set_program_arguments_scm): New function,
+       implementing `set-program-arguments'.
+
+       * filesys.c (scm_init_filesys): Use scm_from_int rather than
+       scm_from_long for O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL,
+       O_NOCTTY, O_TRUNC, O_APPEND, O_NONBLOCK, O_NDELAY, O_SYNC and
+       O_LARGEFILE.  These are all int not long, per arg to open().
+       (scm_init_filesys): Use scm_from_int rather than scm_from_long for
+       F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETOWN, F_SETOWN, these
+       are all ints (per command arg to fcntl).  Likewise FD_CLOEXEC which is
+       an int arg to fcntl.
+
+       * posix.c (scm_putenv): Correction to "len" variable, was defined only
+       for __MINGW32__ but used under any !HAVE_UNSETENV (such as solaris).
+       Move it to where it's used.  Reported by Hugh Sasse.
+
+       * regex-posix.c (scm_regexp_exec): Remove SCM_CRITICAL_SECTION_START
+       and SCM_CRITICAL_SECTION_END, believe not needed.  Their placement
+       meant #\nul in the input (detected by scm_to_locale_string) and a bad
+       flags arg (detected by scm_to_int) would throw from a critical
+       section, causing an abort().
+
+       * regex-posix.c (scm_init_regex_posix): Use scm_from_int for
+       REG_BASIC, REG_EXTENDED, REG_ICASE, REG_NEWLINE, REG_NOTBOL,
+       REG_NOTEOL; they're all ints not longs (per args to regcomp and
+       regexec).
+
+2007-01-10  Han-Wen Nienhuys  <hanwen@lilypond.org>
+
+       * throw.c (scm_ithrow): print out key symbol and string arguments
+       when error happens inside a critical section, and document why.
+
+2007-01-06  Han-Wen Nienhuys  <hanwen@lilypond.org>
+
+       * read.c (s_scm_read_hash_extend): document #f argument to
+       read-hash-extend.
+
+2007-01-04  Kevin Ryde  <user42@zip.com.au>
+
+       * deprecated.h (scm_create_hook), version.h.in (scm_major_version,
+       scm_minor_version, scm_micro_version, scm_effective_version,
+       scm_version, scm_init_version): Use SCM_API instead of just extern,
+       for the benefit of mingw.  Reported by Cesar Strauss.
+
+2007-01-03  Han-Wen Nienhuys  <hanwen@lilypond.org>
+
+       * gc.c (s_scm_gc_stats): return an entry for total-cells-allocated
+       too.
+       (gc_update_stats): update scm_gc_cells_allocated_acc too.
+
+2006-12-27  Kevin Ryde  <user42@zip.com.au>
+
+       * threads.c (get_thread_stack_base): In mingw with pthreads we can use
+       the basic scm_get_stack_base.  As advised by Nils Durner.
+
+       * threads.c (get_thread_stack_base): Add a version using
+       pthread_get_stackaddr_np (when available), for the benefit of MacOS.
+       As advised by Heikki Lindholm.
+
+       * scmsigs.c (signal_delivery_thread): Restrict scm_i_pthread_sigmask
+       to HAVE_PTHREAD_SIGMASK, it doesn't exist on mingw.  Reported by Nils
+       Durner.
+
+2006-12-24  Kevin Ryde  <user42@zip.com.au>
+
+       * posix.c (scm_kill): When only raise() is available, throw an ENOSYS
+       error if pid is not our own process, instead of silently doing nothing.
+
+       * print.c (scm_write, scm_display, scm_write_char): Disable port close
+       on EPIPE.  This was previously disabled but introduction of HAVE_PIPE
+       check in configure.in unintentionally enabled it.  Believe that
+       testing errno after scm_prin1 or scm_putc is bogus, a long ago error
+       can leave errno in that state.  popen.test "no duplicates" output test
+       provoked that.
+
+2006-12-23  Han-Wen Nienhuys  <hanwen@lilypond.org>
+
+       * numbers.c (scm_i_fraction_reduce): move logic into
+       scm_i_make_ratio(), so fractions are only read.
+       scm_i_fraction_reduce() modifies a fraction when reading it.  A
+       race condition might lead to fractions being corrupted by reading
+       them concurrently.
+
+       Also, the REDUCED bit alters the SCM_CELL_TYPE(), making
+       comparisons between reduced and unreduced fractions go wrong.
+
+       * numbers.h: remove SCM_FRACTION_SET_NUMERATOR,
+       SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
+       SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
+       SCM_FRACTION_REDUCED.
+
+2006-12-16  Kevin Ryde  <user42@zip.com.au>
+
+       * scmsigs.c (scm_raise): Use raise() rather than kill(), as this is
+       more direct for a procedure called raise.
+       (kill): Remove mingw fake fallback.
+
+2006-12-15  Kevin Ryde  <user42@zip.com.au>
+
+       * scmsigs.c: Conditionalize process.h, add io.h believe needed for
+       _pipe on mingw.
+
+2006-12-14  Kevin Ryde  <user42@zip.com.au>
+
+       * threads.c (thread_print): Cope with the case where pthread_t is a
+       struct, as found on mingw.  Can't just cast to size_t for printing.
+       Reported by Nils Durner.
+
+       * scmsigs.c: Add <fcntl.h> and <process.h> needed by mingw.  Copy the
+       fallback pipe() using _pipe() from posix.c.  Reported by Nils Durner.
+
+2006-12-13  Kevin Ryde  <user42@zip.com.au>
+
+       * eval.c (scm_m_define): Set 'name procedure property on any
+       scm_procedure_p, not just SCM_CLOSUREP.  In particular this picks up
+       procedures with setters as used in srfi-17.
+
+       * posix.c (scm_crypt): Check for NULL return from crypt(), which the
+       linux man page says is a possibility.
+
+2006-12-12  Ludovic Courtès  <ludovic.courtes@laas.fr>
+
+       * libguile/unif.c (read_decimal_integer): Let RESP be SIGN * RES
+       instead of RES (reported by Szavai Gyula).  This allows the use of
+       negative lower bounds.
+       (scm_i_read_array): Make sure LEN is non-negative (reported by
+       Szavai Gyula).
+
+       (scm_array_in_bounds_p): Iterate over S instead of always
+       comparing indices with the bounds of S[0].  This fixes
+       `array-in-bounds?' for arrays with a rank greater than one and
+       with different lower bounds for each dimension.
+
+2006-12-05  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (scm_product): For flonum*inum and complex*inum, return
+       exact 0 if inum==0.  Already done for inum*flonum and inum*complex,
+       and as per R5RS section "Exactness".
+
+2006-12-03  Kevin Ryde  <user42@zip.com.au>
+
+       * Makefile.am (.c.doc): Remove the "test -n" apparently attempting to
+       allow $AWK from the environment to override.  It had syntax gremlins,
+       and the presence of a $(AWK) variable set by AC_PROG_AWK in the
+       Makefile stopped it having any effect.  Use just $(AWK), which can be
+       overridden with "make AWK=xxx" in the usual way if desired.
+
+2006-11-29  Ludovic Courtès  <ludovic.courtes@laas.fr>
+
+       * libguile/vectors.c (scm_vector_to_list): Fixed list
+       construction: elements were not copied when INC is zero (see
+       "shared array" example in `vectors.test').  Reported by
+       Szavai Gyula.
+
+2006-11-18  Ludovic Courtès  <ludovic.courtes@laas.fr>
+
+       * Makefile.am (lib_LTLIBRARIES): Added `libguile-i18n-v-XX.la'.
+       (libguile_la_SOURCES): Added `gettext.c', removed `i18n.c'.
+       (libguile_i18n_v_XX_la_SOURCES, libguile_i18n_v_XX_la_CFLAGS,
+       libguile_i18n_v_XX_la_LIBADD, libguile_i18n_v_XX_la_LDFLAGS): New.
+       (DOT_X_FILES): Added `gettext.x'.
+       (DOT_DOC_FILES): Likewise.
+       (EXTRA_libguile_la_SOURCES): Added `locale-categories.h'.
+       (modinclude_HEADERS): Added `gettext.h'.
+       (EXTRA_DIST): Added `libgettext.h'.
+
+       * gettext.h: Renamed to...
+       * libgettext.h: New file.
+
+       * i18n.c: Renamed to...
+       * gettext.c: New file.
+
+       * i18n.h: Renamed to...
+       * gettext.h: New file.
+
+       * i18n.c, i18n.h, locale-categories.h: New files.
+
+       * init.c: Include "libguile/gettext.h" instead of
+       "libguile/i18n.h".
+       (scm_i_init_guile): Invoke `scm_init_gettext ()' instead of
+       `scm_init_i18n ()'.
+
+       * posix.c: Include "libguile/gettext.h" instead of
+       "libguile/i18n.h"  Test `HAVE_NEWLOCALE' and `HAVE_STRCOLL_L'.
+       (USE_GNU_LOCALE_API): New macro.
+       (scm_i_locale_mutex): New variable.
+       (scm_setlocale): Lock and unlock it around `setlocale ()' calls.
+
+       * posix.h: Include "libguile/threads.h".
+       (scm_i_locale_mutex): New declaration.
+
+2006-11-17  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * script.c (scm_shell_usage): Note need for subscription to bug-guile@gnu.org.
+
+2006-11-08  Ludovic Courtès  <ludovic.courtes@laas.fr>
+
+       * libguile/gc-freelist.c (scm_i_adjust_min_yield): Take two
+       "sweep_stats" arguments; use them instead of accessing the global
+       variables `scm_gc_cells_collected' and `scm_gc_cells_collected_1'.
+
+       * libguile/gc-segment.c (scm_i_sweep_some_cards): Reset SWEEP
+       before each iteration of the loop.
+       (scm_i_sweep_some_segments): Reset SWEEP at each iteration.
+       (scm_i_get_new_heap_segment): Take an additional argument
+       SWEEP_STATS.  Compute MIN_CELLS as a function of it.
+
+       * libguile/gc.c (scm_gc_cells_collected,
+       scm_gc_cells_collected_1): Removed.
+       (scm_i_gc_sweep_stats, scm_i_gc_sweep_stats_1): New.
+       (scm_gc_cells_marked_acc, scm_gc_cells_swept_acc,
+       scm_gc_time_taken, scm_gc_mark_time_taken, scm_gc_times,
+       scm_gc_cell_yield_percentage, protected_obj_count): Made `static'.
+       (scm_gc_stats): Use `scm_i_gc_sweep_stats' instead of
+       `scm_gc_cells_(collected|swept)'.
+       (gc_update_stats): New.
+       (gc_end_stats): Use `scm_i_gc_sweep_stats' and
+       `scm_i_gc_sweep_stats_1' instead of the former globals.
+       (scm_gc_for_newcell): Invoke `gc_update_stats ()' after each
+       `scm_i_sweep_some_segments' call.  This fixes a bug where the GC
+       would keep allocating new segments instead of re-using collected
+       cells (because `scm_gc_cells_collected' would remain zero).
+
+       * libguile/gc.h (scm_gc_cells_swept, scm_gc_cells_collected,
+       scm_gc_cell_yield_percentage): Removed.
+
+       * libguile/private-gc.h (scm_gc_cells_collected_1): Removed.
+       (scm_i_adjust_min_yield): Updated.
+       (scm_i_get_new_heap_segment): Updated.
+
+2006-11-02  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * modules.c: Correct comment saying that low-level environments
+       will be used "in the next release".
+
+       * init.c: Comment out #include of environments.h.
+       (scm_i_init_guile): Comment out scm_environments_prehistory() and
+       scm_init_environments() calls.
+
+       * Makefile.am (libguile_la_SOURCES): Remove environments.c.
+       (DOT_X_FILES): Remove environments.x.
+       (DOT_DOC_FILES): Remove environments.doc.
+       (modinclude_HEADERS): Remove environments.h.
+
+2006-10-25  Neil Jerram  <neil@ossau.uklinux.net>
+
+       IA64 HP-UX GC patch from Hrvoje Nikšić.  (Thanks!)
+
+       * threads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp() and
+       scm_ia64_register_backing_store_base() instead of Linux-specific
+       implementations.
+
+       * gc.h (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp):
+       New declarations.
+
+       * gc.c (__libc_ia64_register_backing_store_base): Declaration
+       removed.
+       (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp): New, with
+       implementations for Linux and HP-UX.
+
+       * coop-pthreads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp()
+       and scm_ia64_register_backing_store_base() instead of
+       Linux-specific implementations.
+
+       * continuations.h (__libc_ia64_register_backing_store_base):
+       Declaration removed.
+       (scm_t_contregs): New "fresh" field.
+
+       * continuations.c (ia64_getcontext): Removed.
+       (scm_make_continuation): Use continuation fresh field instead of
+       interpreting getcontext return values (which isn't portable).  Use
+       scm_ia64_ar_bsp() and scm_ia64_register_backing_store_base()
+       instead of Linux-specific implementations.
+       (copy_stack_and_call): Use scm_ia64_register_backing_store_base()
+       instead of Linux-specific implementation.
+
+       * _scm.h (__ia64__): Also detect __ia64.
+
+2006-10-03  Kevin Ryde  <user42@zip.com.au>
+
+       * eval.c (SCM_APPLY): For scm_tc7_subr_2o, throw wrong-num-args on 0
+       arguments or 3 or more arguments.  Previously 0 called proc with
+       SCM_UNDEFINED, and 3 or more silently used just the first 2.
+
+2006-09-28  Kevin Ryde  <user42@zip.com.au>
+
+       * fports.c, ports.c (ftruncate): Use "HAVE_CHSIZE && ! HAVE_FTRUNCATE"
+       for chsize fallback, instead of hard-coding mingw.  Mingw in fact
+       supplies ftruncate itself these days.
+
+       * ports.c (fcntl.h): Can include this unconditionally, no need for
+       __MINGW32__.
+
+       * ports.c (truncate): Conditionalize on "HAVE_FTRUNCATE && !
+       HAVE_TRUNCATE" so as not to hard-code mingw.  Use "const char *" and
+       "off_t" for parameters, per usual definition of this function, rather
+       than "char *" and "int".  Use ftruncate instead of chsize.  Check for
+       error on final close.
+
+2006-09-27  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (scm_log10): Check HAVE_CLOG10, clog10() is not available
+       in mingw.
+
+       * posix.c (scm_execl, scm_execlp, scm_execle): Cast "const char *
+       const *" for mingw to suppress warnings from gcc (which are errors
+       under the configure default -Werror).  Reported by Nils Durner.
+
+2006-09-26  Kevin Ryde  <user42@zip.com.au>
+
+       * _scm.h (scm_to_off64_t, scm_from_off64_t): New macros.
+       * fports.c (scm_open_file): Use open_or_open64.
+       (fport_seek_or_seek64): New function, adapting fport_seek.
+       * fports.c, fports.h (scm_i_fport_seek, scm_i_fport_truncate): New
+       functions.
+       * ports.c (scm_seek, scm_truncate_file): Use scm_i_fport_seek and
+       scm_i_fport_truncate to allow 64-bit seeks and truncates on fports.
+
+       * ports.c (scm_truncate_file): Update docstring per manual.
+
+2006-09-23  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c, numbers.h (scm_log, scm_log10, scm_exp, scm_sqrt): New
+       functions.
+
+2006-09-20  Ludovic Courtès  <ludovic.courtes@laas.fr>
+
+       * srfi-14.c: Include <config.h>.  Define `_GNU_SOURCE'.
+       (make_predset, define_predset, make_strset, define_strset, false,
+       true): Removed.
+       (SCM_CHARSET_UNSET, CSET_BLANK_PRED, CSET_SYMBOL_PRED,
+       CSET_PUNCT_PRED, CSET_LOWER_PRED, CSET_UPPER_PRED,
+       CSET_LETTER_PRED, CSET_DIGIT_PRED, CSET_WHITESPACE_PRED,
+       CSET_CONTROL_PRED, CSET_HEX_DIGIT_PRED, CSET_ASCII_PRED,
+       CSET_LETTER_AND_DIGIT_PRED, CSET_GRAPHIC_PRED, CSET_PRINTING_PRED,
+       CSET_TRUE_PRED, CSET_FALSE_PRED, UPDATE_CSET): New macros.
+       (define_charset, scm_srfi_14_compute_char_sets): New functions.
+       (scm_init_srfi_14): Use `define_charset ()' instead of
+       `define_predset ()' and `define_strset ()'.
+
+       * srfi-14.h (scm_c_init_srfi_14): Removed.
+       (scm_srfi_14_compute_char_sets): New declaration.
+
+       * posix.h: Include "srfi-14.h".
+       (scm_setlocale): Invoke `scm_srfi_14_compute_char_sets ()' after a
+       successful `setlocale ()' call.
+
+2006-09-08  Kevin Ryde  <user42@zip.com.au>
+
+       * socket.c (scm_init_socket): Add MSG_DONTWAIT.
+       (scm_recvfrom): Update docstring from manual.
+
+2006-08-31  Rob Browning  <rlb@defaultvalue.org>
+
+       * ports.c (scm_c_port_for_each): Add a
+       scm_remember_upto_here_1(ports) at the end of the function to fix
+       a GC bug.
+
+2006-08-28  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * backtrace.c (scm_display_backtrace_with_highlights): Minor
+       improvements to docstring.
+       (scm_backtrace_with_highlights): Analogous improvements.
+
+2006-08-12  Kevin Ryde  <user42@zip.com.au>
+
+       * gen-scmconfig.h.in (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT):
+       New, set from configure.
+       * gen-scmconfig.c (SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT): New output
+       to scmconfig.h.
+       * pthread-threads.h (SCM_I_PTHREAD_ONCE_INIT): Use
+       SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT to cope with Solaris.
+       Reported by Claes Wallin.
+
+2006-08-11  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * stacks.c (scm_last_stack_frame): Correct docstring (returns a
+       frame, not a stack).
+
+2006-07-25  Kevin Ryde  <user42@zip.com.au>
+
+       * threads.c (get_thread_stack_base): Restrict HAVE_PTHREAD_GETATTR_NP
+       on pthreads version, since pthread_getattr_np not available on solaris
+       and macos.  Reported by Claes Wallin.
+
+2006-07-24  Kevin Ryde  <user42@zip.com.au>
+
+       * filesys.c (dirfd): Test with #ifndef rather than HAVE_DIRFD, since
+       it's a macro on MacOS X.  Reported by Claes Wallin.
+
+       * posix.c (sethostname): Give prototype if not HAVE_DECL_SETHOSTNAME,
+       for the benefit of Solaris 10.  Reported by Claes Wallin.
+
+       * socket.c (scm_htonl, scm_ntohl): Use scm_to_uint32 rather than
+       NUM2ULONG, to enforce 32-bit range check on systems with 64-bit long.
+
+2006-07-21  Kevin Ryde  <user42@zip.com.au>
+
+       * eval.c, filesys.c (alloca): Update <alloca.h> etc blob, per current
+       autoconf recommendation.  Should fix Solaris 10 reported by Claes
+       Wallin.
+
+       * threads.c: Include <string.h>, needed for memset() which is used by
+       FD_ZERO() on Solaris 10.  Reported by Claes Wallin.
+
+2006-07-18  Rob Browning  <rlb@defaultvalue.org>
+
+       * continuations.c: Add __attribute__ ((returns_twice)) to the
+       ia64_getcontext prototype so that gcc will make the right
+       arrangements and avoid an illegal instruction during
+       call-with-current-continuation.
+
+2006-07-12  Ludovic Courtès <ludovic.courtes@laas.fr>
+
+       * numbers.c (guile_ieee_init): Use regular ANSI C casts rather
+       than C++-style `X_CAST ()'.  Patch posted by by Mike Gran.
+
+2006-07-08  Kevin Ryde  <user42@zip.com.au>
+
+       * environments.c (core_environments_unobserve): Use if/else rather
+       than ?: for "SET" bits, avoiding complaints from AIX xlc compiler
+       about them not being rvalues.  Reported by Mike Gran.
+
+       * Makefile.am (version.h): Don't use $< in an explicit rule, it's not
+       portable and in particular fails on OpenBSD and AIX (see autoconf
+       manual too).  Reported by Mike Gran.
+
+2006-06-25  Kevin Ryde  <user42@zip.com.au>
+
+       * stime.c (bdtime2c): tm_gmtoff is seconds East, so take negative of
+       tm:gmtoff which is seconds West.  Reported by Aaron VanDevender.
+       (bdtime2c): Test HAVE_STRUCT_TM_TM_GMTOFF for tm_gmtoff, rather than
+       HAVE_TM_ZONE.
+       (scm_strptime): Use tm_gmtoff from the strptime result when that field
+       exists, it's set by glibc strptime "%s".
+
+2006-06-13  Ludovic Courtès <ludovic.courtes@laas.fr>
+
+       * eq.c: Include "struct.h", "goops.h" and "objects.h".
+       (scm_equal_p): Invoke `scm_i_struct_equalp ()' on structures that
+       are not GOOPS instances.
+       * struct.c: Include "eq.h".
+       (scm_free_structs): Use `SCM_STRUCT_VTABLE_DATA ()' instead of
+       hand-written code.
+       (scm_i_struct_equalp): New.
+       * struct.h (scm_i_struct_equalp): New declaration.
+
+2006-06-06  Kevin Ryde  <user42@zip.com.au>
+
+       * Makefile.am (BUILT_SOURCES): Remove guile.texi, only used by
+       maintainers (with doc/maint/docstring.el).  Fixes parallel "make -j2"
+       reported by Mattias Holm.
+
+2006-06-03  Kevin Ryde  <user42@zip.com.au>
+
+       * read.c (s_vector): Conditionalize on SCM_ENABLE_ELISP, to avoid
+       unused variable warning when elisp disabled.  Reported by Ryan
+       VanderBijl.
+
+       * throw.c (scm_handle_by_message): Add dummy return value to avoid
+       compiler warning on cygwin.  Reported by Ryan VanderBijl.
+
+       * Makefile.am (EXTRA_DOT_X_FILES): Typo in dependency rule, was a
+       duplicate of EXTRA_DOT_DOC_FILES.
+       (DOT_X_FILES, EXTRA_DOT_X_FILES, DOT_DOC_FILES, EXTRA_DOT_DOC_FILES):
+       Add scmconfig.h to dependencies, since these all run cpp.  Helps a
+       parallel "make -j2".  Reported by Mattias Holm.
+
+2006-05-30  Kevin Ryde  <user42@zip.com.au>
+
+       * ports.c, ports.h (scm_set_port_mark, scm_set_port_free,
+       scm_set_port_print, scm_set_port_equalp, scm_set_port_flush,
+       scm_set_port_end_input, scm_set_port_close, scm_set_port_seek,
+       scm_set_port_truncate, scm_set_port_input_waiting): Use scm_t_bits for
+       port type descriptor, same as scm_make_port_type return value.
+
+2006-05-30  Marius Vollmer  <mvo@zagadka.de>
+
+       * eq.c (scm_equal_p): Use scm_array_equal_p explicitely when one
+       of the arguments is a array.  This allows vectors to be equal to
+       one-dimensional arrays.
+
+2006-05-29  Marius Vollmer  <mvo@zagadka.de>
+
+       * throw.c (scm_ithrow): When looking for the jmpbuf, first test
+       that we have a pair before accessing its cdr.  Thanks to Bill
+       Schottstaedt!
+
+2006-05-28  Kevin Ryde  <user42@zip.com.au>
+
+       * eval.c, filesys.c: Add malloc.h to get alloca() on mingw.  Reported
+       by "The Senator".
+
+2006-05-27  Marius Vollmer  <mvo@zagadka.de>
+
+       * srfi-4.c, strings.c: Replace SCM_C_INLINE with
+       SCM_C_INLINE_KEYWORD.  Thanks to Mark Gran!
+
+2006-05-26  Kevin Ryde  <user42@zip.com.au>
+
+       * fports.c (fport_input_waiting): For ioctl, check HAVE_IOCTL as well
+       as defined(FIONREAD), since mingw has FIONREAD but not ioctl().
+       Reported by "The Senator".
+       For select and ioctl, move fdes into those conditionals, to avoid
+       unused variable warning when neither of those used.
+
+2006-05-23  Kevin Ryde  <user42@zip.com.au>
+
+       * fports.c: Remove "fwrite" declaration under "! HAVE_UNISTD_H".
+       It's unused and will be in stdio.h anyway (if it's anywhere).
+
+2006-05-20  Kevin Ryde  <user42@zip.com.au>
+
+       * filesys.c (scm_stat2scm): Test #ifdef S_ISLNK directly, rather than
+       HAVE_S_ISLNK from configure (it was only a #ifdef test anyway).
+
+       * posix.c (scm_mknod): Test #ifdef S_IFLNK before using that (for
+       symlink).  Probably can't create symlinks with mknod anyway though.
+
+       * inline.h (scm_is_pair): Add a workaround for i386 gcc 2.95 bad code
+       generation.
+
+2006-05-15  Kevin Ryde  <user42@zip.com.au>
+
+       * simpos.c, simpos.h (scm_primitive__exit): New function.
+       (scm_primitive_exit): Update docstring, no longer the best exit after
+       a fork.
+
+2006-05-09  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (scm_i_divide): For big/big wanting inexact, use mpq_get_d
+       rather than converting to doubles, to avoid inf or nan when the inputs
+       are too big for a double but the quotient does fit.  This affects
+       conversions exact->inexact of big fractions.
+
+       * filesys.c (scm_open_fdes): Use open64.
+       (scm_init_filesys): Add O_LARGEFILE.
+
+       * ports.c (scm_seek): Use lseek64.
+       (scm_truncate_file): Use ftruncate64.
+
+2006-05-08  Marius Vollmer  <mvo@zagadka.de>
+
+       * private-gc.h (CELL_P): Also check that the potential pointer is
+       correctly aligned for a cell.  Thanks to Miroslav Lichvar!
+
+2006-04-18  Rob Browning  <rlb@defaultvalue.org>
+
+       * _scm.h: Add back error if the size of off_t is unknown.  The bug
+       was actually in guile-readline's configuration.
+
+2006-04-18  Kevin Ryde  <user42@zip.com.au>
+
+       * posix.c (scm_mkstemp): Update docstring from the manual, in
+       particular file mode 0600 is not guaranteed.
+
+2006-04-17  Kevin Ryde  <user42@zip.com.au>
+
+       * _scm.h (scm_to_off_t, scm_from_off_t): No error if unknown off_t
+       size, to help the guile-readline build where off_t is unused.
+
+2006-04-16  Kevin Ryde  <user42@zip.com.au>
+
+       * filesys.c (scm_stat2scm, scm_stat, scm_lstat): Use stat or stat64.
+       (scm_readdir): Use readdir64.
+       (scm_copy_file): Use open64 and fstat64, to cope with >2Gb files.
+       * ports.c (scm_truncate_file): Use truncate64.  Correction truncate
+       and ftruncate take off_t not size_t.
+       * _scm.h (stat_or_stat64 etc): Macros for selecting LFS64 when
+       available.
+
+2006-04-06  Kevin Ryde  <user42@zip.com.au>
+
+       * fports.c (scm_setvbuf): Fix for not _IOLBF, clear SCM_BUFLINE
+       instead of toggling it.  Reported by Ludovic Courtès.
+
+2006-03-26  Marius Vollmer  <mvo@zagadka.de>
+
+       * threads.c (get_thread_stack_base): Use scm_get_stack_base
+       instead of accessing __libc_stack_end directly, and only do this
+       when pthread_attr_getstack is known not to work for the main
+       thread or when not using pthreads at all.
+
+       * gc_os_dep.c (scm_get_stack_base): Abort when the machine type is
+       unknown instead of returning NULL.
+
+2006-03-21  Ludovic Courtès  <ludovic.courtes@laas.fr>
+
+        * numbers.c (scm_i_mem2number): Renamed to
+       scm_c_locale_stringn_to_number.
+       * numbers.c, print.c, read.c: Updated callers.
+        * numbers.h: Update function declaration.
+
+2006-03-11  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * unif.c (string_set): Don't return in a void function.  (Reported
+       by Mike Gran.)
+
+       * srfi-4.c (scm_uniform_vector_read_x): Declare base as char*
+       rather than void*, so we can do pointer arithmetic on it.
+       (Reported by Mike Gran.)
+       (s_scm_uniform_vector_write): Ditto.
+
+2006-03-10  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * unif.c (scm_make_shared_array): Don't use SCM_I_ARRAY_BASE when
+       oldra is not an array.  (Reported by Steve Juranich.)
+
+       * threads.c (do_unlock): Renamed from "unlock", which is defined
+       in unistd.h on QNX.  (Reported by Matt Kraai.)
+
+2006-03-04  Kevin Ryde  <user42@zip.com.au>
+
+       * deprecated.c (scm_i_defer_ints_etc): Show SCM_DEFER_INTS in message,
+       not SCM_CRITICAL_SECTION_START.
+
+       * eval.c, posix.c: Change comments from C++ to C style.  Reported by
+       Mike Gran.
+
+2006-02-28  Kevin Ryde  <user42@zip.com.au>
+
+       * unif.c (bitvector_set): Use h->writable_elements not h->elements.
+
+2006-02-26  Kevin Ryde  <user42@zip.com.au>
+
+       * filesys.c (scm_readdir): Use fpathconf for the dirent size when
+       NAME_MAX is not available, which is so on Solaris 10.  Report and help
+       by Bill Schottstaedt.
+
+       * srfi-13.c (MY_VALIDATE_SUBSTRING_SPEC_UCOPY): New macro.
+       (scm_string_compare, scm_string_compare_ci, scm_string_lt,
+       scm_string_gt, scm_string_le, scm_string_ge, scm_string_ci_lt,
+       scm_string_ci_gt, scm_string_ci_le, scm_string_ci_ge): In comparisons
+       use "unsigned char", not signed char.  This ensures comparisons are
+       the same as `char<?' etc, and is also the same as guile 1.6 did.
+       Reported by Sven Hartrumpf.
+
+2006-02-19  Mikael Djurfeldt  <mdj@neurologic.cc>
+
+       * random.c: Test for SCM_HAVE_T_UINT64 instead of
+       SCM_HAVE_T_INT64.
+       (scm_i_uniform32, scm_i_uniform32, scm_i_init_rstate): Use
+       scm_t_uint64 and scm_t_uint32 instead of scm_t_int64 and
+       scm_t_int32.
+
+2006-01-04  Ludovic Courtès  <ludovic.courtes@laas.fr>
+
+        * gc-segment.c (scm_i_sweep_some_cards): Take a SWEEP_STATS
+        argument.  Don't refer to SCM_GC_CELLS_COLLECTED and
+        SCM_CELLS_ALLOCATED.  If SEG->FIRST_TIME, let CELLS_COLLECTED as zero.
+        Take into account SEG->SPAN when computing CELLS_SWEPT.
+        (scm_i_sweep_segment): Take one more argument, similarly.
+        (scm_i_sweep_all_segments): Likewise.
+        (scm_i_sweep_some_segments): Likewise.
+        (scm_i_adjust_min_yield): Change the way MIN_CELLS is computed: do not
+        refer to SCM_GC_CELLS_COLLECTED.
+
+        * gc-freelist.c (scm_i_adjust_min_yield): Take one more
+        argument, an `scm_i_sweep_statistics' object.
+        Change the way DELTA is collected: don't take into account
+        SCM_GC_CELLS_COLLECTED_1, only SWEEP_STATS.COLLECTED.
+
+        * gc-malloc.c (scm_realloc): Pass an extra argument
+        to `scm_i_sweep_all_segments ()'.
+
+        * gc.c (gc_start_stats): Updated accordingly.
+        (gc_end_stats): Take an additional SWEEP_STATS argument.
+        Decrement SCM_CELLS_ALLOCATED after calls to `scm_i_sweep_* ()'.
+        (scm_gc_for_newcell): Updated callers of `scm_i_sweep_*'.
+        Decrement SCM_CELLS_ALLOCATED.
+        (scm_i_gc): Likewise.
+
+        * private-gc.h (scm_i_sweep_*): Updated function
+        prototypes accordingly.
+        (scm_t_sweep_statistics): New type.
+        (scm_i_sweep_statistics_init): New macro.
+        (scm_i_sweep_statistics_sum): New macro
+
+2006-02-14  Ludovic Courtès  <ludovic.courtes@laas.fr>
+
+        * strings.c (scm_i_take_stringbufn): Register LEN+1 bytes instead of
+       LEN.  Without this, too much collectable memory gets unregistered,
+       which results in an underflow of SCM_MALLOCATED in
+       `decrease_mtrigger()'.
+
+        * gc-malloc.c (decrease_mtrigger): Make sure SIZE is lower than or
+       equal to SCM_MALLOCATED.
+
+2006-02-13  Marius Vollmer  <mvo@zagadka.de>
+
+       * eval.c (scm_eval_body): Use scm_i_dynwind_pthread_mutex_lock
+       oinstead of scm_dynwind_pthread_mutex_lock so that it works when
+       configured --without-threads.
+       (SCM_APPLY, CEVAL): Likewise.  Thanks to Han-Wen Nienhuys!
+
+2006-02-12  Marius Vollmer  <mvo@zagadka.de>
+
+       * unif.c (scm_dimensions_to_uniform_array): Use the prototype for
+       filling when the fill parameter is omitted, as documented, but
+       turn #\nul into 0 since s8 arrays (signified by a #\nul prototype)
+       can not store characters.
+
+2006-02-09  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * socket.c (scm_c_make_socket_address): Pass address_size pointer
+       on to scm_fill_sockaddr call.
+
+2006-02-04  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * throw.h (scm_c_catch, scm_c_with_throw_handler,
+       scm_catch_with_pre_unwind_handler, scm_with_throw_handler): New.
+
+       * throw.c (SCM_JBPREUNWIND, SCM_SETJBPREUNWIND): New.
+       (struct pre_unwind_data): New, replaces struct lazy_catch.
+       (scm_c_catch): New, replaces scm_internal_catch as the primary
+       catch API for C code; adds pre-unwind handler support.
+       (scm_internal_catch): Now just a wrapper for scm_c_catch, for back
+       compatibility.
+       (tc16_pre_unwind_data, pre_unwind_data_print,
+       make_pre_unwind_data, SCM_PRE_UNWIND_DATA_P): Renamed from
+       "lazy_catch" equivalents.
+       (scm_c_with_throw_handler): New, replaces scm_internal_lazy_catch
+       as the primary C API for a "lazy" catch.
+       (scm_internal_lazy_catch): Now just a wrapper for
+       scm_c_with_throw_handler, for back compatibility.
+       (scm_catch_with_pre_unwind_handler): Renamed from scm_catch; adds
+       pre-unwind handler support.
+       (scm_catch): Now just a wrapper for
+       scm_catch_with_pre_unwind_handler, for back compatibility.
+       (scm_with_throw_handler): New.
+       (scm_lazy_catch): Update comment to say that the handler can
+       return, and what happens if it does.
+       (toggle_pre_unwind_running): New.
+       (scm_ithrow): When identifying the throw target, take running
+       flags into account.  In general, change naming of things from
+       "lazy_catch" to "pre_unwind".  When throwing to a throw handler,
+       don't unwind the dynamic context first.  Add dynwind framing to
+       manage the running flag of a throw handler.  If a lazy catch or
+       throw handler returns, rethrow the same exception again.  Add
+       pre-unwind support to the normal catch case (SCM_JMPBUFP).
+
+       * root.c (scm_internal_cwdr): Add NULL args to
+       scm_i_with_continuation_barrier call.
+
+       * dynwind.c: Change comment mentioning lazy-catch to mention
+       pre-unwind data and throw handler also.
+
+       * continuations.h (scm_i_with_continuation_barrier): Add
+       pre-unwind handler args.
+
+       * continuations.c (scm_i_with_continuation_barrier): Add
+       pre-unwind handler args, and pass on to scm_c_catch (changed from
+       scm_internal_catch).
+       (c_handler): Remove scm_handle_by_message_noexit call.
+       (scm_c_with_continuation_barrier): Call
+       scm_i_with_continuation_barrier with scm_handle_by_message_noexit
+       as the pre-unwind handler.
+       (scm_handler): Remove scm_handle_by_message_noexit call.
+       (s_scm_with_continuation_barrier): Call
+       scm_i_with_continuation_barrier with scm_handle_by_message_noexit
+       as the pre-unwind handler.
+
+2006-02-04  Kevin Ryde  <user42@zip.com.au>
+
+       * gc-mark.c (scm_mark_all): Fix c99-isms "loops" and "again" variables.
+
+2006-02-03  Kevin Ryde  <user42@zip.com.au>
+
+       * list.c, list.h (scm_list): Restore this function for use from C.
+       It's a complete no-op but in theory might used by someone.
+
+2006-01-30  Marius Vollmer  <mvo@zagadka.de>
+
+       * eval.c (scm_eval_body): Lock source_mutex with a dynwind context
+       so that it gets unlocked in all cases.
+       (SCM_APPLY, CEVAL): Likewise.
+
+2006-01-29  Marius Vollmer  <mvo@zagadka.de>
+
+       * ramap.c: (scm_array_map_x): Don't use scm_array_p, use
+       scm_is_typed_array instead.
+
+       Renamed the "frames" that are related to dynamic-wind to "dynamic
+       contexts.  Renamed all functions from scm_frame_ to scm_dynwind_.
+       Updated documentation.
+
+       Disabled "futures":
+
+       * futures.h, futures.c: Wrap whole contents in "#if 0"/"#endif".
+       * eval.c, init.c: Comment out all 'future' related things.
+
+2006-01-28  Marius Vollmer  <mvo@zagadka.de>
+
+       * inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c
+       to inline.h to make it inline.
+
+2005-12-19  Ludovic Courtès  <ludovic.courtes@laas.fr>
+
+        * strings.c (scm_i_take_stringbufn): New.
+        (scm_i_c_take_symbol): New.
+        (scm_take_locale_stringn): Use `scm_i_take_stringbufn ()'.
+
+        * strings.h (scm_i_c_take_symbol): New.
+        (scm_i_take_stringbufn): New.
+
+        * symbols.c  (lookup_interned_symbol): New function.
+        (scm_i_c_mem2symbol): New function.
+        (scm_i_mem2symbol): Use `lookup_symbol ()'.
+        (scm_from_locale_symbol): Use `scm_i_c_mem2symbol ()'.  This avoids
+        creating a new Scheme string.
+        (scm_from_locale_symboln): Likewise.
+        (scm_take_locale_symbol): New.
+        (scm_take_locale_symboln): New.
+
+        * symbols.h (scm_take_locale_symbol): New.
+        (scm_take_locale_symboln): New.
+
+2006-01-18  Han-Wen Nienhuys  <hanwen@xs4all.nl>
+
+       * gc-card.c ("sweep_card"): don't count scm_tc_free_cell for
+       free_count.
+
+2005-11-29  Han-Wen Nienhuys  <hanwen@xs4all.nl>
+
+       * regex-posix.c (s_scm_regexp_exec): list the offending pattern
+       upon error
+
+2005-12-29  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
+       the GC when allocated_fluids_len is zero.
+
+2005-12-14  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * load.c (the_reader, the_reader_fluid_num): New.
+       (scm_primitive_load): Support custom reader.
+       (scm_init_load): Init the_reader and the_reader_fluid_num; export
+       the_reader as `current-reader'.
+
+       * scmsigs.c (do_read_without_guile): Use the "raw_data" passed in
+       (rather than an uninitialized pointer on the stack).
+
+2005-12-07  Marius Vollmer  <mvo@zagadka.de>
+
+       Reported by Bruce Korb:
+
+       * init.c (invoke_main_func): Don't call exit here.  Throws that
+       are only caught by scm_with_guile will bypass us and would cause
+       scm_boot_guile to return erroneously.
+       (scm_boot_guile): Expect scm_with_guile to return and call exit
+       here, passing it an appropriate exit code.
+
+       From Andy Wingo:
+
+       * script.c (scm_find_executable): Compile fix -- fgetc returns an
+       unsigned char cast to an int, or -1 for EOS.
+
+2005-12-06  Marius Vollmer  <mvo@zagadka.de>
+
+       * srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
+       non-const.
+       (scm_take_u8vector, etc): Likewise.  Thanks to Ludovic Courtès!
+
+       * threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile,
+       scm_enter_guile): Removed from public API.  See comment at
+       scm_without_guile for the rationale.
+
+       * scmsigs.c (read_without_guile): New.
+       (signal_delivery_thread): Use it instead of
+       scm_leave_guile/read/scm_enter_guile.
+
+       From Stephen Compall:
+
+       * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax.
+       (CEVAL): Evaluate SRFI 61 cond clauses.
+
+2005-12-06  Ludovic Courtès  <ludovic.courtes@laas.fr>
+
+       * gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL.
+       This was typically hit when running `gc-live-object-stats' right
+       after starting Guile.
+
+2005-11-30  Kevin Ryde  <user42@zip.com.au>
+
+       * srfi-13.c (scm_string_append_shared): No copying if just one
+       non-empty string in args.
+
+2005-11-26  Kevin Ryde  <user42@zip.com.au>
+
+       * gc-mark.c (scm_mark_all): Change C++ comment to C comment.  Reported
+       by Ludovic Courtès.
+
+       * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
+       "register".
+
+       * random.c (scm_i_copy_rstate, scm_c_make_rstate): Don't test for
+       scm_malloc returning NULL, it never does that.
+       * putenv.c (putenv): Likewise.
+
+       * socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is
+       much too big to want to inline.
+
+2005-11-17  Ludovic Courtès  <ludovic.courtes@laas.fr>
+
+       * print.c (EXIT_NESTED_DATA): Before popping from the stack, reset
+       the value at its top.  This fixes a reference leak.
+       (PUSH_REF): Perform `pstate->top++' after calling
+       `PSTATE_STACK_SET ()' in order to avoid undesired potential side
+       effects.
+
+2005-11-12  Ludovic Courtès  <ludovic.courtes@laas.fr>
+
+       * gc.c (scm_weak_vectors): Removed.
+
+2005-11-12  Kevin Ryde  <user42@zip.com.au>
+
+       * socket.c (scm_setsockopt): Missing @defvar in docstring.  Reported
+       by Ludovic Courtès.
+
+2005-11-07  Marius Vollmer  <mvo@zagadka.de>
+
+       * stime.c (scm_mktime): Use scm_frame_critical_section instead of
+       SCM_CRITICAL_SECTION_START/END since the code inside the critical
+       section might exit non-locally.
+
+2005-11-04  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * eval.c (sym_instead): New symbol.
+       (ENTER_APPLY): Remove optional use of a continuation when making
+       trap call.
+       (scm_debug_opts): Change doc for 'cheap option to make clear that
+       it is now obsolete.
+       (CEVAL, SCM_APPLY): Remove optional use of a continuation when
+       making trap calls, and implement substitution of eval expressions
+       and return values using the values that the trap call handlers
+       return.
+
+       * debug.h (SCM_CHEAPTRAPS_P): Removed.
+
+2005-10-27  Ludovic Courtès  <ludovic.courtes@laas.fr>
+
+       * socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc.
+       (scm_connect, scm_bind, scm_sendto): Accept sockaddr object.
+       (scm_addr_vector): Renamed to _scm_from_sockaddr, update usages.
+       (scm_from_sockaddr, scm_to_sockaddr, scm_make_socket_address,
+       scm_c_make_socket_address): New functions.
+       * socket.h: Add prototypes.
+
+2005-10-24  Kevin Ryde  <user42@zip.com.au>
+
+       * socket.c (scm_init_socket): Add IPPROTO_IP, IPPROTO_TCP,
+       IPPROTO_UDP.  Remove SOL_IP, SOL_TCP, SOL_UDP.  The former are in
+       POSIX spec examples, the latter are not available on for instance
+       NetBSD.
+
+       * socket.c (scm_getsockopt, scm_setsockopt): Update docstrings from
+       posix.texi.
+
+       * stime.c (scm_strftime): Update docstring from posix.texi.
+
+2005-10-23  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
+
+       PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not portable enough.
+
+       * null-threads.h, pthread-threads.h
+       (SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Removed.
+       (scm_i_pthread_mutexattr_recursive): New.
+
+       * threads.c (scm_i_pthread_mutexattr_recursive): Declare.
+       (scm_i_critical_section_mutex): Do not initialize statically.
+       (scm_threads_prehistory): Initialize
+       scm_i_pthread_mutexattr_recursive and scm_i_critical_section_mutex
+       here.
+
+       * eval.c (source_mutex): Do not initialiaze statically.
+       (scm_init_eval): Do it here, using
+       scm_i_pthread_mutexattr_recursive.
+
+2005-09-05  Marius Vollmer  <mvo@zagadka.de>
+
+       * print.h (SCM_PRINT_KEYWORD_STYLE_I, SCM_PRINT_KEYWORD_STYLE):
+       New.
+       (sym_reader): New.
+       (scm_print_opts): Added "quote-keywordish-symbols" option.
+       (quote_keywordish_symbol): New, for evaluating the option.
+       (scm_print_symbol_name): Use it.
+       (scm_init_print): Initialize new option to sym_reader.
+
+2005-08-15  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * eval.c (eval_letrec_inits): New.
+       (CEVAL): Eval letrec initializer forms using eval_letrec_inits.
+
+2005-08-12  Marius Vollmer  <mvo@zagadka.de>
+
+       * numbers.c: Use scm_from_bool instead of SCM_BOOL.  Thanks to
+       Peter Gavin!
+
+2005-08-12  Kevin Ryde  <user42@zip.com.au>
+
+       * srfi-13.c (scm_string_for_each_index): Correction to docstring.
+
+2005-08-06  Kevin Ryde  <user42@zip.com.au>
+
+       * srfi-13.c (scm_string_any, scm_string_every, scm_string_tabulate,
+       scm_string_trim, scm_string_trim_right, scm_string_trim_both,
+       scm_string_index, scm_string_index_right, scm_string_skip,
+       scm_string_skip_right, scm_string_count, scm_string_map,
+       scm_string_map_x, scm_string_for_each, scm_string_for_each_index,
+       scm_string_filter, scm_string_delete): Use scm_t_trampoline_1 for
+       procedures called in loops.
+
+2005-08-02  Kevin Ryde  <user42@zip.com.au>
+
+       * strports.c (st_flush): Increase buffer by 1.5x when growing, to
+       avoid lots of copying where previoulsy growing by only 80 bytes at a
+       time.
+
+2005-08-01  Marius Vollmer  <mvo@zagadka.de>
+
+       * modules.h, modules.c (scm_eval_closure_module): Removed, we
+       already have scm_lookup_closure_module, which does the same thing.
+
+2005-08-01  Marius Vollmer  <mvo@zagadka.de>
+
+       New marking algorithm for weak hashtables that fixes the problem
+       that references from the non-weak value to the associated weak
+       key (for example) would prevent the entry from ever being dropped.
+
+       Guardians have been changed back to their original semantics and
+       are no longer greedy and no longer drop cycles.
+
+       * gc-mark.c (scm_mark_all): Do not rely on hooks to run the weak
+       hashtable and guardian machinery but call the relevant functions
+       directly.
+
+       * guardians.h, guardians.c, deprecated.h,
+       deprecated.c (scm_destroy_guardian_x, scm_guardian_greedy_p,
+       scm_guardian_destroyed_p, scm_guard, scm_get_one_zombie):
+       Deprecated and moved into deprecated.[ch].
+
+       * guardians.h, guardians.c: Mostly rewritten.
+       (scm_i_init_guardians_for_gc,
+       scm_i_identify_inaccessible_guardeds,
+       scm_i_mark_inaccessible_guardeds): New.
+       (scm_make_guardian): Removed greedy_p argument.
+
+       * weaks.h, weaks.c (SCM_I_WVECT_TYPE, SCM_I_SET_WVECT_TYPE): New.
+       (SCM_I_WVECT_N_ITEMS, SCM_I_SET_WVECT_N_ITEMS): New.
+       (SCM_WVECTF_NOSCAN, SCM_WVECT_NOSCAN_P): Removed.
+       (scm_weaks_prehistory): Removed.
+       (scm_i_init_weak_vectors_for_gc, scm_i_mark_weak_vector,
+       scm_i_mark_weak_vectors_non_weaks,
+       scm_i_remove_weaks_from_weak_vectors, scm_i_remove_weaks): New.
+       (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
+       scm_scan_weak_vectors): Removed.
+
+       * hashtab.h (scm_i_scan_weak_hashtables): New.
+       * hashtab.c (make_hash_table, scm_i_rehash): Do not use
+       SCM_WVECTF_NOSCAN.
+       (hashtable_print): Use SCM_HASHTABLE_N_ITEMS instead of
+       t->n_items.
+       (scan_weak_hashtables, scm_i_scan_weak_hashtables): Renamed former
+       to latter.  Do not scan the alists themselves, this is done by the
+       weak vector code now.  Just update the element count.
+
+       * vectors.h (SCM_I_WVECT_TYPE, SCM_I_WVECT_EXTRA): Renamed former
+       to latter.  The type is now only part of the cell word.
+       (SCM_I_SET_WVECT_TYPE, SCM_I_SET_WVECT_EXTRA): Likewise.
+
+       * init.c (scm_i_init_guile): Do not call scm_weaks_prehistory.
+
+2005-07-18  Mikael Djurfeldt  <mdj@d14n36.pdc.kth.se>
+
+       Some changes towards making it possible to run Guile on the EM64T
+       platform.
+
+       * gc.c (scm_gc_stats): Bugfix: Measure size of the type we are
+       mallocating for (unsigned long *bounds).
+
+       * hashtab.c (scm_i_rehash): Cast SCM_HASHTABLE_FLAGS (table) to
+       scm_t_bits before storing them in the type word.
+
+       * gc.c (tag_table_to_type_alist): Modified type of c_tag from
+       scm_t_bits to int.
+
+2005-07-12  Kevin Ryde  <user42@zip.com.au>
+
+       * eval.c (scm_dbg_make_iloc): Should be SCM_IFRAMEMAX and
+       SCM_IDISTMAX, and cast uints through scm_t_bits to make gcc happy.
+       * pairs.c (scm_error_pair_access): Use scm_from_locale_string rather
+       than scm_makfrom0str.
+       Reported by Ken Raeburn.
+
+       * gc-card.c (scm_dbg_gc_get_bvec): Change return from long* to
+       scm_t_c_bvec_long*, gcc 4 doesn't like different pointer targets when
+       returning SCM_GC_CARD_BVEC.
+
+       * pairs.c (scm_error_pair_access): Plain ascii ' in error message
+       rather than latin-1 acute accent, the latter may not print on all
+       terminals.
+
+       * srfi-13.c (scm_string_filter, scm_string_delete): Strip leading and
+       trailing deletions, so as to return a substring if those are the only
+       changes.
+
+2005-07-10  Kevin Ryde  <user42@zip.com.au>
+
+       * socket.c (scm_inet_pton, scm_inet_ntop): Pointer cast to scm_t_uint8
+       for scm ipv6 funcs, gcc 4 is picky about char* vs uchar*.
+       (scm_getsockopt, scm_accept, scm_getsockname, scm_getpeername,
+       scm_recvfrom) Use socklen_t, gcc 4 is picky about int* vs socklen_t*.
+
+2005-07-01  Han-Wen Nienhuys  <hanwen@xs4all.nl>
+
+       * gc-card.c (scm_i_card_statistics): init tag.
+
+       * gc.c (tag_table_to_type_alist): check type of tag. Should be integer.
+
 2005-06-18  Han-Wen Nienhuys  <hanwen@xs4all.nl>
 
-       * fports.c (s_scm_open_file): add the b flag for binary to the doc string.
+       * fports.c (s_scm_open_file): add the b flag for binary to the doc
+       string.
 
 2005-06-25  Kevin Ryde  <user42@zip.com.au>
 
 2005-06-09  Han-Wen Nienhuys  <hanwen@xs4all.nl>
 
        * gc.c (tag_table_to_type_alist): convert tag number to "tag %d"
-       string, so live object stats can be sorted with string<?. 
+       string, so live object stats can be sorted with string<?.
 
 2005-06-06  Marius Vollmer  <mvo@zagadka.de>
 
        From Jan Nieuwenhuizen <janneke@gnu.org>. Thanks!
 
        * hashtab.h: Bugfix: use SCM_API (WAS: extern).
+
        * socket.c: Remove obsolete comment about socklen_t.
        (s_scm_setsockopt)[!HAVE_IP_MREQ]: Do not use ip_mreq code.
+
        * numbers.h (isnan)[__MINGW32__]: Remove.
+
        * Makefile.am (gen_scmconfig_SOURCES): Bugfix: Add
        DEFAULT_INCLUDES when cross compiling.
+
        * threads.c (ETIMEDOUT, pipe)[__MINGW32__]: Add defines.
 
        * stime.c (scm_strftime)[!HAVE_TM_ZONE]: Use
        SCM_SIMPLE_VECTOR_REF instead of SCM_VELTS.  (Changed slightly
        from Jan's patch.)
+
 2005-05-22  Marius Vollmer  <mvo@zagadka.de>
 
        * unif.c (scm_make_shared_array): Add old base to new base since
 2005-05-12  Neil Jerram  <neil@ossau.uklinux.net>
 
        Mac OS X compile warning fixes, reported by Richard Todd.
-       
+
        * unif.c (scm_i_read_array): Declare rank as ssize_t, to guarantee
        that it is signed.
 
 
 2005-05-11  Neil Jerram  <neil@ossau.uklinux.net>
 
-       Fix C99isms reported by Ludovic Courtès:
-       
+       Fix C99isms reported by Ludovic Courtès:
+
        * threads.c (s_scm_lock_mutex): Don't declare msg in middle of
        code.
 
        non-NULL.  Always use a NULL closure.
        (scm_hash_fn_create_handle_x): Also rehash when table contains too
        few entries.
-       
+
 2005-03-29  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
 
        * hashtab.h, hashtab.c (scm_hash_fx_remove_x): Removed delete_fn
        (scm_hashx_remove_x): Likewise.  Also, exported to Scheme.
        (scm_hash_clear): Accept plain vectors as hashtables.
        (scm_delx_x): Removed.
-       
+
 2005-03-28  Han-Wen Nienhuys  <hanwen@xs4all.nl>
 
        * inline.h (scm_double_cell): use __asm__ iso. asm, to maintain
        scm_root.
 
        * threads.c: Removed fprintf debug statements.
-       
+
 2005-03-24  Neil Jerram  <neil@ossau.uklinux.net>
 
        * debug.c (scm_make_memoized): Restore use of SCM_UNPACK.
 2005-03-18  Kevin Ryde  <user42@zip.com.au>
 
        * arbiters.c (FETCH_STORE) [generic C]: Should be
-       scm_i_scm_pthread_mutex_lock/unlock now.  Reported by Ludovic Courtès.
+       scm_i_scm_pthread_mutex_lock/unlock now.  Reported by Ludovic Courtès.
 
 2005-03-13  Kevin Ryde  <user42@zip.com.au>
 
        simple things inside that region.
         (scm_make_fluid, scm_make_dynamic_state): Lock fluid_admin_mutex
        while adding to the global lists.
-       
+
 
 2005-03-08  Marius Vollmer  <mvo@zagadka.de>
 
        libltdl is no longer distributed.  We expect it to be installed
        already.
-       
+
        * Makefile.am (INCLUDES): Removed @LTDLINCL@.
        (libguile_la_LIBADD): Removed @LIBLTDL@.
 
 
        * throw.c (scm_ithrow): Abort when scm_i_critical_section_level is
        not zero.
-       
+
        * threads.h, threads.c (scm_frame_lock_mutex): New.
        (scm_frame_critical_section): Take mutex as argument.
        (framed_critical_section_mutex): New, used as default for above.
        (scm_init_threads): Initialize it.
        (scm_threads_prehistory): Do not initialize thread_admin_mutex and
        scm_i_critical_section_mutex; both are initialized statically.
-       
+
        * continuation.c, deprecated.c, goops.c, guardians.c keywords.c,
        libguile_la-arrays.loT, objprop.c, ports.c, smob.c, sort.s,
        srcprop.c, stime.c, struct.c, throw.c, regex-posix.c: Include
        section.
        (scm_dynthrow):  Abort when scm_i_critical_section_level is
        not zero.
-       
+
 2005-03-04  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
 
        * threads.c (scm_try_mutex): Renamed argument for consistency.
 
        Big merge from the mvo-thread-cleanup branch. The main changes
        are:
-       
+
        - The dynamic roots functionality has been split into dynamic
          states and continuations barriers.  Fluids have been
          reimplemented and can now be garbage collected.
-       
+
        - Initialization of Guile now works in a multi-thread friendly
          manner.  Threads can freely enter and leave guile mode.
 
 
        - Signals are delivered via a pipe to a dedicated 'signal delivery
          thread'.
-       
+
        - SCM_DEFER_INTS, SCM_ALLOW_INTS etc have been deprecated.
 
        * throw.c (scm_handle_by_message): Exit only the current thread,
        not the whole process.
        (scm_handle_by_message_noexit): Exit when catching 'quit.
-       
+
        * scmsigs.c (take_signal, signal_delivery_thread,
        start_signal_delivery_thread, ensure_signal_delivery_thread,
        install_handler): Reimplemented signal delivery as explained in
        when using pthreads.
        * null-threads.c, null-threads.h: Provide dummy definitions for
        the above symbols when not using pthreads.
-       
+
        * modules.h, modules.c (scm_frame_current_module): New.
 
        * load.c (scm_primitive_load): Use scm_i_frame_current_load_port
        Moved around some init funcs.  Call
        scm_init_threads_default_dynamic_state.  Register cleanup_for_exit
        with atexit.
-       
+
        * hashtab.c (scm_hash_fn_create_handle_x, scm_hash_fn_remove_x):
        Use "!scm_is_eq" instead of "!=".
 
        scm_after_gc_c_hook.
        (scm_permanent_object): Allocate outside of critical section.
        (cleanup): Removed.
-       
+
        * fluids.h, fluids.c: Reimplemented completely.
        (SCM_FLUID_NUM, SCM_FAST_FLUID_REF,
        SCM_FAST_FLUID_SET): Reimplemented as functions.
        scm_set_current_dynamic_state, scm_frame_current_dynamic_state,
        scm_c_with_dynamic_state, scm_with_dynamic_state,
        scm_i_make_initial_dynamic_state, scm_fluids_prehistory): New.
-       
+
        * feature.c (progargs_fluid): New.
        (scm_program_arguments, scm_set_program_arguments): Use it instead
        of scm_progargs.
        (scm_init_feature): Allocate it.  Also, only add "threads" feature
        when SCM_USE_PTHREAD_THREADS is true.
-       
+
        * eval.c (scm_makprom): Use scm_make_recursive_mutex instead of
        scm_make_rec_mutex, with all the consequences.
        (scm_eval_x, scm_eval): Use scm_frame_begin etc instead of
        scm_internal_dynamic_wind.  Handle dynamic states as second
        argument.
-       
+
         * threads.h, threads.c (scm_internal_select): Renamed to
        scm_std_select and discouraged old name.
        (scm_thread_sleep, scm_thread_usleep): Likewise, as scm_std_sleep
        respectively.
 
        * fluid.h (SCM_FLUIDP): Deprecated.
-       
+
        * coop-threads.c: Removed.
-       
+
        * continuations.h, continuations.c (scm_with_continuation_barrier,
        scm_c_with_continuation_barrier, scm_i_with_continuation_barrier):
        New.
        current sleep.
        (scm_system_async_mark_for_thread): Do not use scm_current_thread
        since that might not work during early initialization.
-       
+
        * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS, SCM_REDEFER_INTS,
        SCM_REALLOW_INTS): Deprecated by moving into deprecated.h and
        deprecated.c.  Replaced all uses with SCM_CRITICAL_SECTION_START
        and SCM_CRITICAL_SECTION_END.
        (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): Removed.  Replaced with
        SCM_CRITICAL_SECTION_START/END.
-       
+
        * Makefile.am (modinclude_HEADER): Removed threads-plugin.h.
        (libguile_la_SOURCES): Added null-threads.c
        (EXTRA_libguile_la_SOURCES): Removed pthread-threads.c and
        scm_frame_current_dynamic_state and
        scm_i_with_continuation_barrier.
        (scm_dynamic_root): Return current continuation barrier.
-       
-       
+
+
 2005-02-28  Marius Vollmer  <mvo@zagadka.de>
 
        * socket.c (scm_setsockopt): Handle IP_ADD_MEMBERSHIP and
        the hashtable.
        (scm_hash_fn_create_handle_x): Likewise.
        * vectors.h (SCM_I_SET_WVECT_TYPE): New, for use in scm_i_rehash.
-       
+
 2005-02-10  Mikael Djurfeldt  <djurfeldt@nada.kth.se>
 
        * unif.c (prototype_to_type): Bugfix: Don't compare prototype to
        statistics on the number of live objects of each type.
 
        * gc-card.c (scm_i_tag_name):  new function.
-       (scm_i_card_statistics): new function. 
+       (scm_i_card_statistics): new function.
 
 2005-01-24  Kevin Ryde  <user42@zip.com.au>
 
        (scm_classes_initialized): Removed.
        (scm_class_of): Do not check it.
        (create_standard_classes): Do not set it.
-       
+
 2005-01-17  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
 
        * objects.h, objects.c (scm_classes_initialized): New.
        (scm_class_of): Signal error when scm_classes_initialized is zero.
        * goops.c (create_standard_classes): Set scm_classes_initialized
        to one.
-       
+
        * random.c (scm_random_solid_sphere_x): Use
        scm_c_generalized_vector_length instead of
        scm_uniform_vector_length.
        (scm_init_srfi_4): Set mark function of smob when needed.
        Initialize scm_uint64_min, scm_uint64_max, scm_int64_min,
        scm_int64_max.
-       
+
        Recognize 1.4 -e syntax.
-       
+
        * script.c (sym_at, sym_atat, sym_main, all_symbols): New.
        (scm_compile_shell_switches): Use them to recognize and convert
        1.4 "-e" syntax.
-       
+
 2005-01-12  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
 
        * deprecated.h, deprecated.c, strings.h, strings.c: Turn all
        (print_summary): New.
        (scm_init_deprecation): Initialize SCM_WARN_DEPRECATED instead of
        mode.
-       
+
        Deprecated SCM_ARRAY* macros.
-       
+
        * unif.h, unif.c, ramap.c, vectors.c, srfi-4.c, srfi-4.i.c
        (SCM_ARRAYP, SCM_I_ARRAYP): Renamed former to latter internal
        version.  Changed all uses.
        Moved from unif.h to unif.c.
        (scm_c_array_rank): New.
        (scm_array_rank): Reimplement using it.
-       
+
        * deprecated.h, deprecated.c (SCM_ARRAYP, SCM_ARRAY_NDIM,
        SCM_ARRAY_CONTP, SCM_ARRAY_MEM, SCM_ARRAY_V, SCM_ARRAY_BASE,
        SCM_ARRAY_DIMS, scm_t_array): New deprecated versions.
-       
+
 2005-01-11  Marius Vollmer  <mvo@zagadka.de>
 
        * ramap.c: Replace uses of scm_make_ra with scm_i_make_ra.
        (scm_ra_set_contp): Deprecated, changed all uses to
        scm_i_ra_set_contp.
        (scm_cvref, scm_aind, scm_raprin1): Deprecated.
-       
+
 2005-01-10  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
 
        * eval.c (scm_eval): Added example to docstring.  Thanks to Issac
        (scm_i_print_array): Print length information for arrays that need
        it.
        (scm_i_read_array): Parse it.
-       
+
        * deprecated.h, deprecated.c (SCM_CHARS, SCM_UCHARS, SCM_LENGTH,
        scm_i_object_chars, scm_i_object_length): Brought back from the
        dead.
        uvec_fast_ref since scm_array_handle_ref should be faster now.
        (coerce_to_uvec, scm_c_uniform_vector_ref,
        scm_c_uniform_vector_set_x): Likewise.
-       
+
        * unif.h, unif.c, inline.h (scm_i_t_array_ref, scm_i_t_array_set):
        New.
        (scm_t_array_handle): Added ref, set, elements and
        scm_bit_position, scm_bit_set_star_x, scm_bit_count_star,
        scm_bit_invert_x): Correctly multiply index with increment in the
        general case.
-       
+
        * unif.c (scm_array_handle_set): Correctly execute only one
        alternative.  D'Oh!
        (scm_list_to_typed_array, l2ra): Use scm_t_array_handle to fill
        the array; this covers all cases with much simpler code.
-       
+
        * srfi-4.c (scm_uniform_element_size): Deprecated implementation
        as well.
 
        (scm_i_print_array): Print zero rank arrays specially.
        (tag_to_type): Return #t for an empty tag, not the empty symbol.
        (scm_i_read_array): Allow zero rank arrays.
-       
+
 2005-01-07  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
 
        * hashtab.h, hashtab.c (SCM_HASHTAB_BUCKET_LOC): Removed.
        Removed ref_stack field.
        (PSTATE_STACK_REF, PSTATE_STACK_SET): New, for accessing the stack
        of a print state.  Use them everywhere instead of ref_stack.
-       
+
        * srfi-4.h (scm_uniform_element_size): Deprecated for real.
-       
+
        * srfi-4.c: Include deprecation.h.
 
        * vectors.h, vectors.c, unif.h, unif.c, deprecated.h,
        scm_vector_equal_p): Moved from vectors.[hc] to deprecated.[hc].
        (scm_vector_equal_p, scm_i_vector_equal_p): Renamed former to
        latter.  Changed use in eq.c.
-       
+
 2005-01-07  Marius Vollmer  <mvo@zagadka.de>
 
        Make the uniform vector routines also deal with one dimensional
        arrays.
-       
+
        * srfi-4.c (SCM_IS_UVEC): New, use it instead of
        SCM_SMOB_PREDICATE in this file.
        (is_uvec): Also recognize one-dimensional uniform numeric arrays
        (scm_uniform_vector_to_list): Let uvec_to_list do all the
        checking.
        (scm_uniform_vector_length): Use uvec_length.
-       
+
 2005-01-06  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
 
        * srfi-4.h, srfi-4.c (scm_c_uniform_vector_element_size,
        scm_c_uniform_vector_size): Removed.
        (scm_array_handle_uniform_element_size): New.
-       
+
 
        * unif.h (scm_array_handle_ref, scm_array_handle_set): Changed
        type of POS parameter to be signed, positions can be negative.
        scm_t_array_handle to properly call it.
        (scm_vector_get_handle, scm_generalized_vector_get_handle):
        Renamed former to latter, changed all uses.
-       
+
 2005-01-05  Marius Vollmer  <mvo@zagadka.de>
 
        Updated bitvector routines to also use scm_t_array_handles.
-       
+
        * unif.h (scm_bitvector_elements,
        scm_bitvector_writable_elements): Use a scm_t_array_handle and
        deliver offset, length and increment to caller.  Changed all uses.
        arrays is now SCM_UNSPECIFIED.  The old special value SCM_BOOL_F
        was a valid value to fill bitvectors with, so it can't really be
        specialed out.
-       
+
 2005-01-04  Kevin Ryde  <user42@zip.com.au>
 
        * stime.c (scm_strftime): Free t.tm_zone produced by bdtime2c.
        so that it doesn't leak.
        (scm_stable_sort): Simply call scm_stable_sort_x on a copy of the
        list or vector.
-       
+
        * ramap.c (scm_array_map_x): Do not try to convert fill value
        before filling, any necessary conversion is done while storing.
 
        vector elements API or simple vector API, as appropriate.  Removed
        SCM_HAVE_ARRAYS ifdefery.  Replaced all uses of
        SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
-       
+
        * srfi-4.h, srfi-4.c,
        srfi-4.i.c (scm_array_handle_uniform_elements,
        scm_array_handle_uniform_writable_elements,
        scm_t_array_handle, deliver length and increment.
        (scm_array_handle_<foo>_elements,
        scm_array_handle_<foo>_writable_elements): New.
-       
+
        * gen-scmconfig.h.in (SCM_I_GSC_HAVE_ARRAYS): Removed.
        * gen-scmconfig.c: Hard code SCM_HAVE_ARRAYS to "1".
-       
+
        * unif.h, unif.c (scm_t_array_handle, scm_array_get_handle,
        scm_array_handle_rank, scm_array_handle_dims, scm_array_handle_ref
        scm_array_handle_set, scm_array_handle_elements
        (scm_make_shared_array, scm_enclose_array): Correctly use
        scm_c_generalized_vector_length instead of
        scm_uniform_vector_length.
-       
+
        * validate.h (SCM_VALIDATE_VECTOR,
        SCM_VALIDATE_VECTOR_OR_DVECTOR): use scm_is_simple_vector instead
        of SCM_VECTORP.
        No longer use creators to specify the type of an array.  Creators
        expose the fact that arrays are wrapped around vectors, but that
        might change.
-       
+
        * srfi-4.h (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector,
        scm_i_proc_make_u16vector, scm_i_proc_make_s16vector,
        scm_i_proc_make_u32vector, scm_i_proc_make_s32vector,
        (tag_to_type): New.
        (scm_i_read_array): Use scm_list_to_typed_array instead of
        scm_list_to_uniform_array.
-       
+
 2004-12-27  Marius Vollmer  <mvo@zagadka.de>
 
        * unif.h, unif.c (scm_bitvector_elements): Made return value "const".
        scm_frame_uniform_vector_release_writable_elements): New. Takes
        crown of longest identifier yet.
        Changed all uses as required by the changes above.
-       
+
        * vectors.h, vectors.c (scm_c_vector_set_x): Make return type
        void.
        (scm_is_vector, scm_vector_p, scm_vector_length,
        scm_uniform_vector_length.
        (scm_ramap, rafe): Use scm_c_vector_ref instead of SCM_VELTS.  use
        scm_c_generalized_vector_ref instead of scm_uniform_vector_ref.
-               
+
 2004-12-23  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
 
        * continuations.h, continuations.c (scm_t_contregs): New 'offset'
        scm_last_stack_frame, scm_stack_id): Use the new 'offset' member
        of continuations instead of calculating the offset ourselves.
        Relocate 'vect' member of scm_t_debug_frame.
-       
+
 2004-12-16  Kevin Ryde  <user42@zip.com.au>
 
        * ramap.c (scm_array_map_x): Check for at least one source argument.
        use of an array as their storage 'vector'.  When all generalized
        vectors are allowed as storage, including one-dimensional arrays,
        this will no longer work.)
-       
+
        * unif.h, unif.c: (scm_tc16_enclosed_array, SCM_ENCLOSED_ARRAYP):
        New.
        (exactly_one_third, singp): Removed.
        explicitly.
        (scm_init_unif): Initialize scm_tc16_enclosed_array smob.
        Use scm_i_print_array as printer for scm_tc16_array.
-       
+
 2004-11-10  Marius Vollmer  <mvo@zagadka.de>
 
        * ramap.c (cind): Changed second arg to be pointer to long instead
        in terms of scm_uniform_vector_read_x and
        scm_uniform_vector_write, respectively.  Strings and
        bitvector support has been dropped.
-       
+
        * srfi-4.h, srfi-4.c: Do not include <libguile.h>, include the
        needed files directly.  Include config.h, <unistd.h> and <io.h>
        when available.
        (make_uvec): ...but not here.
        (coerce_to_uvec): Use new generalized vector functions to handle
        all kinds of vectors in one go.
-       
+
        * tags.h (scm_tc7_bvect): Renamed to scm_tc7_unused7, renaming the
        remaining scm_tc7_unused tags to get a neatly ordered list.
 
        scm_is_generalized_vector, scm_c_generalized_vector_length,
        scm_c_generalized_vector_ref, scm_c_generalized_vector_set_x):
        New.
-       
+
        * unif.h, unif.c (scm_bitvector_p, scm_bitvector,
        scm_make_bitvector, scm_bitvector_length, scm_bitvector_ref,
        scm_bitvector_set_x, scm_list_to_bitvector, scm_bitvector_to_list,
 
 2004-11-02  Marius Vollmer  <mvo@zagadka.de>
 
-        Mac OS X and OpenBSD compatibility patches from Andreas Vögele.
+        Mac OS X and OpenBSD compatibility patches from Andreas Vögele.
        Thanks!
 
        * backtrace.c (scm_display_backtrace_with_highlights): Join the
        * srfi-4.h, srfi-4.c (scm_frame_uniform_vector_release): New.
        * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use it to get
        more efficient access to the u32vector.
-       
+
        * tags.h (scm_tc7_llvect, scm_tc7_uvect, scm_tc7_fvect,
        scm_tc7_dvect, scm_tc7_cvect, scm_tc7_svect, scm_tc7_byvect,
        scm_tc7_ivect): Renamed to scm_tc7_unused_1 to scm_tc7_unused_8.
 
        * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use u32vectors
        instead of old-sytle uvectors.
-       
+
        * convert.c, convert.i.c: Rewritten completely, using
        scm_any_to_u8vector, etc and other new-style uniform vector
        functions.
        return creators.
        (scm_make_uve): Use scm_call_1 instead of scm_call_2 with a second
        arg of SCM_UNDEFINED.  The latter is wrong.
-       
+
        * unif.h, unif.c (scm_make_u1vector): New, but only temporary.
        (make_uve): Removed.
        (scm_i_proc_make_vector, scm_i_proc_make_string,
        Updated all tables and generic functions to support them.
        (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector, etc): New.
        (scm_init_srfi_4): Initialize them.
-       
+
        * srfi-4.i.c (scm_take_u8vector, etc): use uvec_sizes instead of
        sizeof(CTYPE) as explained in the comment.
 
        vector.  The plan is to gradually replace one type after the other
        until none is left and then to consider general cleanups and
        optimizations.
-       
+
        * srfi-4.h, srfi-4.i.c (scm_u8vector_elements, etc): New.
 
        * srfi-4.h, srfi-4.c (scm_uniform_vector_p,
        requested.
        * convert.c (scm_c_scm2chars, scm_c_chars2scm,
        scm_c_chars2byvect): Use a s8vector instead of a scm_tc7_byvect.
-       
+
 2004-10-26  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
 
        * numbers.h, numbers.c (scm_i_print_double): New.
        (scm_uint2str): New, for scm_t_uintmax.
        (scm_iint2str): Argument type changed to scm_t_intmax,
        reimplemented in terms of scm_uint2str.
-       
+
        * print.c, print.h (scm_uintprint): New, for printing
        scm_t_uintmax values.
        (scm_intprint): Argument type changed to scm_t_intmax.
-       
+
        * sort.c (quicksort, scm_merge, scm_merge_list_x,
        scm_merge_list_step, scm_merge_vector_step): Inserted SCM_TICKs at
        strategic places so that the loops can be interrupted.
        "-I$(top_srcdir)/libguile-ltdl".
        (libguile_la_LIBADD): Use @LIBLTDL@ instead of
        "../libguile-ltdl/libguile-ltdl.a".
-       
+
        * guile.c, dynl.c: Switched to using libltdl directly.  Replaced
        all references to scm_lt_* with just lt_*.  Include <ltdl.h>
        instead of <libguile-ltdl.h>.
        quicksort to fail, it just put all the burdon on the insertion
        sort and was thus very slow.  Thanks to Rolan Orre for reporting
        the slowness!
-       
+
 2004-10-19  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
 
        * numbers.c (scm_i_range_error): New.
        * conv-integer.i.c, conv-uinteger.i.c: Use it instead of
-       scm_out_of_range.       
+       scm_out_of_range.
 
        * sort.c (scm_restricted_vector_sort_x): Validate startpos <=
        endpos.  State inclusiveness/exclusiveness of bounds in docstring.
 
        Keywords no longer store a 'dash symbol'.  Instead, they store a
        symbol with their real name.
-       
+
        * keywords.h, keywords.c, deprecated.h, deprecated.c
        (SCM_KEYWORDP, SCM_KEYWORDSYM): Deprecated and implemented in
        terms of scm_is_keyword and scm_keyword_dash_symbol.
-       
+
        * keywords.h, keywords.c, discouraged.h, discouraged.c
        (scm_make_keyword_from_dash_symbol, scm_keyword_dash_symbol,
        scm_c_make_keyword): Discouraged.
        (scm_is_keyword, scm_from_locale_keyword,
        scm_from_locale_keywordn): New.
 
-       * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword.   
+       * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword.
 
        * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): Use
        scm_from_locale_keyword instead of scm_c_make_keyword.
        (libguile_la_LIBADD): Removed THREAD_LIBS_LOCAL, which is unused
        now.
        (libpath.h): Put GUILE_CFLAGS in the build-info.
-       
+
 2004-09-23  Marius Vollmer  <mvo@zagadka.de>
 
         * print.h (scm_print_state): Added highlight_objects.
        * backtrace.h, backtrace.c (scm_display_backtrace_with_highlights,
        scm_backtrace_with_highlights): New.  Set highlight_objects of
        printstate.
-       
+
        * error.c (scm_error_scm): Document new meaning of data/rest
        argument for out-of-range and wrong-type-arg errors.
        (scm_out_of_range, scm_out_of_range_pos, scm_wrong_type_arg,
        scm_wrong_type_arg_msg): Pass bad_value in rest argument of
        exception so that it gets highlighted in the backtrace.
        Don't talk about "argument" when not giving a position.
-       
+
        * throw.c (handler_message): The rest argument is the fourth
        argument, not everything after the third.  Call
        scm_display_backtrace_with_highlights, passing the rest argument
        * strings.h, strings.c (scm_substring_read_only,
        scm_c_substring_read_only, scm_i_substring_read_only): New.
        (RO_STRING_TAG, IS_RO_STRING): New.
-       (scm_i_string_writable_chars): Bail on read-only strings. 
-       
+       (scm_i_string_writable_chars): Bail on read-only strings.
+
        * read.c (scm_lreadr): use scm_c_substring_read_only for string
        literals, thus making them read-only as specified by R5RS.
 
        * numbers.h, numbers.c: Include <gmp.h> in numbers.h, not in
        numbers.c.
        (scm_to_mpz, scm_from_mpz): New.
-       Thanks to Andreas Vögele!
-       
+       Thanks to Andreas Vögele!
+
        * read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not
        just on a line of its own.
 
        scm_string_tabulate, string_upcase_x, string_down_case_x,
        string_titlecase_x, string_reverse_x, scm_string_tokenize): Use
        size_t instead of int for indices into strings.  Make sure that no
-       over- or underflow occurs.  Thanks to Andreas Vögele!
+       over- or underflow occurs.  Thanks to Andreas Vögele!
        (scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended'
        indices, which can also be negative.
-       
+
 2004-09-20  Marius Vollmer  <mvo@zagadka.de>
 
        * gc-mark.c (SCM_MARK_BACKING_STORE): Removed, it was unused.
 
        * filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it
        causes too many problems elsewhere (glibc, freebsd, mingw).  Reported
-       by Andreas Vögele.
+       by Andreas Vögele.
 
 2004-09-08  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
 
        (scm_lreadr): Abort on seeing "#!", which should no longer happen.
        (skip_scsh_block_comment): Use scm_input_error instead of
        scm_misc_error in case of EOF.
-       
+
 2004-09-07  Kevin Ryde  <user42@zip.com.au>
 
        * numbers.c (scm_integer_expt): Reject exponent +/-inf.
        scm_i_string_chars et al.  Copious scm_remember_upto_heres have
        been inserted.  Made sure that no internal string pointer is used
        across a SCM_TICK or a possible GC.
-       
+
        * script.c (scm_compile_shell_switches): Use
        scm_from_locale_string instead of scm_makfrom0str.
 
        * srfi-13.c, srfi-13.h, srfi-14.c, srfi-14.h: New files.
        * strop.h, strop.c: Removed, they are now empty.
        * Makefile.am: Updated for new and removed files.
-       
+
        * symbols.h, symbols.c (scm_string_ci_to_symbol): Moved here, next
        to scm_string_to_symbol.
 
        scm_string_geq_p, scm_string_ci_less_p, scm_string_ci_leq_p,
        scm_string_ci_gr_p, scm_string_ci_geq_p): Use scm_string_eq, etc
        instead of explicit code.
-       
+
        * deprecated.c, load.c, posix.c, unif.c, symbols.c: Include
        "srfi-13.h" instead of "strop.h".
 
        scm_i_string_char, scm_i_string_writable_chars): Use it.
        (scm_i_substring_copy): Make START argument optional for C
        callers, for upcoming SRFI-13 integration.
-       
+
 2004-08-21  Marius Vollmer  <mvo@zagadka.de>
 
         From Richard Todd, Thanks!
-       
+
        * script.c (scm_compile_shell_switches): added '-L' switch to add
        to the %load-path.
-       
+
 2004-08-21  Dirk Herrmann  <dirk@dirk-herrmanns-seiten.de>
 
        * eval.c (unmemoize_exprs): When dropping internal body markers
        scm_i_string_writable_chars doesn't give that.  Fixed by letting
        mkstemp modify a locale version of the tmpl argument and copying
        the result back into tmpl.
+
        * strop.c (scm_substring_move_x): Store into str2, not str1.
 
 2004-08-20  Kevin Ryde  <user42@zip.com.au>
         New string implementation, with copy-on-write strings and
        mutation-sharing substrings, and a new internal string API.
        Symbols can now share memory with strings.
-       
+
        * tags.h (scm_tc7_stringbuf): New tag.
 
        * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
        (scm_i_thread_wake_up): Unlock all threads, including ourselves,
        call scm_i_enter_guile.
        (scm_thread_mark_stacks): Expect all threads to be suspended.
-       
+
        * gc.h, gc.c (scm_i_gc_admin_mutex): New, to protect
        scm_gc_mallocated, for now.
        (scm_init_storage): Initialize it.
        * gc-malloc.c (descrease_mtrigger, increase_mtrigger): Use it.
-       
+
        * gc-mark.c (scm_gc_mark_dependencies): Call scm_i_string_mark,
        scm_i_stringbuf_mark and scm_i_symbol_mark, as appropriate.
        * gc-card.c (scm_i_sweep_card):  Call scm_i_string_free,
        (scm_recv, scm_send, scm_recvfrom, scm_sendto): Use
        SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of
        SCM_STRING_CHARS and SCM_STRING_LENGTH.
-       
+
        * simpos.c (scm_system): Convert SCM strings to locale strings
        instead of accessing their internals.
 
        (scm_basename, scm_dirname): Use SCM_I_STRING_CHARS and
        SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and
        SCM_STRING_LENGTH.
-       
+
        * extensions.c (load_extension): Convert lib and init to locale
        strings instead of accessing the internals directly.
        (scm_c_load_extension): Use scm_from_locale_string instead of
        scm_makfrom0str.
-       
+
        * fports.h, fports.c (scm_i_fdes_to_port): New, like
        scm_fdes_to_port, but take mode bits directly instead of as a C
        string.
        (scm_void_port): Implement using above.
        (scm_sys_make_void_port): Use scm_i_void_port together with
        scm_i_mode_bits to avoid accessing internals of SCM string.
-       
+
        * strings.h, strings.c (scm_i_get_substring_spec): New.
 
        * socket.c, rw.c, deprecated.h, validate.h
        scm_to_locale_string, etc.
        (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated.  Replaced as
        above, plus scm_i_get_substring_spec.
-       
+
        * regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
        hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
        strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
        (scm_putenv): Rewritten to use only C strings.
        (scm_setlocale, scm_crpt): Convert argument strings to locale
        strings.
-       
+
 2004-08-11  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
 
        * load.c (scm_primitive_load_path): Do not check for absolute
        (scm_string_append): Use memcpy instead of explicit loop.  Do not
        use register keyword.  Use plain 'char' instead of 'unsigned
        char'.
-       
+
        * strports.c (scm_mkstrport): Use SCM_I_STRING_UCHARS instead of
        SCM_STRING_UCHARS.  Use SCM_I_STRINGP instead of SCM_STRINGP.
 
        SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
        SCM_I_STRING_LENGTH, respectively.
        (gh_scm2newstr): Implement in terms of scm_to_locale_string.
-       
+
        * environments.c: Instead calling scm_puts on the SCM_STRING_CHARS
        of a string, call scm_display on the string itself.
 
        scm_error, this avoids the back and forth conversion of SUBR and
        MESSAGE and also plugs a memory leak.
        (scm_error): Call scm_error_scm.
-       
+
        * backtrace.c: Replaced SCM_STRINGP with scm_is_string.
        (display_header): Print FNAME when it is true, not
        merely when it is a string.
        * strings.h (SCM_SET_STRING_LENGTH, SCM_SET_STRING_CHARS): Removed
        unceremoniously.  They were unused by Guile itself, and external
        use should stop immediately.
-       
+
 
 2004-08-10  Marius Vollmer  <mvo@zagadka.de>
 
        scm_truncate): Renamed to scm_c_round and scm_c_truncate;
        deprecated versions installed in deprecated.h and deprecated.c.
        Changed all uses.
-       
+
 2004-08-06  Rob Browning  <rlb@defaultvalue.org>
 
        * net_db.c (scm_resolv_error): don't cause an exception while
        stat on the filename, to be certain a file rename can't mean we get
        info on one filesystem object but open another.  This fstat usage is
        similar to Emacs copy-file.
-       
+
        * posix.c (scm_setgroups): Enhance docstring, per doc/ref/posix.texi.
 
        * simpos.c (scm_system_star): Change scm_from_long to scm_from_int on
        New.
        (scm_make_complex): Discouraged by moving to discouraged.h and
        discouraged.c.  Replaced all uses with scm_c_make_rectangular.
-       
+
        * discouraged.h, discouraged.c, numbers.c, numbers.h
        (scm_is_rational): New.
        (scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big,
        explicit code.
        (scm_from_double): Do not implement in terms of scm_make_real, use
        explicit code.
-       
+
 2004-08-02  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
 
        * init.c (scm_init_guile_1): Call scm_i_init_discouraged.
        * numbers.h, numbers.c: Removed GUILE_DEBUG code.
        (scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big,
        scm_i_size2big, scm_i_ptrdiff2big): Removed.
-       (scm_i_long2big, scm_i_ulong2big): New, explicit definitions.  
+       (scm_i_long2big, scm_i_ulong2big): New, explicit definitions.
        * conv-integer.i.c, conv-uinteger.i.c: Use them instead of
        explicit code.
 
        SCM_T_INT64_MIN, SCM_T_INT64_MAX, SCM_T_UINT64_MAX,
        SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, SCM_T_UINTMAX_MAX): Moved
        definition into __scm.h, using new SCM_I_TYPE_MIN, etc.
-       
+
        * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate
        the functions below.
 
        (scm_to_signed_integer, scm_to_unsigned_integer,
        scm_from_signed_integer, scm_from_unsigned_integer): Generate via
        conv-integer.i.c and conv-uinteger.i.c, as well.
-       
+
        * number.h (scm_to_ssize_t, scm_to_size_t): Use the new
        SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX, and SCM_I_SIZE_MAX macros for
        the limits.  Those are always defined.
-       
+
 2004-07-29  Kevin Ryde  <user42@zip.com.au>
 
        * posix.c (scm_ttyname): Use scm_i_misc_mutex for thread safety.
        Reimplement using scm_is_false, scm_is_true, scm_is_bool, and
        scm_from_bool, respectively.
        (SCM_NINUMP): Added.
-       
+
        * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
        deprecated.h.  Replaced all uses with scm_is_eq.
 
        * dynwind.c (scm_i_dowinds): Removed unused code that would call
        the unexisting scm_cross_dynwind_binding_scope for inums on the
        windlist.
-       
+
 2004-07-10  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
 
        * socket.c (ipv6_net_to_num, scm_from_ipv6): Renamed
        an IPv& byte-wise address to a SCM integer.  Changed all uses.
        (bignum_in_ipv6_range_p, VALIDATE_INET6): Removed, their function
        is now done by scm_to_ipv6.
-       
+
        * numbers.c (scm_to_signed_integer, scm_to_unsigned_integer): dot
        not accept inexact integers.
 
        use CHAR_BIT instead of hardcoding 8.
        (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used
        SCM_I_LLONG_MIN etc. instead.
-       
+
        * numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to
        SCM_I_MAKINUM and changed all uses.
        * deprecated.h, deprecated.c (SCM_MAKINUM): Newly deprecated.
        scm_from_uint8, scm_from_int16, scm_from_uint16, scm_from_int32,
        scm_from_uint32, scm_from_int64, scm_from_uint64, scm_from_intmax,
        scm_from_uintmax): New.
-       
+
 2004-07-06  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
 
        * tags.h (scm_is_eq): New.
        scm_from_uint, scm_from_long, scm_from_ulong, scm_from_size_t,
        scm_from_ssize_t, scm_is_real, scm_to_double, scm_from_double):
        New.
-       
+
 2004-07-05  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
 
        * boolean.h, boolean.c (scm_is_true, scm_is_false, scm_from_bool,
        * gc_os_dep.c: update ifdefery for macosx.
        (scm_get_stack_base): separate result initialization from
        declaration to slience warnings with macosx and hp-ux using gcc
-       3.3.  Thanks to Andreas Vögele.
+       3.3.  Thanks to Andreas Vögele.
 
 2004-06-13  Han-Wen Nienhuys   <hanwen@xs4all.nl>
 
        unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
        unmemoize_letrec, unmemoize_letstar, unmemoize_or,
        unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
-       unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref, 
+       unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref,
        unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
        unmemoize_builtin_macro): New static functions and symbols.
 
        macroexp and made static.  Added new version of scm_macroexp that
        emits a deprecation warning and then calls macroexp.
        (scm_m_undefine): Issue deprecation warning.
-       
+
 2004-05-30  Dirk Herrmann  <dirk@dirk-herrmanns-seiten.de>
 
        * eval.c (lookup_global_symbol, literal_p, try_macro_lookup):
 
        Convert floating point numbers into strings with an arbitrary
        radix.  Thanks to Richard Todd!
-       
+
        * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will
        fit.
        (fx): Removed.
 2004-05-02  Kevin Ryde  <user42@zip.com.au>
 
        * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
-       --disable-deprecated.  Reported by Andreas Vögele.
+       --disable-deprecated.  Reported by Andreas Vögele.
 
        * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
-       particular on HP-UX).  Reported by Andreas Vögele.
+       particular on HP-UX).  Reported by Andreas Vögele.
 
        * list.c (varargs.h): Remove, leave just stdarg.h which is all the
        code has support for.  Fixes building with AIX cc, which is ansi but
 2004-05-01  Kevin Ryde  <user42@zip.com.au>
 
        * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
-       is now gone.  Reported by Andreas Vögele.
+       is now gone.  Reported by Andreas Vögele.
 
 2004-04-28  Kevin Ryde  <user42@zip.com.au>
 
        * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
        mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
        ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
-       subscript.  Reported by Andreas Vögele.
+       subscript.  Reported by Andreas Vögele.
        Also cast through unsigned char to avoid passing negatives to those
        macros if input contains 8-bit values.
 
 
        * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to
        avoid warning from gcc 3.4.  Reported by Hyperdivision.
-       
+
        * numbers.c (scm_bit_extract): Use min instead of MIN.
        (MIN): Remove, this conflicts with similar macro defined by limits.h
-       on HP-UX.  Reported by Andreas Vögele.
+       on HP-UX.  Reported by Andreas Vögele.
 
        * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
-       particular on HP-UX).  Reported by Andreas Vögele.
+       particular on HP-UX).  Reported by Andreas Vögele.
 
        * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
-       Reported by Andreas Vögele.
+       Reported by Andreas Vögele.
 
        * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
        for the benefit of hpux11 where pthread_mutex_t is 88 bytes.  Reported
-       by Andreas Vögele.
+       by Andreas Vögele.
 
 2004-04-22  Dirk Herrmann  <dirk@dirk-herrmanns-seiten.de>
 
        rounding in x+0.5 when x is a big value already an integer.  In
        certain hardware rounding cases x+0.5 can give an adjacent integer,
        leading to that as the result, when we really just wanted x itself.
-       
+
 2004-04-19  Dirk Herrmann  <dirk@dirk-herrmanns-seiten.de>
 
        * eval.c (scm_unmemocopy): Fixed unmemoization of let*.
 2004-04-15  Kevin Ryde  <user42@zip.com.au>
 
        * cpp_sig_symbols.in: Add SIGSYS.
-       
+
        * list.c (scm_append_x): Use iterative style, to avoid non-tail
        recursion.
 
        * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag.
 
        * chars.h (scm_init_chars): change scm_{upcase,downcase} to
-       scm_c_{up,down}case. 
+       scm_c_{up,down}case.
        (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
-       when hi-bit ASCII is subjected to SCM_MAKE_CHAR().  
+       when hi-bit ASCII is subjected to SCM_MAKE_CHAR().
 
 2004-04-06  Kevin Ryde  <user42@zip.com.au>
 
        SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should
        use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on
        debugging conditionally.
+
 2004-03-21  Kevin Ryde  <user42@zip.com.au>
 
        * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety.
 
        * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
        Thanks to Bill Schottstaedt!
-       
+
        * socket.h (scm_gethost): Removed prototype it is already in
        "net_db.h".  Thanks to Bill Schottstaedt!
-       
+
 2004-02-18  Kevin Ryde  <user42@zip.com.au>
 
        * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
        * read.h: Remove conditionally compiled last arg to
        scm_lreadparen.
        (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
-       
+
 2004-01-23  Han-Wen Nienhuys   <hanwen@xs4all.nl>
 
        * eval.c (m_expand_body): remove stray variable new_body.
        * dynwind.h, dynwind.c (scm_frame_unwind,
        scm_frame_unwind_handler): Renamed and changed all uses.
        (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
-       
+
 2004-01-11  Kevin Ryde  <user42@zip.com.au>
 
        * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
        case of only one fluid.
        (scm_with_fluid): New.
        (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
-       
+
        * fluids.h, fluids.c (scm_frame_fluid): New.
        (scm_with_fluid): New.
        (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
 
        * dynwind.c (scm_frame_end): Do not use scm_i_dowinds.  Instead,
        do the unwinding directly.  It is simple enough.
-       
+
        * dynwind.h, dynwind.c: Did the following renamings:
        scm_begin_frame -> scm_frame_begin,
        scm_end_frame -> scm_frame_end,
        scm_with_blocked_asyncs -> scm_frame_block_asyncs,
        scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
        Changed all uses.
-       
+
        * ports.h, ports.c: Did the follwing renamings:
        scm_with_current_input_port -> scm_frame_current_input_port,
        scm_with_current_output_port -> scm_frame_current_output_port,
        (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
        (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
        to protect SCM values.
-       
+
        * dynwind.h (SCM_F_WIND_EXPLICITELY,
        SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
        Changed all uses.
        (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
-       
+
 2004-01-05  Marius Vollmer  <mvo@zagadka.de>
 
        * ports.h, ports.c (scm_with_current_input_port,
        rewinding.
        (scm_dynthrow): Do not call scm_dowinds, this is now done by
        copy_stack_and_call.
-       
+
 2004-01-04  Kevin Ryde  <user42@zip.com.au>
 
        * numbers.c (scm_less_p): Don't convert frac to float for compares,
        can give bad results due to rounding.
-       
+
        * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
        setzone/restorezone protection for DOS.
 
 2003-11-18  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
 
        Support for exact fractions from Bill Schottstaedt!  Thanks!
-       
+
        * print.c (scm_iprin1): Handle fractions.
 
        * objects.h (scm_class_fraction): New.
-       * objects.c (scm_class_fraction): New. 
+       * objects.c (scm_class_fraction): New.
        (scm_class_of): Handle fractions.
-       
+
        * hash.c (scm_hasher): Handle fractions.
 
        * numbers.c: New code for handling fraction all over the place.
        scm_rational_p): New prototypes.
        (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp,
        scm_i_print_fraction): New prototypes.
-       
+
        * goops.c (create_standard_classes): Create "<fraction>" class.
 
        * gc-mark.c (scm_gc_mark_dependencies): Handle fractions.
 
        * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
        and to have non-integer types rejected as per other logical funcs.
-       
+
 2003-08-28  Kevin Ryde  <user42@zip.com.au>
 
        * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
        that parameter name.
        (scm_primitive_property_set_x): In docstring, VAL is the value
        parameter not CODE.
-       
+
 2003-07-27  Marius Vollmer  <mvo@zagadka.de>
 
        * print.c (scm_print_symbol_name): handle more weird characters by
        * posix.c (scm_setgroups): New.  Thanks to Paul Jarc!
        (scm_getgroups): Handle groups ids that don't fit into a fixnum.
        Don't use SCM_WRITABLE_VELTS.
-       
+
        * gc.h (SCM_GC_SET_CELL_BVEC): New.
        * gc-card.c (scm_i_init_card_freelist): Use it.  Thanks to
        Matthias Koeppe!
 
 2003-07-03  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-       * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)" 
+       * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
 
 2003-07-02  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
        * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
        clauses.
-       
+
 2003-06-29  Marius Vollmer  <mvo@zagadka.de>
 
        * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
        * continuations.c: Redeclaration of getcontext() via the
        __asm__ ("getcontext") directive.
 
-       * continuations.h: Include <ucontext.h> instead of 
+       * continuations.h: Include <ucontext.h> instead of
        <sys/ucontext.h>.
 
 2003-06-21  Kevin Ryde  <user42@zip.com.au>
        (scm_getspecific, scm_setspecific): Made these two function
        real part of the API.
 
-       * posix.c (s_scm_putenv): Added some code to make a 
+       * posix.c (s_scm_putenv): Added some code to make a
        (putenv "FOO="), i.e. setting an empty string, work also on
        Win32 systems.  Thanks to Kevin Ryde for the proposal.
 
 
        * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
        rather than SCM_EOL.  Needed by "Unknown # object" case in scm_lreadr.
-       
+
 2003-06-04  Dirk Herrmann  <D.Herrmann@tu-bs.de>
 
        * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
 
 2003-05-30  Stefan Jahn  <stefan@lkcc.org>
 
-       * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV 
+       * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
        appropriately for mingw32 hosts.
 
        * numbers.h: Defining copysign(), isnan() and finite() to
        * load.c (s_scm_search_path): Fixed absolute and relative
        path detections for native Windows platforms.
 
-       * gc.h, threads.h: Export some more symbols using SCM_API (necessary 
+       * gc.h, threads.h: Export some more symbols using SCM_API (necessary
        to build on mingw32).
 
-       * gc-freelist.c ("s_scm_map_free_list", 
+       * gc-freelist.c ("s_scm_map_free_list",
        "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
 
-       * fports.c (fport_fill_input): Disable use of 
+       * fports.c (fport_fill_input): Disable use of
        fport_wait_for_input() on Win32 platforms.
 
        * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
        branch.  Some have been slightly rewritten.
        (scm_i_object_chars, scm_i_object_length): New, to support
        SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
-       
+
 2003-05-19  Dirk Herrmann  <D.Herrmann@tu-bs.de>
 
        * eval.c (scm_m_do, unmemocopy, SCM_CEVAL):  Reversed order of
        (print_state_mutex): New mutex.
        (scm_make_print_state, scm_free_print_state, scm_prin1):
        Lock/unlock print_state_mutex.
-       
+
        * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
        Use current names in definitions.
 
        scm_port_for_each.
        (scm_port_for_each): Reimplemented using scm_c_port_for_each.
        * ports.h (scm_c_port_for_each): New prototype.
-       
+
 2003-04-28  Mikael Djurfeldt  <djurfeldt@nada.kth.se>
 
        * eval.c (scm_m_atdispatch): Removed until actually needed.  (This
        * goops.c (prep_hashsets): make static to match prototype.
        (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL.  Thanks to Albert
        Chin.
-       
+
        * c-tokenize.lex: remove trailing comma from enum.  Thanks to
        Albert Chin.
 
        builds work.
        (DOT_X_FILES): Removed "iselect.x".
        (DOT_DOC_FILES): Removed "iselect.doc".
-       
+
 2003-03-25  Rob Browning  <rlb@defaultvalue.org>
 
        * win32-socket.h: #include "libguile/__scm.h".  Replace usage of
 
        * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
        slots with instance allocation.
-       
+
        * goops.c, goops.h (scm_class_extended_generic_with_setter): New
        class.
        (scm_compute_applicable_methods): Use scm_generic_function_methods.
        * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
        builds work.
        (EXTRA_DIST): Added version.h.in.
-       
+
 2002-12-21  Mikael Djurfeldt  <djurfeldt@nada.kth.se>
 
        This change makes it possible for one thread to do lazy sweeping
 
        These changes remove scm_ints_disabled (which hasn't has any
        effect in Guile for quite some time).
-       
+
        * async.c, error.h (scm_ints_disabled): Removed.
 
        * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
        threads, though.  Signalling and error handling for threads is
        very likely broken.  Work on making the implementation cleaner and
        more efficient is needed.
-       
+
        * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
        (SCM_NONREC_CRITICAL_SECTION_START,
        SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
 
        * Makefile.am (version.h): Changed $^ --> $< in rule for
        version.h.
-       
+
 2002-12-08  Rob Browning  <rlb@defaultvalue.org>
 
        * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
        implements the rest on top of that.  Guile's implementation is
        what the "coop-pthreads" package has been previously.  Support for
        "coop" threads has been removed until I get time to add it again.
-       
+
        * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
        (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
        null-threads.c, coop-pthreads.c.
        (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h.  Added
        pthread-threads.h.
-       
+
        * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
 
        * threads.h: Do not include "libguile/coop-defs.h".  Include
 
        * pthread-threads.h: New, implement pthread-like API by deferring
        to pthread itself.
-       
+
        * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
        has been lost in the reorganization.
 
        case; Use trampolines.
 
        Other changes:
-       
+
        * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
        (subr2oless): Removed.
        (scm_restricted_vector_sort_x): Use scm_return_first to keep the
        SCM_COPT_THREADS is defined.
        (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
        is defined.
-       
+
        * coop-pthreads.c: Some harmless renamings of internal stuff.
        (create_thread): New, generalized version of
        scm_call_with_new_thread.
        (scm_call_with_new_thread): Use it.
        (scm_spawn_thread): New, use create_thread.
-       
+
 2002-11-02  Marius Vollmer  <mvo@zagadka.ping.de>
 
        * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
        (take_signal): Simplified, to avoid race conditions.
        (scm_sigaction_for_thread): Use new Scheme.  Validate that thread
        hasn't exited yet.
-       
+
        * async.c (scm_async_click): Reset pending_asyncs, handle
        signal_asyncs.  Don't set cdr of a non-signal async to #f.
        (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
        exited.
        (scm_unmask_signals, decrease_block): Call scm_async_click after
        block_asyncs becomes zero.
-       
+
        * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
        active_asyncs.
 
        fields.
        * root.c (root_mark): Mark them.
        (make_root): Initialize them.
-       
+
        * iselect.c, iselect.h: Replaced GUILE_ISELECT with
        USE_COOP_THREADS.
        (scm_internal_select): Define one version for USE_COOP_THREADS and
        one for USE_NULL_THREADS.
        (scm_init_iselect): Likewise.
-       
+
         * inline.h (scm_cell, scm_double_cell): Also allow
        USE_COPT_THREADS to not protect the slot initializers.
-       
+
        * init.c (scm_init_guile_1): Call scm_init_thread_procs.  This is
        because threads need to be initialized before the stack, but
        gsubrs such as scm_timed_condition_variable_wait can only be
        scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
        scm_cond_destory): Do not define, they are now deprecated and
        handled by threads.{h,c}.
-       
+
        * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
        (scm_threads_init): Create smobs here, using the appropriate
        sizes.
        * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
 
        * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
-       
+
 2002-10-21  Marius Vollmer  <mvo@zagadka.ping.de>
 
        * null-threads.c: Include <time.h>.  Also, use <...> for inclusion
        * scmsigs.c (scm_sigaction_for_thread): Store original handler in
        signal_handlers, not the closure that is used as the async.
        The closure is stored in signal_handler_cells, as previously.
-       
+
 2002-10-10  Marius Vollmer  <mvo@zagadka.ping.de>
 
        * root.h (scm_root_state): Added 'block_async' slot.
        (increase_block, decrease_block, scm_call_with_blocked_asyncs,
        scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
        scm_c_call_with_unblocked_asyncs): New.
-       
+
        * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
        Asyncs are enabled by default.
 
        (scm_system_async_mark_for_thread): Initialize cdr of handler cell
        with SCM_BOOL_F.
        * scmsigs.c (scm_sigaction_for_thread): Likewise.
-       
+
 2002-10-04  Rob Browning  <rlb@defaultvalue.org>
 
        * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
        scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
        Removed prototypes.
        (scm_i_queue_async_cell): New.
-       
+
        * __scm.h (scm_asyncs_pending_p): Removed.
        (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
        scm_asyncs_pending_p.
 
 2002-09-19  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-       * inline.h (scm_double_cell): move SET_GCMARK set out of if body. 
+       * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
 
 2002-09-09  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
        * gc-malloc.c (scm_gc_init_malloc): check user settings for
        sanity.
 
-       * gc-freelist.c (scm_init_freelist): check user settings for sanity. 
+       * gc-freelist.c (scm_init_freelist): check user settings for sanity.
 
        * struct.h: change scm_structs_to_free to scm_i_structs_to_free
 
 2002-08-26  Marius Vollmer  <mvo@zagadka.ping.de>
 
        * script.c (scm_compile_shell_switches): Added "2002" to Copyright
-       years.  Thanks to Martin Grabmüller!
+       years.  Thanks to Martin Grabmüller!
 
 2002-08-25  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
 2002-08-23  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
        * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
-       length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.  
+       length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
 
 2002-08-22  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
        function
 
        * ports.h: use scm_i_ prefix for port table and port table size.
-       
+
 2002-08-15  Mikael Djurfeldt  <mdj@linnaeus>
 
        * vports.c (scm_make_soft_port): Initialize pt variable.
        (scm_eval_string): Implement using scm_eval_string_in_module.
        (scm_c_eval_string_in_module): New.
        Thanks to Ralf Mattes for the suggestion!
-       
+
 2002-08-09  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
        * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
        message and abort.
-       
+
        * gc-mark.c ("scm_gc_mark_dependencies"): idem.
 
        * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
 
 2002-08-05  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
-       * tags.h: remove GC bits documentation from the tags table. 
+       * tags.h: remove GC bits documentation from the tags table.
 
        * read.c (INPUT_ERROR): Prepare for file:line:column error
        messages for errors in scm_lreadr() and friends.
 2002-08-04  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
        * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
-       implementation). 
+       implementation).
        (scm_gc_calloc): new function
 
 2002-08-04  Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
        * ports.c (scm_new_port_table_entry): init port entry to 0
        completely.
-       
+
        * ports.c (scm_new_port_table_entry): change function from
        scm_add_to_port_table. This prevents cells with null-pointers from
        being exposed to GC.
 
 2002-07-24  Stefan Jahn  <stefan@lkcc.org>
 
-       * continuations.h: ia64: Include <signal.h> before 
+       * continuations.h: ia64: Include <signal.h> before
        <sys/ucontext.h>.
 
 2002-07-21  Dirk Herrmann  <D.Herrmann@tu-bs.de>
 
        * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
        Document cases where SCM_WRITABLE_VELTS() is used.
-       
+
        * vectors.h (SCM_VELTS): prepare for write barrier, and let
        SCM_VELTS() return a const pointer
        (SCM_VECTOR_SET): add macro.
        * deprecation.c (scm_include_deprecated_features): Simplified.
 
        * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
-       `SCM_IMP´ instead of `!SCM_CELLP´.
+       `SCM_IMP' instead of `!SCM_CELLP´.
 
        * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
        Extract side-effecting operations from macros.
        (scm_stack_ref, scm_frame_previous, scm_frame_next):  Fix
        signedness.
 
-       (scm_last_stack_frame):  Remove bogus `;´.
+       (scm_last_stack_frame):  Remove bogus `;'.
 
        * stacks.h (SCM_FRAMEP):  Fix type check.
 
 
        * struct.h (SCM_STRUCT_VTABLE_FLAGS):  New macro.
 
-       * goops.h (SCM_NUMBER_OF_SLOTS):  Removed bogus `\´ at the end of
+       * goops.h (SCM_NUMBER_OF_SLOTS):  Removed bogus `\' at the end of
        the macro definition.
 
        (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
 2001-06-09  Marius Vollmer  <mvo@zagadka.ping.de>
 
        * ports.c (scm_lfwrite): Maintain columnd and row count in port.
-       Thanks to Matthias Köppe!
+       Thanks to Matthias Köppe!
 
 2001-06-08  Michael Livshin  <mlivshin@bigfoot.com>
 
        space-happy C preprocessors.
 
        * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
-       inside cookies.  thanks to Matthias Köppe!
+       inside cookies.  thanks to Matthias Köppe!
 
 2001-06-08  Dirk Herrmann  <D.Herrmann@tu-bs.de>
 
 
        * objects.h (SCM_SET_CLASS_INSTANCE_SIZE):  Fixed typing.
 
-       * ramap.c (ramap_rp):  Removed bogus `;´.
+       * ramap.c (ramap_rp):  Removed bogus `;'.
 
        * sort.c (scm_restricted_vector_sort_x):  Fixed signedness
        problem.
        SCM_VARIABLE_INIT since that it what it used to be.
 
        * deprecation.c (scm_include_deprecated_features): Make docstring
-       ANSIsh.  Thanks to Matthias Köppe!
+       ANSIsh.  Thanks to Matthias Köppe!
 
 2001-05-21  Marius Vollmer  <mvo@zagadka.ping.de>
 
 2001-05-15  Marius Vollmer  <mvo@zagadka.ping.de>
 
        * values.c (print_values): Print as a unreadable object, not as
-       multiple lines.  Thanks to Matthias Köppe!
+       multiple lines.  Thanks to Matthias Köppe!
 
 2001-05-14  Dirk Herrmann  <D.Herrmann@tu-bs.de>
 
 
 2001-05-09  Michael Livshin  <mlivshin@bigfoot.com>
 
-       from Matthias Köppe (thanks!):
+       from Matthias Köppe (thanks!):
 
        * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
        portable.
 
 2001-01-11  Michael Livshin  <mlivshin@bigfoot.com>
 
-       from Matthias Köppe:
+       from Matthias Köppe:
 
        * objects.h (SCM_SET_ENTITY_SETTER): new macro.  SCM_ENTITY_SETTER
        casts its result, so doesn't yield an lvalue per ANSI C.
        (write_all): new helper procedure.
 
 The ChangeLog continues in the file: "ChangeLog-2000"
+
+;; Local Variables:
+;; coding: utf-8
+;; End: