* configure.in: New check for uca lib (needed for IA64 on HP-UX).
[bpt/guile.git] / libguile / ChangeLog
index b116802..6d3a2db 100644 (file)
@@ -1,5 +1,622 @@
+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<E8>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.
        (signal_delivery_thread): Use it instead of
        scm_leave_guile/read/scm_enter_guile.
 
-2005-12-06  Ludovic Courtès  <ludovic.courtes@laas.fr>
+       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
 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.
+       by Ludovic Courtès.
 
        * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
        "register".
        * 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>
+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.
        `PSTATE_STACK_SET ()' in order to avoid undesired potential side
        effects.
 
-2005-11-12  Ludovic Courtès  <ludovic.courtes@laas.fr>
+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.
+       by Ludovic Courtès.
 
 2005-11-07  Marius Vollmer  <mvo@zagadka.de>
 
 
        * debug.h (SCM_CHEAPTRAPS_P): Removed.
 
-2005-10-27  Ludovic Courtès  <ludovic.courtes@laas.fr>
+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.
 
 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.
 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>
 
 
 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
        * 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.
        
 
        * 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>
 
        * 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>
 
 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.
 
        
        * 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>
 
 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>
 
        * 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.
 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>
 
        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.