Fix compilation of `numbers.c' with Sun CC.
[bpt/guile.git] / libguile / ChangeLog
index 4fe7b08..7bcb196 100644 (file)
@@ -1,3 +1,572 @@
+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_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 Gyula Szavai).  This allows the use of
+       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
-       Gyula Szavai).
+       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
        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>
+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