Changes from arch/CVS synchronization
[bpt/guile.git] / libguile / ChangeLog
index 62e0fb9..29124f9 100644 (file)
@@ -1,3 +1,671 @@
+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-25  Han-Wen Nienhuys  <hanwen@lilypond.org>
+
+       * vector.c: remove comment as per kryde's request.
+
+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.
 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.
+       instead of toggling it.  Reported by Ludovic Courtès.
        
 2006-03-26  Marius Vollmer  <mvo@zagadka.de>
 
        * 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>
+2006-03-21  Ludovic Courtès  <ludovic.courtes@laas.fr>
 
         * numbers.c (scm_i_mem2number): Renamed to
        scm_c_locale_stringn_to_number.
         (scm_i_sweep_statistics_init): New macro.
         (scm_i_sweep_statistics_sum): New macro
 
-2006-02-14  Ludovic Courtès  <ludovic.courtes@laas.fr>
+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,
        * 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>
+2005-12-19  Ludovic Courtès  <ludovic.courtes@laas.fr>
 
         * strings.c (scm_i_take_stringbufn): New.
         (scm_i_c_take_symbol): New.
 
 2005-12-29  Neil Jerram  <neil@ossau.uklinux.net>
 
-       * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
+       * 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>
 
        * 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!
+       (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
        * 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>
+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.
        (write_all): new helper procedure.
 
 The ChangeLog continues in the file: "ChangeLog-2000"
+
+;; Local Variables:
+;; coding: utf-8
+;; End: