+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.
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