+2008-08-25 Ludovic Courtès <ludo@gnu.org>
+
+ * Makefile.am (AM_CFLAGS): New.
+ (guile_CFLAGS, libguile_la_CFLAGS): Use it.
+
+2008-08-20 Ludovic Courtès <ludo@gnu.org>
+
+ * eval.c, filesys.c, gc.c, numbers.c, stime.c, threads.c: Don't
+ define `_GNU_SOURCE' explicitly as it's now defined in
+ <config.h> thanks to `AC_USE_SYSTEM_EXTENSIONS'.
+
+2008-08-19 Han-Wen Nienhuys <hanwen@lilypond.org>
+ Ludovic Courtès <ludo@gnu.org>
+
+ * goops.c (scm_init_goops_builtins, go_to_hell): Fix allocation
+ of `hell' by passing "hell_size * sizeof (*hell)" instead of
+ "hell_size" to `scm_malloc ()' and `scm_realloc ()'.
+
+2008-08-02 Neil Jerram <neil@ossau.uklinux.net>
+
+ * numbers.c (scm_rationalize): Update docstring to match the
+ manual (which is more correct). Change argument "err" to "eps",
+ also to match the manual.
+
+2008-07-17 Neil Jerram <neil@ossau.uklinux.net>
+
+ From Thiemo Seufer <ths@networkno.de>:
+
+ * gc_os_dep.c (CPP_WORDSZ, ALIGN_DOUBLE, DATAEND,
+ DYNAMIC_LOADING): Added #defines.
+ (_fdata, _end): Added declarations.
+ (DATASTART): Use _fdata instead of __data_start.
+ (STACKBOTTOM): Changed from 0x80000000 to 0x7fff8000.
+
+2008-07-16 Ludovic Courtès <ludo@gnu.org>
+
+ * gen-scmconfig.h.in (SCM_I_GSC_HAVE_STRUCT_DIRENT64): New.
+ * gen-scmconfig.c (main): Produce definitions of
+ `SCM_HAVE_STRUCT_DIRENT64' and `SCM_HAVE_READDIR64_R'.
+ * _scm.h (dirent_or_dirent64): Depend on
+ `SCM_HAVE_STRUCT_DIRENT64', for the sake of HP-UX 11.11.
+ (readdir_r_or_readdir64_r): Depend on `SCM_HAVE_READDIR64_R',
+ for HP-UX 11.11.
+
+2008-07-05 Ludovic Courtès <ludo@gnu.org>
+
+ * strings.c (scm_c_symbol_length): New function.
+ * strings.h (scm_c_symbol_length): New declaration.
+
+2008-07-04 Ludovic Courtès <ludo@gnu.org>
+
+ * posix.h (scm_i_locale_mutex): Don't declare as `SCM_INTERNAL'
+ since it's needed by `libguile-i18n'. Reported by Patrick
+ Horgan <phorgan1@gmail.com>.
+
+ * __scm.h (SCM_INTERNAL): Add `extern' so that these symbols are
+ not considered as "common" by GCC 4.3. Reported by Patrick
+ Horgan <phorgan1@gmail.com>.
+
+2008-06-28 Ludovic Courtès <ludo@gnu.org>
+
+ * Makefile.am (INCLUDES): Renamed to...
+ (AM_CPPFLAGS): this, to match current Automake conventions.
+ Users updated.
+
+ * tags.h (SCM_UNPACK): Disable type-checking for `__DECC' and
+ `__HP_cc'. Reported by Peter O'Gorman <pogma@thewrittenword.com>.
+
+2008-06-02 Ludovic Courtès <ludo@gnu.org>
+
+ * deprecated.c (maybe_close_port): Rename EXCEPT to EXCEPT_SET
+ to workaround `#define except' on Tru64. Reported by Peter
+ O'Gorman <pogma@thewrittenword.com>.
+
+2008-05-31 Ludovic Courtès <ludo@gnu.org>
+
+ * __scm.h (SCM_INTERNAL): New macro.
+ * *.h: Use it to mark as internal `scm_i_' and `scm_init_'
+ functions that are not used by public macros or inline
+ functions.
+
+2008-05-14 Julian Graham <joolean@gmail.com>
+
+ * threads.c (fat_mutex)[recursive]: New field.
+ (make_fat_mutex): Adjust initialization to reflect changes to
+ mutex lock level semantics.
+ (fat_mutex_lock, fat_mutex_unlock): Add support for unowned
+ mutexes and locking mutexes on behalf of other threads.
+ (scm_lock_mutex, scm_lock_mutex_timed): Update to reflect
+ signature change to fat_mutex_lock.
+ (scm_mutex_owner, scm_mutex_level, scm_mutex_locked_p): New /
+ re-enabled functions.
+ * threads.h (scm_mutex_owner, scm_mutex_level,
+ scm_mutex_locked_p): Prototypes for new functions.
+
+2008-05-12 Neil Jerram <neil@ossau.uklinux.net>
+
+ * discouraged.c: Expand DEFFROM and DEFTO macros, to avoid
+ compiler warnings about excess semicolons. (Reported by Didier
+ Godefroy.)
+
+2008-05-08 Neil Jerram <neil@ossau.uklinux.net>
+
+ * throw.c (scm_ithrow): For IA64 add a return statement, to
+ appease GCC.
+
+ * threads.h (scm_i_thread): New IA64 fields:
+ register_backing_store_base and pending_rbs_continuation.
+
+ * threads.c (guilify_self_1): For IA64: cap RBS base address at
+ the current value of scm_ia64_ar_bsp, and store the capped value
+ in thread state.
+ (SCM_MARK_BACKING_STORE): Use thread->register_backing_store_base
+ instead of scm_ia64_register_backing_store_base().
+ (scm_threads_mark_stacks): Add "&" in "&t->regs", so that the code
+ works both for jmp_buf defined as an array, and jmp_buf defined as
+ a struct.
+
+ * continuations.h (scm_t_contregs): Remove `fresh' and `ctx'
+ fields; these are now inside the IA64 definition of `jmp_buf'.
+
+ * continuations.c (scm_make_continuation): Simplify, by moving
+ some of the IA64 code inside the definition of "setjmp", and by
+ some obvious commonizations. For IA64 register backing store
+ (RBS) stack base, use thread->register_backing_store_base instead
+ of scm_ia64_register_backing_store_base().
+ (copy_stack): For IA64, store pointer to continuation being
+ invoked in thread state, so we can restore the continuation's RBS
+ stack just before the next setcontext call.
+ (copy_stack_and_call): Don't restore RBS stack explicitly here.
+ It will be restored, if appropriate, inside the longjmp call.
+ (scm_ia64_longjmp): New function.
+
+ * __scm.h (setjmp, longjmp, jmp_buf): For IA64, implement using
+ getcontext and setcontext.
+
+2008-05-07 Ludovic Courtès <ludo@gnu.org>
+
+ * numbers.c (scm_from_complex_double): Mark as `SCM_UNUSED'.
+ This fixes compilation with `-Werror' on FreeBSD 6.2 (i386).
+
+2008-05-05 Neil Jerram <neil@ossau.uklinux.net>
+
+ * c-tokenize.lex: #define YY_NO_INPUT.
+
+2008-04-26 Ludovic Courtès <ludo@gnu.org>
+
+ * read.c (scm_read_sexp): Remove extraneous semi-colon at
+ end-of-line, which broke compilation with GCC 2.7. Reported by
+ Alain Guibert <alguibert+bts@free.fr>.
+
+2008-04-24 Ludovic Courtès <ludo@gnu.org>
+
+ * Makefile.am (DEFAULT_INCLUDES): New. Fixes compilation on
+ Tru64 where our "random.h" would shadown libc's one.
+ (INCLUDES): Add "-I$(top_buildir)", which is normally in
+ `DEFAULT_INCLUDES'.
+ * gen-scmconfig.c: Include <libguile/gen-scmconfig.h>, not
+ "gen-scmconfig.h" since that file is under `$(builddir)'.
+
+2008-04-16 Ludovic Courtès <ludo@gnu.org>
+
+ * ports.c (scm_getc, scm_putc, scm_puts): Moved...
+ * inline.h: ... here. Noticeably improves `read' performance.
+
+2008-04-15 Ludovic Courtès <ludo@gnu.org>
+ Julian Graham <joolean@gmail.com>
+
+ * read.c (scm_keyword_postfix): New.
+ (scm_read_opts): Update docstring for `keywords'.
+ (scm_read_mixed_case_symbol): Add support for postfix keywords.
+
+2008-04-13 Ludovic Courtès <ludo@gnu.org>
+
+ * inline.h (SCM_C_USE_EXTERN_INLINE): New macro. Use it to make
+ sure "extern" declarations are produced when "extern inline" is
+ used. Simplify macrology around inline definitions.
+
+2008-04-10 Ludovic Courtès <ludo@gnu.org>
+
+ * inline.h (SCM_C_EXTERN_INLINE): Special-case Apple's GCC
+ 4.0-based compiler, which doesn't support GNU inline semantics
+ at all in C99 mode but doesn't define `__GNUC_STDC_INLINE__'.
+ See http://thread.gmane.org/gmane.network.gnutls.general/1135 .
+
+2008-04-10 Andy Wingo <wingo@pobox.com>
+
+ * struct.c (scm_struct_ref, scm_struct_set_x): "Light" structs
+ have no hidden words (members of the SCM_STRUCT_DATA(x) array
+ accessed with negative indices). In that case, determine the
+ number of fields from the length of the struct layout
+ descriptor. (Most GOOPS instances are light structs.)
+
+ * goops.c (wrap_init): Initialize 'u' slots to 0, not some random
+ SCM value.
+
+ * goops.c (get_slot_value, set_slot_value): In the struct
+ allocation case, don't poke the slots array directly -- we should
+ go through struct-ref/struct-set! code so that we get the
+ permissions and allocation ('u' versus 'p') correct.
+
+2008-04-03 Ludovic Courtès <ludo@gnu.org>
+
+ * inline.h (SCM_C_EXTERN_INLINE): New macro, addresses the
+ "extern inline" semantic change in C99 mode with GCC 4.3 and
+ later and the warning in C99 mode with GCC 4.2. Use it in the
+ inline function definitions.
+
+2008-03-24 Neil Jerram <neil@ossau.uklinux.net>
+
+ Applying patch from Julian Graham, containing minor fixes to his
+ thread enhancements:
+
+ * threads.c (to_timespec): Change 1000000 multiplier to
+ 1000000000.
+ (unchecked_unlock_sym, allow_external_unlock_sym,
+ recursive_sym): Use SCM_SYMBOL.
+ (scm_make_mutex_with_flags): When raising unsupported option
+ error, report what the unsupported option was.
+ (fat_mutex_unlock): When raising errors, unlock m->lock first.
+ (fat_cond_timedwait): Removed.
+ (scm_timed_wait_condition_variable): Call fat_mutex_unlock
+ directly instead of via fat_cond_timedwait.
+
+2008-03-10 Ludovic Courtès <ludo@gnu.org>
+
+ * eval.c, filesys.c: Enclose `alloca' blob in `#ifndef alloca',
+ as per Gnulib's `alloca'. This should fix compilation on
+ FreeBSD 6.
+
+2008-03-09 Neil Jerram <neil@ossau.uklinux.net>
+
+ * numbers.c: Only define scm_from_complex_double if it will
+ actually be used.
+
+2008-03-08 Julian Graham <joolean@gmail.com>
+
+ * threads.c (scm_join_thread_timed, scm_thread_p,
+ scm_make_mutex_with_flags, scm_lock_mutex_timed,
+ scm_unlock_mutex_timed, scm_mutex_p, scm_condition_variable_p): New
+ functions.
+ (thread_mark): Updated to mark new struct field `mutexes'.
+ (do_thread_exit): Notify threads waiting on mutexes locked by exiting
+ thread.
+ (scm_join_thread, scm_make_mutex, scm_make_recursive_mutex,
+ scm_mutex_lock): Reimplement in terms of their newer
+ counterparts.
+ (scm_abandoned_mutex_error_key): New symbol.
+ (fat_mutex)[unchecked_unlock, allow_external_unlock]: New fields.
+ (fat_mutex_lock): Reimplement to support timeouts and abandonment.
+ (fat_mutex_trylock, scm_try_mutex): Remove fat_mutex_trylock and
+ reimplement scm_try_mutex as a lock attempt with a timeout of zero.
+ (fat_mutex_unlock): Allow unlocking from other threads and unchecked
+ unlocking; implement in terms of condition variable wait.
+ (scm_timed_wait_condition_variable): Reimplement in terms of
+ fat_mutex_unlock.
+ * threads.h (scm_i_thread)[mutexes]: New field.
+ (scm_join_thread_timed, scm_thread_p, scm_lock_mutex_timed,
+ scm_unlock_mutex_timed, scm_mutex_p, scm_condition_variable_p):
+ Prototypes for new functions.
+
+2008-03-06 Ludovic Courtès <ludo@gnu.org>
+
+ * eval.c (scm_eval): If MODULE_OR_STATE is not a dynamic state,
+ make sure it's a module. Reported by David I. Lehn.
+
+2008-03-02 Ludovic Courtès <ludo@gnu.org>
+
+ * pairs.h (scm_is_pair): Moved declaration to `inline.h'.
+ * inline.h: Make sure `extern' declarations are not produced
+ when `inline' is supported but GCC is not used. This
+ fixes "mixed linkage" errors with compilers such as
+ DEC/Compaq/HP CC.
+
+2008-02-27 Neil Jerram <neil@ossau.uklinux.net>
+
+ * _scm.h (errno): Remove declarations that have been there
+ forever, and are known to conflict on some platforms with that
+ provided by <errno.h>, which we include unconditionally. If
+ <errno.h> doesn't provide a errno declaration, what is the point
+ of it?
+
+2008-02-23 Ludovic Courtès <ludo@gnu.org>
+
+ * numbers.c (scm_make_rectangular): Rename argument to
+ `real_part' and `imaginary_part' to work around Solaris 2.10
+ headers which define `imaginary' as a macro. Patch by Tim
+ Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>.
+
+2008-02-22 Ludovic Courtès <ludo@gnu.org>
+
+ * read.c (strncasecmp): Add declaration when
+ `HAVE_DECL_STRNCASECMP' is undefined. Fixes compilation on
+ NetBSD 1.6.
+
+ * gc.c (scm_ia64_ar_bsp)[linux]: Don't discard `const' qualifier
+ of OPAQUE.
+
+2008-02-21 Ludovic Courtès <ludo@gnu.org>
+
+ Fix bug #22369.
+
+ * goops.c (scm_add_slot): Add `SCM_UNDEFINED' as last argument
+ to `scm_list_n ()'. Thanks to René Köcher
+ <shirk87@googlemail.com>.
+
+2008-02-17 Ludovic Courtès <ludo@gnu.org>
+
+ * script.c (scm_compile_shell_switches): Update copyright year.
+
+2008-02-16 Ludovic Courtès <ludo@gnu.org>
+
+ * gc_os_dep.c: Add NetBSD/alpha support. Patch by Greg Troxel
+ <gdt@ir.bbn.com>.
+
+2008-02-12 Ludovic Courtès <ludo@gnu.org>
+
+ * guile-snarf.in (tempdir): Honor `$TMPDIR'.
+
+2008-02-11 Neil Jerram <neil@ossau.uklinux.net>
+
+ * numbers.c (SCM_COMPLEX_VALUE): Use GUILE_I instead of _Complex_I
+ directly, and only if GUILE_I was defined by the configure step.
+ (scm_log, scm_log10, scm_exp, scm_sqrt): Use SCM_COMPLEX_VALUE
+ code only if SCM_COMPLEX_VALUE is defined.
+
+2008-02-07 Ludovic Courtès <ludo@gnu.org>
+
+ Fix bug #21378.
+ Thanks to David Diffenbaugh <davediff@nbcs.rutgers.edu>.
+
+ * read.c (scm_read_quote): Don't use `__FUNCTION__' since it is
+ not supported by Sun CC on Solaris 9.
+ (scm_read_keyword): Likewise.
+ * strings.c (scm_take_locale_stringn): Remove
+ `SCM_C_INLINE_KEYWORD' to allow compilation with Sun CC.
+
+2008-02-07 Julian Graham <joolean@gmail.com>
+
+ * threads.c (do_thread_exit, scm_cancel_thread,
+ scm_set_thread_cleanup_x, scm_thread_cleanup): Lock on thread-specific
+ admin mutex instead of `thread_admin_mutex'.
+ * threads.h (scm_i_thread)[admin_mutex]: New field.
+ * throw.c (make_jmpbuf): Don't enter critical section during thread
+ spawn -- there is a possibility of deadlock if other threads are
+ exiting.
+
+2008-02-06 Neil Jerram <neil@ossau.uklinux.net>
+
+ * gc-malloc.c (scm_gc_malloc): Return NULL if requested size is 0.
+ (scm_gc_free): Don't call `free' if mem is NULL.
+
+2008-02-06 Ludovic Courtès <ludo@gnu.org>
+
+ * numbers.c (scm_i_mkbig, scm_i_long2big, scm_i_ulong2big,
+ scm_i_clonebig, scm_i_bigcmp, scm_i_dbl2big, scm_i_dbl2num,
+ scm_i_normbig): Remove `SCM_C_INLINE_KEYWORD' since these are
+ declared as `extern' in `numbers.h'. This precluded compilation
+ on Solaris 9 with Sun CC (reported by David Halik
+ <dhalik@nbcs.rutgers.edu>).
+
+2008-02-05 Neil Jerram <neil@ossau.uklinux.net>
+
+ * fports.c (fport_seek): Make dependent on GUILE_USE_64_CALLS.
+
+ * _scm.h: Make definition of CHOOSE_LARGEFILE depend on
+ GUILE_USE_64_CALLS.
+
+2008-02-01 Neil Jerram <neil@ossau.uklinux.net>
+
+ * modules.c (the_root_module): Moved before scm_current_module.
+ (scm_current_module): Return the root module if `the-module' fluid
+ gives #f.
+
+2008-01-22 Neil Jerram <neil@ossau.uklinux.net>
+
+ * COPYING: Removed.
+
+ * __scm.h, _scm.h, weaks.c: Update copyright statement to LGPL.
+
+2008-01-18 Neil Jerram <neil@ossau.uklinux.net>
+
+ * hashtab.c (scm_hash_fn_create_handle_x): If supplied assoc_fn
+ returns neither a pair nor #f, signal a wrong-type-arg error.
+ (Thanks to Gregory Marton for reporting this.)
+
+2007-12-29 Neil Jerram <neil@ossau.uklinux.net>
+
+ * gc.c (mark_gc_async): Change "func_data" to "fn_data", to avoid
+ clash with AIX header file.
+ * hooks.c (scm_c_hook_add, scm_c_hook_remove): Same again.
+ * hooks.h (scm_t_c_hook_function, scm_c_hook_add,
+ scm_c_hook_remove): Same again.
+
+2007-12-08 Ludovic Courtès <ludo@gnu.org>
+
+ * __scm.h (SCM_EXPECT, SCM_LIKELY, SCM_UNLIKELY): New macros.
+ (SCM_ASSERT, SCM_ASSERT_TYPE, SCM_ASRTGO, SCM_GASSERT0,
+ SCM_GASSERT1, SCM_GASSERT2, SCM_GASSERTn): Use them.
+ * eval.c (ASSERT_SYNTAX, ASSERT_SYNTAX_2): Likewise.
+ * eval.i.c (CEVAL): Use branch prediction hints for syntax
+ errors, wrong number of arguments and similar.
+ * numbers.c (scm_sum): Use `SCM_LIKELY' for the sum of two
+ immediate numbers.
+ (scm_difference, scm_product, scm_i_divide): Likewise.
+ * validate.h (SCM_ASSERT_RANGE): Use `SCM_UNLIKELY'.
+
+2007-12-04 Ludovic Courtès <ludo@gnu.org>
+
+ * ports.c (scm_c_read): Validate PORT as an open input port.
+ (scm_c_write): Validate PORT as an open output port.
+
+ * socket.c (scm_accept): Leave guile mode using
+ `scm_std_select ()' before calling `accept(2)'. Reported by
+ dskr <dskr@mac.com>.
+
+2007-10-27 Ludovic Courtès <ludo@gnu.org>
+
+ * fports.c (scm_i_evict_port): Expect a port, rather than a pair
+ containing the port. Fixes a bug in the new port table (2007-08-26).
+ (scm_evict_ports): Use `scm_c_port_for_each ()'.
+
+2007-10-21 Neil Jerram <neil@ossau.uklinux.net>
+
+ * eval.c (unmemoize_delay): Extend the environment before
+ unmemoizing the promise thunk. This fixes a segmentation fault
+ reported by Frank Schwidom.
+
+2007-10-20 Julian Graham <joolean@gmail.com>
+
+ Add support for thread cancellation and user-defined thread
+ cleanup handlers. Small rework by Ludovic Courtès.
+
+ * null-threads.h (scm_i_pthread_cancel,
+ scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
+ * pthread-threads.h (scm_i_pthread_cancel,
+ scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
+ * scmsigs.c (scm_i_signal_delivery_thread,
+ signal_delivery_thread_mutex): New.
+ (signal_delivery_thread): Leave when `read_without_guile ()'
+ returns zero.
+ (start_signal_delivery_thread): Acquire SIGNAL_DELIVERY_THREAD
+ before spawning the thread. Initialize
+ SCM_I_SIGNAL_DELIVERY_THREAD.
+ (ensure_signal_delivery_thread): Renamed to...
+ (scm_i_ensure_signal_delivery_thread): this.
+ (scm_i_close_signal_pipe): New.
+ * scmsigs.h: Updated.
+ * threads.c (thread_mark): Mark `t->cleanup_handler'.
+ (guilify_self_1): Initialize `t->cleanup_handler' and
+ `t->canceled'.
+ (do_thread_exit): Invoke `t->cleanup_handler'.
+ (on_thread_exit): Call `scm_i_ensure_signal_delivery_thread ()'.
+ Call `scm_i_close_signal_pipe ()' when the next-to-last thread
+ vanishes.
+ (scm_leave_guile_cleanup): New.
+ (scm_i_with_guile_and_parent): Use `scm_i_pthread_cleanup_push ()'
+ and `scm_leave_guile_cleanup ()' to leave guile mode, rather
+ than call `scm_leave_guile ()' after FUNC.
+ (scm_cancel_thread, scm_set_thread_cleanup_x,
+ scm_threads_cleanup): New.
+ (scm_all_threads): Remove SCM_I_SIGNAL_DELIVERY_THREAD from the
+ returned list.
+ * threads.h (scm_i_thread)[cleanup_handler, canceled]: New
+ fields.
+ Add declarations of new functions.
+
+2007-10-17 Ludovic Courtès <ludo@gnu.org>
+
+ * read.c (CHAR_IS_BLANK_): Add `\r' (ASCII 0x0d). This fixes a
+ regression compared to 1.8.2. Reported by Puneet
+ <schemer@gmail.com>.
+
+2007-10-10 Ludovic Courtès <ludo@gnu.org>
+
+ * pthread-threads.h (SCM_I_PTHREAD_MUTEX_INITIALIZER): Check
+ `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
+ * gen-scmconfig.h.in
+ (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER): New.
+ * gen-scmconfig.c (main): Define
+ `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
+
+2007-10-04 Ludovic Courtès <ludo@gnu.org>
+
+ * i18n.c (scm_make_locale)[!USE_GNU_LOCALE_API]: Don't call
+ `leave_locale_section ()' on failure of
+ `enter_locale_section ()' since the mutex is not held and locale
+ settings are unchanged.
+ (scm_nl_langinfo)[!USE_GNU_LOCALE_API]: Use
+ `restore_locale_settings ()' instead of `leave_locale_section ()'
+ since the mutex is not held.
+
+2007-10-02 Ludovic Courtès <ludo@gnu.org>
+
+ * threads.c (on_thread_exit): Don't call `scm_leave_guile ()'
+ since we're already in non-guile mode. Reported by Greg Toxel
+ for NetBSD.
+
+2007-10-01 Ludovic Courtès <ludo@gnu.org>
+
+ * ports.c (flush_output_port): Expect directly a port instead of
+ a pair. Fixes a bug in the new port table (2007-08-26).
+
+2007-09-11 Kevin Ryde <user42@zip.com.au>
+
+ * posix.c (scm_putenv): Confine the putenv("NAME=") bit to mingw, use
+ putenv("NAME") as the fallback everywhere else. In particular this is
+ needed for solaris 9. Reported by Frank Storbeck.
+
+2007-09-03 Ludovic Courtès <ludo@gnu.org>
+
+ * read.c (flush_ws): Handle SCSH block comments.
+
+2007-09-03 Ludovic Courtès <ludo@gnu.org>
+
+ Fix alignment issues which showed up at least on SPARC.
+
+ * socket.c (scm_t_max_sockaddr, scm_t_getsockopt_result): New.
+ (scm_inet_pton): Change DST to `scm_t_uint32' for correct
+ alignment.
+ (scm_getsockopt): Change OPTVAL to `scm_t_getsockopt_result' for
+ correct alignment.
+ (_scm_from_sockaddr): Change ADDRESS to `scm_t_max_sockaddr *'.
+ (scm_from_sockaddr): Cast ADDRESS to `scm_t_max_sockaddr *'.
+ (MAX_SIZE_UN, MAX_SIZE_IN6): Removed.
+ (scm_accept, scm_getsockname, scm_getpeername, scm_recvfrom):
+ Use `scm_t_max_sockaddr' instead of "char max_addr[MAX_ADDR_SIZE]".
+
+2007-09-03 Kevin Ryde <user42@zip.com.au>
+
+ * numbers.c (scm_log): Test HAVE_CLOG as well as HAVE_COMPLEX_DOUBLE
+ before using clog(). It's possible for gcc to provide the "complex
+ double" type, but for the system not to have the complex funcs.
+ (scm_exp): Ditto HAVE_CEXP for cexp().
+ (clog, cexp, carg): Remove fallback definitions. These only
+ duplicated the code within scm_log and scm_exp, and the latter have to
+ exist for the case when there's no "complex double". So better just
+ fix up the conditionals selecting between the complex funcs and plain
+ doubles than worry about fallbacks.
+
+2007-09-02 Ludovic Courtès <ludo@gnu.org>
+
+ * socket.c (scm_make_socket_address): Free C_ADDRESS after use.
+ This fixes a memory leak.
+
+2007-08-26 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * fports.c gc-card.c gc.c gc.h ioext.c ports.c ports.h weaks.h
+ gc.c: replace port table with weak hash table. This simplifies
+ memory management, and fixes freed cells appearing in
+ port-for-each output.
+
+ * init.c (cleanup_for_exit): abort cleanup if init_mutex is still
+ held.
+
+2007-08-23 Ludovic Courtès <ludo@gnu.org>
+
+ * read.c (scm_read_quote): Record position and copy source
+ expression when asked to. Reported by Kevin.
+
+ * stime.c: Define `_REENTRANT' only if not already defined.
+
+2007-08-21 Kevin Ryde <user42@zip.com.au>
+
+ * gc-card.c (scm_i_card_statistics): Record scm_tc7_number types as
+ tc16 values so big, real, complex and fraction can be distinguished.
+
+ (scm_i_tag_name): Return "number" for scm_tc7_number, not NULL. NULL
+ was making numbers come out as "type 23" in gc-live-object-stats.
+ Fix tests of the tc16 number types, they were checked under
+ scm_tc7_number, but the values went down the tag>=255 smob case.
+ Put smob case under scm_tc7_smob instead of using tag>=255, per
+ recommendation in comments with scm_tc7_smob to use symbolic values.
+ Use SCM_TC2SMOBNUM to extract scm_smobs index, instead of explicit
+ code. Lose some unnecessary "break" statements.
+
+ (scm_i_card_statistics): Use scm_hashq_create_handle_x and modify the
+ element returned, rather than two lookups scm_hashq_ref and
+ scm_hashq_set_x.
+
+2007-08-17 Kevin Ryde <user42@zip.com.au>
+
+ * stime.c: Add #define _REENTRANT, to get gmtime_r() prototype on
+ solaris 2.6. Reported by anirkko.
+
+2007-07-29 Ludovic Courtès <ludo@gnu.org>
+
+ * Makefile.am (INCLUDES): Added Gnulib includes.
+ (gnulib_library): New.
+ (libguile_i18n_v_@LIBGUILE_I18N_MAJOR@_la_LIBADD): Added
+ `$(gnulib_library)'.
+ (libguile_la_LIBADD): Likewise.
+
+ * posix.c: Don't define `_GNU_SOURCE' since `gl_EARLY' arranges
+ to define it when available.
+ * srfi-14.c: Likewise.
+ * i18n.c: Likewise. Include Gnulib's <alloca.h>
+ * eval.c: Include Gnulib's <alloca.h>.
+ * filesys.c: Likewise.
+ * read.c: Don't include <strings.h> and don't provide an
+ `strncasecmp ()' replacement; use Gnulib's <string.h> and
+ `strncasecmp ()' instead.
+
+2007-07-25 Ludovic Courtès <ludo@gnu.org>
+
+ * eval.c (macroexp): When `scm_ilength (res) <= 0', return
+ immediately. This used to produce a circular memoized
+ expression, e.g., for `(set (quote x) #t)'.
+
+2007-07-22 Ludovic Courtès <ludo@gnu.org>
+
+ Overhauled the reader, making it faster.
+
+ * gdbint.c (tok_buf, tok_buf_mark_p): Removed.
+ (gdb_read): Don't use a token buffer. Use `scm_read ()' instead
+ of `scm_lreadr ()'.
+
+ * read.c: Overhauled. No longer use a token buffer. Use a
+ on-stack C buffer in the common case and use Scheme strings when
+ larger buffers are needed.
+ * read.h (scm_grow_tok_buf, scm_flush_ws, scm_casei_streq,
+ scm_lreadr, scm_lreadrecparen): Removed.
+ (scm_i_input_error): Marked as `SCM_NORETURN'.
+
+2007-07-15 Ludovic Courtès <ludo@gnu.org>
+
+ * script.c (scm_compile_shell_switches): Updated copyright year.
+
+2007-07-11 Ludovic Courtès <ludo@gnu.org>
+
+ * goops.c (scm_sys_method_more_specific_p): Added docstring.
+ Make sure LEN is greater than or equal to the minimum length of
+ specializers of M1 and M2. This fixes a segfault later on in
+ `more_specificp ()' if TARGS is too small. Reported by Marco
+ Maggi <marco.maggi-ipsu@poste.it>.
+
+2007-06-26 Ludovic Courtès <ludo@gnu.org>
+
+ * fluids.c (next_fluid_num): When growing ALLOCATED_FLUIDS, make
+ sure to free the previous array after the new one has been
+ installed. This leak is made visible by running
+ "(define l (map (lambda (i) (make-fluid)) (iota 255)))"
+ from the REPL within Valgrind.
+
+2007-06-12 Ludovic Courtès <ludo@chbouib.org>
+
+ * socket.c (scm_inet_ntop): In the `AF_INET' case, declare `addr4'
+ as an `scm_t_uint32' rather than re-using `addr6'. This fixes a
+ bus error on SPARC (and possibly others) due to unaligned access.
+
+2007-06-07 Ludovic Courtès <ludovic.courtes@laas.fr>
+
+ * posix.c (scm_ttyname): Check whether RESULT is NULL before
+ making a string from it (reported by Dan McMahill). Don't call
+ `scm_from_locale_string ()' before the mutex is released.
+
+2007-05-26 Ludovic Courtès <ludo@chbouib.org>
+
+ * eval.c (scm_m_define): Updated comment. Changed order for value
+ evaluation and `scm_sym2var ()' call, which is perfectly valid per
+ R5RS. This reverts the change dated 2004-04-22 by Dirk Herrmann.
+
+2007-05-05 Ludovic Courtès <ludo@chbouib.org>
+
+ Implemented lazy duplicate binding handling.
+
+ * modules.c (scm_export): Renamed to...
+ (scm_module_export): This. Now public.
+ (module_variable): Removed.
+ (default_duplicate_binding_procedures_var): New variable.
+ (default_duplicate_binding_handlers, resolve_duplicate_binding,
+ module_imported_variable, scm_module_local_variable,
+ scm_module_variable): New functions.
+ (scm_module_import_interface): Rewritten.
+ (scm_module_reverse_lookup): Exported as a Scheme function.
+ * modules.h (scm_module_index_duplicate_handlers,
+ scm_module_index_import_obarray): New macros.
+ (scm_module_variable, scm_module_local_variable,
+ scm_module_export): New declarations.
+
+2007-04-17 Ludovic Courtès <ludovic.courtes@laas.fr>
+
+ * numbers.c: Commented out trailing `HAVE_COMPLEX_DOUBLE' after
+ `#endif'. Use `#ifndef HAVE_XXX' rather than `#if !HAVE_XXX'.
+
+2007-04-09 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * numbers.c (carg): provide carg, cexp, clog in case they are
+ missing.
+
+2007-03-12 Ludovic Courtès <ludovic.courtes@laas.fr>
+
+ * i18n.c (scm_nl_langinfo): `#ifdef'd uses of `GROUPING',
+ `FRAC_DIGITS', etc., which are GNU extensions. Reported by
+ Steven Wu.
+
+2007-03-08 Kevin Ryde <user42@zip.com.au>
+
+ * struct.c, struct.h (scm_make_vtable): New function, providing
+ `make-vtable'.
+ * stacks.c (scm_init_stacks): Use it.
+
+2007-03-06 Kevin Ryde <user42@zip.com.au>
+
+ * struct.c (scm_make_struct): Check for R,W,O at end of layout when
+ allocating a tail array. If there's no such then those tail fields
+ are uninitialized and garbage SCMs there can cause a segv if printed
+ (after fetching with struct-ref).
+
+2007-02-22 Kevin Ryde <user42@zip.com.au>
+
+ * scmsigs.c (scm_sleep): In docstring, cross refence usleep.
+ (scm_usleep): Update docstring per manual, cross reference sleep.
+
+ * struct.c (scm_make_struct): Move SCM_CRITICAL_SECTION_END up so that
+ scm_struct_init is not within that section. scm_struct_init can
+ thrown an error, which within a critical section results in an
+ abort().
+
+2007-02-19 Neil Jerram <neil@ossau.uklinux.net>
+
+ * Makefile.am (noinst_HEADERS): Add private-options.h, so that it
+ is included in the distribution.
+ (noinst_HEADERS): And the same for eval.i.c.
+
+2007-01-31 Ludovic Courtès <ludovic.courtes@laas.fr>
+
+ * i18n.c: Include "libguile/threads.h" and "libguile/posix.h"
+ unconditionally. Include <langinfo.h> and <nl_types.h> when
+ available.
+ (SCM_I18N_STRINGIFY, SCM_LOCALE_CATEGORY_MASK,
+ SCM_LIST_OR_INTEGER_P): New macros.
+ (LC_*_MASK): When `USE_GNU_LOCALE_API' is undefined, define them
+ as powers of two instead of `(1 << LC_*)'.
+ (scm_i_locale_free): New function/macro.
+ (scm_global_locale): New global variable.
+ (smob_locale_free): Use `scm_i_locale_free ()'.
+ (smob_locale_mark): Check whether the SMOB is `%global-locale'.
+ (get_current_locale_settings): Return `EINVAL' instead of `errno'
+ when `setlocale' fails.
+ (restore_locale_settings): Likewise.
+ (install_locale_categories): Likewise.
+ (install_locale): Likewise. Stop the locale stack traversal when
+ all categories have been handled.
+ (get_current_locale, category_to_category_mask,
+ category_list_to_category_mask): New function.
+ (scm_make_locale): Use them. Accept both lists of `LC_*' values
+ and single `LC_*' values as the first argument. Handle the case
+ where BASE_LOCALE is `%global-locale'. When `USE_GNU_LOCALE_API',
+ duplicate C_BASE_LOCALE before using it.
+ (scm_nl_langinfo, define_langinfo_items): New functions.
+ (scm_init_i18n): When `HAVE_NL_LANGINFO', add feature
+ `nl-langinfo' and invoke `define_langinfo_items ()'.
+ * i18n.h (scm_global_locale, scm_nl_langinfo): New declarations.
+ * posix.c: Include <xlocale.h> when available.
+ (scm_i_locale_mutex): Always define it. Statically initialized.
+ (scm_set_locale): Invoke `scm_i_to_lc_category ()' before
+ acquiring the locale mutex.
+ (scm_init_posix): No longer initialize SCM_I_LOCALE_MUTEX here.
+
+2007-01-27 Kevin Ryde <user42@zip.com.au>
+
+ * ports.c (scm_port_line, scm_set_port_line_x), read.c
+ (scm_i_input_error, scm_lreadr, scm_lreadrecparen): Corrections to
+ port line number type, should be "long" not "int", as per line_number
+ field of scm_t_port. (Makes a difference only on 64-bit systems, and
+ only then for a linenum above 2Gig.)
+
+2007-01-25 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * vector.c: remove comment as per kryde's request.
+
+2007-01-25 Kevin Ryde <user42@zip.com.au>
+
+ * sort.c (scm_stable_sort): Return empty list for input empty list, as
+ done in guile 1.6 and as always done by plain `sort'. Was falling
+ through to SCM_WRONG_TYPE_ARG. Reported by Ales Hvezda.
+
+2007-01-22 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * vectors.c (s_scm_vector_move_right_x): complain about naming.
+
+ * srcprop.c: regularize comments.
+
+ * eval.c: remove superfluous ifndef DEVAL.
+
+ * private-options.h: idem.
+
+ * eval.i.c: copyright nitpicking.
+
+ * eval.c: distangle. move duplicate code to eval.i.c and include
+ twice.
+
+ * eval.i.c: new file.
+
+ * backtrace.c, debug.c, debug.h, deprecation.c, eq.c, eval.c
+ eval.h, gsubr.c, init.c, macros.c, print.c, print.h, read.c,
+ read.h, stacks.c, symbols.c, throw.c: use private-options.h
+
+ * private-options.h: new file: contain hardcoded option
+ definitions.
+
+ * private-gc.h: add FSF header.
+
+2007-01-19 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * debug.h (SCM_RESET_DEBUG_MODE): switch to debugging if
+ memoize-symbol is set.
+
+ * eval.h (SCM_MEMOIZE_HDLR): add macros for memoize symbol trap.
+
+ * eval.c (CEVAL): add memoize_symbol trap.
+
+ * options.c (scm_options_try): new function. This allows error
+ reporting before changing options in a critical section.
+
+ * srcprop.c: use double cell for storing source-properties. Put
+ filename in the plist, and share between srcprops if possible.
+ Remove specialized storage.
+
+ * srcprop.h: remove macros without SCM_ prefix from
+ interface. Remove specialized storage/type definitions.
+
+ * read.c: idem.
+
+ * print.c: idem.
+
+ * eval.c: terminate option lists with 0.
+
+ * options.c: remove n (for length) from scm_option_X
+ functions. Detect option list length by looking for NULL name.
+
+2007-01-19 Ludovic Courtès <ludovic.courtes@laas.fr>
+
+ * struct.c (scm_i_struct_equalp): Skip comparison if both FIELD1
+ is equal to S1 and FIELD2 is equal to S2. This avoids infinite
+ recursion when comparing `s' fields, as the REQUIRED_VTABLE_FIELDS
+ added by `make-vtable-vtable'. Reported by Marco Maggi.
+
+2007-01-18 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * throw.c (scm_ithrow): more refined error message: print symbols
+ too.
+
+2007-01-16 Kevin Ryde <user42@zip.com.au>
+
+ * feature.c, feature.h (scm_set_program_arguments_scm): New function,
+ implementing `set-program-arguments'.
+
+ * filesys.c (scm_init_filesys): Use scm_from_int rather than
+ scm_from_long for O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL,
+ O_NOCTTY, O_TRUNC, O_APPEND, O_NONBLOCK, O_NDELAY, O_SYNC and
+ O_LARGEFILE. These are all int not long, per arg to open().
+ (scm_init_filesys): Use scm_from_int rather than scm_from_long for
+ F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETOWN, F_SETOWN, these
+ are all ints (per command arg to fcntl). Likewise FD_CLOEXEC which is
+ an int arg to fcntl.
+
+ * posix.c (scm_putenv): Correction to "len" variable, was defined only
+ for __MINGW32__ but used under any !HAVE_UNSETENV (such as solaris).
+ Move it to where it's used. Reported by Hugh Sasse.
+
+ * regex-posix.c (scm_regexp_exec): Remove SCM_CRITICAL_SECTION_START
+ and SCM_CRITICAL_SECTION_END, believe not needed. Their placement
+ meant #\nul in the input (detected by scm_to_locale_string) and a bad
+ flags arg (detected by scm_to_int) would throw from a critical
+ section, causing an abort().
+
+ * regex-posix.c (scm_init_regex_posix): Use scm_from_int for
+ REG_BASIC, REG_EXTENDED, REG_ICASE, REG_NEWLINE, REG_NOTBOL,
+ REG_NOTEOL; they're all ints not longs (per args to regcomp and
+ regexec).
+
+2007-01-10 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * throw.c (scm_ithrow): print out key symbol and string arguments
+ when error happens inside a critical section, and document why.
+
+2007-01-06 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * read.c (s_scm_read_hash_extend): document #f argument to
+ read-hash-extend.
+
+2007-01-04 Kevin Ryde <user42@zip.com.au>
+
+ * deprecated.h (scm_create_hook), version.h.in (scm_major_version,
+ scm_minor_version, scm_micro_version, scm_effective_version,
+ scm_version, scm_init_version): Use SCM_API instead of just extern,
+ for the benefit of mingw. Reported by Cesar Strauss.
+
+2007-01-03 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * gc.c (s_scm_gc_stats): return an entry for total-cells-allocated
+ too.
+ (gc_update_stats): update scm_gc_cells_allocated_acc too.
+
+2006-12-27 Kevin Ryde <user42@zip.com.au>
+
+ * threads.c (get_thread_stack_base): In mingw with pthreads we can use
+ the basic scm_get_stack_base. As advised by Nils Durner.
+
+ * threads.c (get_thread_stack_base): Add a version using
+ pthread_get_stackaddr_np (when available), for the benefit of MacOS.
+ As advised by Heikki Lindholm.
+
+ * scmsigs.c (signal_delivery_thread): Restrict scm_i_pthread_sigmask
+ to HAVE_PTHREAD_SIGMASK, it doesn't exist on mingw. Reported by Nils
+ Durner.
+
+2006-12-24 Kevin Ryde <user42@zip.com.au>
+
+ * posix.c (scm_kill): When only raise() is available, throw an ENOSYS
+ error if pid is not our own process, instead of silently doing nothing.
+
+ * print.c (scm_write, scm_display, scm_write_char): Disable port close
+ on EPIPE. This was previously disabled but introduction of HAVE_PIPE
+ check in configure.in unintentionally enabled it. Believe that
+ testing errno after scm_prin1 or scm_putc is bogus, a long ago error
+ can leave errno in that state. popen.test "no duplicates" output test
+ provoked that.
+
+2006-12-23 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * numbers.c (scm_i_fraction_reduce): move logic into
+ scm_i_make_ratio(), so fractions are only read.
+ scm_i_fraction_reduce() modifies a fraction when reading it. A
+ race condition might lead to fractions being corrupted by reading
+ them concurrently.
+
+ Also, the REDUCED bit alters the SCM_CELL_TYPE(), making
+ comparisons between reduced and unreduced fractions go wrong.
+
+ * numbers.h: remove SCM_FRACTION_SET_NUMERATOR,
+ SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
+ SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
+ SCM_FRACTION_REDUCED.
+
+2006-12-16 Kevin Ryde <user42@zip.com.au>
+
+ * scmsigs.c (scm_raise): Use raise() rather than kill(), as this is
+ more direct for a procedure called raise.
+ (kill): Remove mingw fake fallback.
+
+2006-12-15 Kevin Ryde <user42@zip.com.au>
+
+ * scmsigs.c: Conditionalize process.h, add io.h believe needed for
+ _pipe on mingw.
+
+2006-12-14 Kevin Ryde <user42@zip.com.au>
+
+ * threads.c (thread_print): Cope with the case where pthread_t is a
+ struct, as found on mingw. Can't just cast to size_t for printing.
+ Reported by Nils Durner.
+
+ * scmsigs.c: Add <fcntl.h> and <process.h> needed by mingw. Copy the
+ fallback pipe() using _pipe() from posix.c. Reported by Nils Durner.
+
+2006-12-13 Kevin Ryde <user42@zip.com.au>
+
+ * eval.c (scm_m_define): Set 'name procedure property on any
+ scm_procedure_p, not just SCM_CLOSUREP. In particular this picks up
+ procedures with setters as used in srfi-17.
+
+ * posix.c (scm_crypt): Check for NULL return from crypt(), which the
+ linux man page says is a possibility.
+
+2006-12-12 Ludovic Courtès <ludovic.courtes@laas.fr>
+
+ * libguile/unif.c (read_decimal_integer): Let RESP be SIGN * RES
+ instead of RES (reported by Szavai Gyula). This allows the use of
+ negative lower bounds.
+ (scm_i_read_array): Make sure LEN is non-negative (reported by
+ Szavai Gyula).
+
+ (scm_array_in_bounds_p): Iterate over S instead of always
+ comparing indices with the bounds of S[0]. This fixes
+ `array-in-bounds?' for arrays with a rank greater than one and
+ with different lower bounds for each dimension.
+
+2006-12-05 Kevin Ryde <user42@zip.com.au>
+
+ * numbers.c (scm_product): For flonum*inum and complex*inum, return
+ exact 0 if inum==0. Already done for inum*flonum and inum*complex,
+ and as per R5RS section "Exactness".
+
+2006-12-03 Kevin Ryde <user42@zip.com.au>
+
+ * Makefile.am (.c.doc): Remove the "test -n" apparently attempting to
+ allow $AWK from the environment to override. It had syntax gremlins,
+ and the presence of a $(AWK) variable set by AC_PROG_AWK in the
+ Makefile stopped it having any effect. Use just $(AWK), which can be
+ overridden with "make AWK=xxx" in the usual way if desired.
+
+2006-11-29 Ludovic Courtès <ludovic.courtes@laas.fr>
+
+ * libguile/vectors.c (scm_vector_to_list): Fixed list
+ construction: elements were not copied when INC is zero (see
+ "shared array" example in `vectors.test'). Reported by
+ Szavai Gyula.
+
+2006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr>
+
+ * Makefile.am (lib_LTLIBRARIES): Added `libguile-i18n-v-XX.la'.
+ (libguile_la_SOURCES): Added `gettext.c', removed `i18n.c'.
+ (libguile_i18n_v_XX_la_SOURCES, libguile_i18n_v_XX_la_CFLAGS,
+ libguile_i18n_v_XX_la_LIBADD, libguile_i18n_v_XX_la_LDFLAGS): New.
+ (DOT_X_FILES): Added `gettext.x'.
+ (DOT_DOC_FILES): Likewise.
+ (EXTRA_libguile_la_SOURCES): Added `locale-categories.h'.
+ (modinclude_HEADERS): Added `gettext.h'.
+ (EXTRA_DIST): Added `libgettext.h'.
+
+ * gettext.h: Renamed to...
+ * libgettext.h: New file.
+
+ * i18n.c: Renamed to...
+ * gettext.c: New file.
+
+ * i18n.h: Renamed to...
+ * gettext.h: New file.
+
+ * i18n.c, i18n.h, locale-categories.h: New files.
+
+ * init.c: Include "libguile/gettext.h" instead of
+ "libguile/i18n.h".
+ (scm_i_init_guile): Invoke `scm_init_gettext ()' instead of
+ `scm_init_i18n ()'.
+
+ * posix.c: Include "libguile/gettext.h" instead of
+ "libguile/i18n.h" Test `HAVE_NEWLOCALE' and `HAVE_STRCOLL_L'.
+ (USE_GNU_LOCALE_API): New macro.
+ (scm_i_locale_mutex): New variable.
+ (scm_setlocale): Lock and unlock it around `setlocale ()' calls.
+
+ * posix.h: Include "libguile/threads.h".
+ (scm_i_locale_mutex): New declaration.
+
+2006-11-17 Neil Jerram <neil@ossau.uklinux.net>
+
+ * script.c (scm_shell_usage): Note need for subscription to bug-guile@gnu.org.
+
+2006-11-08 Ludovic Courtès <ludovic.courtes@laas.fr>
+
+ * libguile/gc-freelist.c (scm_i_adjust_min_yield): Take two
+ "sweep_stats" arguments; use them instead of accessing the global
+ variables `scm_gc_cells_collected' and `scm_gc_cells_collected_1'.
+
+ * libguile/gc-segment.c (scm_i_sweep_some_cards): Reset SWEEP
+ before each iteration of the loop.
+ (scm_i_sweep_some_segments): Reset SWEEP at each iteration.
+ (scm_i_get_new_heap_segment): Take an additional argument
+ SWEEP_STATS. Compute MIN_CELLS as a function of it.
+
+ * libguile/gc.c (scm_gc_cells_collected,
+ scm_gc_cells_collected_1): Removed.
+ (scm_i_gc_sweep_stats, scm_i_gc_sweep_stats_1): New.
+ (scm_gc_cells_marked_acc, scm_gc_cells_swept_acc,
+ scm_gc_time_taken, scm_gc_mark_time_taken, scm_gc_times,
+ scm_gc_cell_yield_percentage, protected_obj_count): Made `static'.
+ (scm_gc_stats): Use `scm_i_gc_sweep_stats' instead of
+ `scm_gc_cells_(collected|swept)'.
+ (gc_update_stats): New.
+ (gc_end_stats): Use `scm_i_gc_sweep_stats' and
+ `scm_i_gc_sweep_stats_1' instead of the former globals.
+ (scm_gc_for_newcell): Invoke `gc_update_stats ()' after each
+ `scm_i_sweep_some_segments' call. This fixes a bug where the GC
+ would keep allocating new segments instead of re-using collected
+ cells (because `scm_gc_cells_collected' would remain zero).
+
+ * libguile/gc.h (scm_gc_cells_swept, scm_gc_cells_collected,
+ scm_gc_cell_yield_percentage): Removed.
+
+ * libguile/private-gc.h (scm_gc_cells_collected_1): Removed.
+ (scm_i_adjust_min_yield): Updated.
+ (scm_i_get_new_heap_segment): Updated.
+
+2006-11-02 Neil Jerram <neil@ossau.uklinux.net>
+
+ * modules.c: Correct comment saying that low-level environments
+ will be used "in the next release".
+
+ * init.c: Comment out #include of environments.h.
+ (scm_i_init_guile): Comment out scm_environments_prehistory() and
+ scm_init_environments() calls.
+
+ * Makefile.am (libguile_la_SOURCES): Remove environments.c.
+ (DOT_X_FILES): Remove environments.x.
+ (DOT_DOC_FILES): Remove environments.doc.
+ (modinclude_HEADERS): Remove environments.h.
+
+2006-10-25 Neil Jerram <neil@ossau.uklinux.net>
+
+ IA64 HP-UX GC patch from Hrvoje Nikšić. (Thanks!)
+
+ * threads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp() and
+ scm_ia64_register_backing_store_base() instead of Linux-specific
+ implementations.
+
+ * gc.h (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp):
+ New declarations.
+
+ * gc.c (__libc_ia64_register_backing_store_base): Declaration
+ removed.
+ (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp): New, with
+ implementations for Linux and HP-UX.
+
+ * coop-pthreads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp()
+ and scm_ia64_register_backing_store_base() instead of
+ Linux-specific implementations.
+
+ * continuations.h (__libc_ia64_register_backing_store_base):
+ Declaration removed.
+ (scm_t_contregs): New "fresh" field.
+
+ * continuations.c (ia64_getcontext): Removed.
+ (scm_make_continuation): Use continuation fresh field instead of
+ interpreting getcontext return values (which isn't portable). Use
+ scm_ia64_ar_bsp() and scm_ia64_register_backing_store_base()
+ instead of Linux-specific implementations.
+ (copy_stack_and_call): Use scm_ia64_register_backing_store_base()
+ instead of Linux-specific implementation.
+
+ * _scm.h (__ia64__): Also detect __ia64.
+
+2006-10-03 Kevin Ryde <user42@zip.com.au>
+
+ * eval.c (SCM_APPLY): For scm_tc7_subr_2o, throw wrong-num-args on 0
+ arguments or 3 or more arguments. Previously 0 called proc with
+ SCM_UNDEFINED, and 3 or more silently used just the first 2.
+
+2006-09-28 Kevin Ryde <user42@zip.com.au>
+
+ * fports.c, ports.c (ftruncate): Use "HAVE_CHSIZE && ! HAVE_FTRUNCATE"
+ for chsize fallback, instead of hard-coding mingw. Mingw in fact
+ supplies ftruncate itself these days.
+
+ * ports.c (fcntl.h): Can include this unconditionally, no need for
+ __MINGW32__.
+
+ * ports.c (truncate): Conditionalize on "HAVE_FTRUNCATE && !
+ HAVE_TRUNCATE" so as not to hard-code mingw. Use "const char *" and
+ "off_t" for parameters, per usual definition of this function, rather
+ than "char *" and "int". Use ftruncate instead of chsize. Check for
+ error on final close.
+
+2006-09-27 Kevin Ryde <user42@zip.com.au>
+
+ * numbers.c (scm_log10): Check HAVE_CLOG10, clog10() is not available
+ in mingw.
+
+ * posix.c (scm_execl, scm_execlp, scm_execle): Cast "const char *
+ const *" for mingw to suppress warnings from gcc (which are errors
+ under the configure default -Werror). Reported by Nils Durner.
+
+2006-09-26 Kevin Ryde <user42@zip.com.au>
+
+ * _scm.h (scm_to_off64_t, scm_from_off64_t): New macros.
+ * fports.c (scm_open_file): Use open_or_open64.
+ (fport_seek_or_seek64): New function, adapting fport_seek.
+ * fports.c, fports.h (scm_i_fport_seek, scm_i_fport_truncate): New
+ functions.
+ * ports.c (scm_seek, scm_truncate_file): Use scm_i_fport_seek and
+ scm_i_fport_truncate to allow 64-bit seeks and truncates on fports.
+
+ * ports.c (scm_truncate_file): Update docstring per manual.
+
+2006-09-23 Kevin Ryde <user42@zip.com.au>
+
+ * numbers.c, numbers.h (scm_log, scm_log10, scm_exp, scm_sqrt): New
+ functions.
+
+2006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
+
+ * srfi-14.c: Include <config.h>. Define `_GNU_SOURCE'.
+ (make_predset, define_predset, make_strset, define_strset, false,
+ true): Removed.
+ (SCM_CHARSET_UNSET, CSET_BLANK_PRED, CSET_SYMBOL_PRED,
+ CSET_PUNCT_PRED, CSET_LOWER_PRED, CSET_UPPER_PRED,
+ CSET_LETTER_PRED, CSET_DIGIT_PRED, CSET_WHITESPACE_PRED,
+ CSET_CONTROL_PRED, CSET_HEX_DIGIT_PRED, CSET_ASCII_PRED,
+ CSET_LETTER_AND_DIGIT_PRED, CSET_GRAPHIC_PRED, CSET_PRINTING_PRED,
+ CSET_TRUE_PRED, CSET_FALSE_PRED, UPDATE_CSET): New macros.
+ (define_charset, scm_srfi_14_compute_char_sets): New functions.
+ (scm_init_srfi_14): Use `define_charset ()' instead of
+ `define_predset ()' and `define_strset ()'.
+
+ * srfi-14.h (scm_c_init_srfi_14): Removed.
+ (scm_srfi_14_compute_char_sets): New declaration.
+
+ * posix.h: Include "srfi-14.h".
+ (scm_setlocale): Invoke `scm_srfi_14_compute_char_sets ()' after a
+ successful `setlocale ()' call.
+
+2006-09-08 Kevin Ryde <user42@zip.com.au>
+
+ * socket.c (scm_init_socket): Add MSG_DONTWAIT.
+ (scm_recvfrom): Update docstring from manual.
+
+2006-08-31 Rob Browning <rlb@defaultvalue.org>
+
+ * ports.c (scm_c_port_for_each): Add a
+ scm_remember_upto_here_1(ports) at the end of the function to fix
+ a GC bug.
+
+2006-08-28 Neil Jerram <neil@ossau.uklinux.net>
+
+ * backtrace.c (scm_display_backtrace_with_highlights): Minor
+ improvements to docstring.
+ (scm_backtrace_with_highlights): Analogous improvements.
+
+2006-08-12 Kevin Ryde <user42@zip.com.au>
+
+ * gen-scmconfig.h.in (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT):
+ New, set from configure.
+ * gen-scmconfig.c (SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT): New output
+ to scmconfig.h.
+ * pthread-threads.h (SCM_I_PTHREAD_ONCE_INIT): Use
+ SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT to cope with Solaris.
+ Reported by Claes Wallin.
+
+2006-08-11 Neil Jerram <neil@ossau.uklinux.net>
+
+ * stacks.c (scm_last_stack_frame): Correct docstring (returns a
+ frame, not a stack).
+
+2006-07-25 Kevin Ryde <user42@zip.com.au>
+
+ * threads.c (get_thread_stack_base): Restrict HAVE_PTHREAD_GETATTR_NP
+ on pthreads version, since pthread_getattr_np not available on solaris
+ and macos. Reported by Claes Wallin.
+
+2006-07-24 Kevin Ryde <user42@zip.com.au>
+
+ * filesys.c (dirfd): Test with #ifndef rather than HAVE_DIRFD, since
+ it's a macro on MacOS X. Reported by Claes Wallin.
+
+ * posix.c (sethostname): Give prototype if not HAVE_DECL_SETHOSTNAME,
+ for the benefit of Solaris 10. Reported by Claes Wallin.
+
+ * socket.c (scm_htonl, scm_ntohl): Use scm_to_uint32 rather than
+ NUM2ULONG, to enforce 32-bit range check on systems with 64-bit long.
+
+2006-07-21 Kevin Ryde <user42@zip.com.au>
+
+ * eval.c, filesys.c (alloca): Update <alloca.h> etc blob, per current
+ autoconf recommendation. Should fix Solaris 10 reported by Claes
+ Wallin.
+
+ * threads.c: Include <string.h>, needed for memset() which is used by
+ FD_ZERO() on Solaris 10. Reported by Claes Wallin.
+
+2006-07-18 Rob Browning <rlb@defaultvalue.org>
+
+ * continuations.c: Add __attribute__ ((returns_twice)) to the
+ ia64_getcontext prototype so that gcc will make the right
+ arrangements and avoid an illegal instruction during
+ call-with-current-continuation.
+
+2006-07-12 Ludovic Courtès <ludovic.courtes@laas.fr>
+
+ * numbers.c (guile_ieee_init): Use regular ANSI C casts rather
+ than C++-style `X_CAST ()'. Patch posted by by Mike Gran.
+
+2006-07-08 Kevin Ryde <user42@zip.com.au>
+
+ * environments.c (core_environments_unobserve): Use if/else rather
+ than ?: for "SET" bits, avoiding complaints from AIX xlc compiler
+ about them not being rvalues. Reported by Mike Gran.
+
+ * Makefile.am (version.h): Don't use $< in an explicit rule, it's not
+ portable and in particular fails on OpenBSD and AIX (see autoconf
+ manual too). Reported by Mike Gran.
+
+2006-06-25 Kevin Ryde <user42@zip.com.au>
+
+ * stime.c (bdtime2c): tm_gmtoff is seconds East, so take negative of
+ tm:gmtoff which is seconds West. Reported by Aaron VanDevender.
+ (bdtime2c): Test HAVE_STRUCT_TM_TM_GMTOFF for tm_gmtoff, rather than
+ HAVE_TM_ZONE.
+ (scm_strptime): Use tm_gmtoff from the strptime result when that field
+ exists, it's set by glibc strptime "%s".
+
+2006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
+
+ * eq.c: Include "struct.h", "goops.h" and "objects.h".
+ (scm_equal_p): Invoke `scm_i_struct_equalp ()' on structures that
+ are not GOOPS instances.
+ * struct.c: Include "eq.h".
+ (scm_free_structs): Use `SCM_STRUCT_VTABLE_DATA ()' instead of
+ hand-written code.
+ (scm_i_struct_equalp): New.
+ * struct.h (scm_i_struct_equalp): New declaration.
+
+2006-06-06 Kevin Ryde <user42@zip.com.au>
+
+ * Makefile.am (BUILT_SOURCES): Remove guile.texi, only used by
+ maintainers (with doc/maint/docstring.el). Fixes parallel "make -j2"
+ reported by Mattias Holm.
+
+2006-06-03 Kevin Ryde <user42@zip.com.au>
+
+ * read.c (s_vector): Conditionalize on SCM_ENABLE_ELISP, to avoid
+ unused variable warning when elisp disabled. Reported by Ryan
+ VanderBijl.
+
+ * throw.c (scm_handle_by_message): Add dummy return value to avoid
+ compiler warning on cygwin. Reported by Ryan VanderBijl.
+
+ * Makefile.am (EXTRA_DOT_X_FILES): Typo in dependency rule, was a
+ duplicate of EXTRA_DOT_DOC_FILES.
+ (DOT_X_FILES, EXTRA_DOT_X_FILES, DOT_DOC_FILES, EXTRA_DOT_DOC_FILES):
+ Add scmconfig.h to dependencies, since these all run cpp. Helps a
+ parallel "make -j2". Reported by Mattias Holm.
+
+2006-05-30 Kevin Ryde <user42@zip.com.au>
+
+ * ports.c, ports.h (scm_set_port_mark, scm_set_port_free,
+ scm_set_port_print, scm_set_port_equalp, scm_set_port_flush,
+ scm_set_port_end_input, scm_set_port_close, scm_set_port_seek,
+ scm_set_port_truncate, scm_set_port_input_waiting): Use scm_t_bits for
+ port type descriptor, same as scm_make_port_type return value.
+
+2006-05-30 Marius Vollmer <mvo@zagadka.de>
+
+ * eq.c (scm_equal_p): Use scm_array_equal_p explicitely when one
+ of the arguments is a array. This allows vectors to be equal to
+ one-dimensional arrays.
+
+2006-05-29 Marius Vollmer <mvo@zagadka.de>
+
+ * throw.c (scm_ithrow): When looking for the jmpbuf, first test
+ that we have a pair before accessing its cdr. Thanks to Bill
+ Schottstaedt!
+
+2006-05-28 Kevin Ryde <user42@zip.com.au>
+
+ * eval.c, filesys.c: Add malloc.h to get alloca() on mingw. Reported
+ by "The Senator".
+
+2006-05-27 Marius Vollmer <mvo@zagadka.de>
+
+ * srfi-4.c, strings.c: Replace SCM_C_INLINE with
+ SCM_C_INLINE_KEYWORD. Thanks to Mark Gran!
+
+2006-05-26 Kevin Ryde <user42@zip.com.au>
+
+ * fports.c (fport_input_waiting): For ioctl, check HAVE_IOCTL as well
+ as defined(FIONREAD), since mingw has FIONREAD but not ioctl().
+ Reported by "The Senator".
+ For select and ioctl, move fdes into those conditionals, to avoid
+ unused variable warning when neither of those used.
+
+2006-05-23 Kevin Ryde <user42@zip.com.au>
+
+ * fports.c: Remove "fwrite" declaration under "! HAVE_UNISTD_H".
+ It's unused and will be in stdio.h anyway (if it's anywhere).
+
+2006-05-20 Kevin Ryde <user42@zip.com.au>
+
+ * filesys.c (scm_stat2scm): Test #ifdef S_ISLNK directly, rather than
+ HAVE_S_ISLNK from configure (it was only a #ifdef test anyway).
+
+ * posix.c (scm_mknod): Test #ifdef S_IFLNK before using that (for
+ symlink). Probably can't create symlinks with mknod anyway though.
+
+ * inline.h (scm_is_pair): Add a workaround for i386 gcc 2.95 bad code
+ generation.
+
+2006-05-15 Kevin Ryde <user42@zip.com.au>
+
+ * simpos.c, simpos.h (scm_primitive__exit): New function.
+ (scm_primitive_exit): Update docstring, no longer the best exit after
+ a fork.
+
+2006-05-09 Kevin Ryde <user42@zip.com.au>
+
+ * numbers.c (scm_i_divide): For big/big wanting inexact, use mpq_get_d
+ rather than converting to doubles, to avoid inf or nan when the inputs
+ are too big for a double but the quotient does fit. This affects
+ conversions exact->inexact of big fractions.
+
+ * filesys.c (scm_open_fdes): Use open64.
+ (scm_init_filesys): Add O_LARGEFILE.
+
+ * ports.c (scm_seek): Use lseek64.
+ (scm_truncate_file): Use ftruncate64.
+
+2006-05-08 Marius Vollmer <mvo@zagadka.de>
+
+ * private-gc.h (CELL_P): Also check that the potential pointer is
+ correctly aligned for a cell. Thanks to Miroslav Lichvar!
+
+2006-04-18 Rob Browning <rlb@defaultvalue.org>
+
+ * _scm.h: Add back error if the size of off_t is unknown. The bug
+ was actually in guile-readline's configuration.
+
+2006-04-18 Kevin Ryde <user42@zip.com.au>
+
+ * posix.c (scm_mkstemp): Update docstring from the manual, in
+ particular file mode 0600 is not guaranteed.
+
+2006-04-17 Kevin Ryde <user42@zip.com.au>
+
+ * _scm.h (scm_to_off_t, scm_from_off_t): No error if unknown off_t
+ size, to help the guile-readline build where off_t is unused.
+
+2006-04-16 Kevin Ryde <user42@zip.com.au>
+
+ * filesys.c (scm_stat2scm, scm_stat, scm_lstat): Use stat or stat64.
+ (scm_readdir): Use readdir64.
+ (scm_copy_file): Use open64 and fstat64, to cope with >2Gb files.
+ * ports.c (scm_truncate_file): Use truncate64. Correction truncate
+ and ftruncate take off_t not size_t.
+ * _scm.h (stat_or_stat64 etc): Macros for selecting LFS64 when
+ available.
+
+2006-04-06 Kevin Ryde <user42@zip.com.au>
+
+ * fports.c (scm_setvbuf): Fix for not _IOLBF, clear SCM_BUFLINE
+ instead of toggling it. Reported by Ludovic Courtès.
+
+2006-03-26 Marius Vollmer <mvo@zagadka.de>
+
+ * threads.c (get_thread_stack_base): Use scm_get_stack_base
+ instead of accessing __libc_stack_end directly, and only do this
+ when pthread_attr_getstack is known not to work for the main
+ thread or when not using pthreads at all.
+
+ * gc_os_dep.c (scm_get_stack_base): Abort when the machine type is
+ unknown instead of returning NULL.
+
+2006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr>
+
+ * numbers.c (scm_i_mem2number): Renamed to
+ scm_c_locale_stringn_to_number.
+ * numbers.c, print.c, read.c: Updated callers.
+ * numbers.h: Update function declaration.
+
+2006-03-11 Neil Jerram <neil@ossau.uklinux.net>
+
+ * unif.c (string_set): Don't return in a void function. (Reported
+ by Mike Gran.)
+
+ * srfi-4.c (scm_uniform_vector_read_x): Declare base as char*
+ rather than void*, so we can do pointer arithmetic on it.
+ (Reported by Mike Gran.)
+ (s_scm_uniform_vector_write): Ditto.
+
+2006-03-10 Neil Jerram <neil@ossau.uklinux.net>
+
+ * unif.c (scm_make_shared_array): Don't use SCM_I_ARRAY_BASE when
+ oldra is not an array. (Reported by Steve Juranich.)
+
+ * threads.c (do_unlock): Renamed from "unlock", which is defined
+ in unistd.h on QNX. (Reported by Matt Kraai.)
+
+2006-03-04 Kevin Ryde <user42@zip.com.au>
+
+ * deprecated.c (scm_i_defer_ints_etc): Show SCM_DEFER_INTS in message,
+ not SCM_CRITICAL_SECTION_START.
+
+ * eval.c, posix.c: Change comments from C++ to C style. Reported by
+ Mike Gran.
+
+2006-02-28 Kevin Ryde <user42@zip.com.au>
+
+ * unif.c (bitvector_set): Use h->writable_elements not h->elements.
+
+2006-02-26 Kevin Ryde <user42@zip.com.au>
+
+ * filesys.c (scm_readdir): Use fpathconf for the dirent size when
+ NAME_MAX is not available, which is so on Solaris 10. Report and help
+ by Bill Schottstaedt.
+
+ * srfi-13.c (MY_VALIDATE_SUBSTRING_SPEC_UCOPY): New macro.
+ (scm_string_compare, scm_string_compare_ci, scm_string_lt,
+ scm_string_gt, scm_string_le, scm_string_ge, scm_string_ci_lt,
+ scm_string_ci_gt, scm_string_ci_le, scm_string_ci_ge): In comparisons
+ use "unsigned char", not signed char. This ensures comparisons are
+ the same as `char<?' etc, and is also the same as guile 1.6 did.
+ Reported by Sven Hartrumpf.
+
+2006-02-19 Mikael Djurfeldt <mdj@neurologic.cc>
+
+ * random.c: Test for SCM_HAVE_T_UINT64 instead of
+ SCM_HAVE_T_INT64.
+ (scm_i_uniform32, scm_i_uniform32, scm_i_init_rstate): Use
+ scm_t_uint64 and scm_t_uint32 instead of scm_t_int64 and
+ scm_t_int32.
+
+2006-01-04 Ludovic Courtès <ludovic.courtes@laas.fr>
+
+ * gc-segment.c (scm_i_sweep_some_cards): Take a SWEEP_STATS
+ argument. Don't refer to SCM_GC_CELLS_COLLECTED and
+ SCM_CELLS_ALLOCATED. If SEG->FIRST_TIME, let CELLS_COLLECTED as zero.
+ Take into account SEG->SPAN when computing CELLS_SWEPT.
+ (scm_i_sweep_segment): Take one more argument, similarly.
+ (scm_i_sweep_all_segments): Likewise.
+ (scm_i_sweep_some_segments): Likewise.
+ (scm_i_adjust_min_yield): Change the way MIN_CELLS is computed: do not
+ refer to SCM_GC_CELLS_COLLECTED.
+
+ * gc-freelist.c (scm_i_adjust_min_yield): Take one more
+ argument, an `scm_i_sweep_statistics' object.
+ Change the way DELTA is collected: don't take into account
+ SCM_GC_CELLS_COLLECTED_1, only SWEEP_STATS.COLLECTED.
+
+ * gc-malloc.c (scm_realloc): Pass an extra argument
+ to `scm_i_sweep_all_segments ()'.
+
+ * gc.c (gc_start_stats): Updated accordingly.
+ (gc_end_stats): Take an additional SWEEP_STATS argument.
+ Decrement SCM_CELLS_ALLOCATED after calls to `scm_i_sweep_* ()'.
+ (scm_gc_for_newcell): Updated callers of `scm_i_sweep_*'.
+ Decrement SCM_CELLS_ALLOCATED.
+ (scm_i_gc): Likewise.
+
+ * private-gc.h (scm_i_sweep_*): Updated function
+ prototypes accordingly.
+ (scm_t_sweep_statistics): New type.
+ (scm_i_sweep_statistics_init): New macro.
+ (scm_i_sweep_statistics_sum): New macro
+
+2006-02-14 Ludovic Courtès <ludovic.courtes@laas.fr>
+
+ * strings.c (scm_i_take_stringbufn): Register LEN+1 bytes instead of
+ LEN. Without this, too much collectable memory gets unregistered,
+ which results in an underflow of SCM_MALLOCATED in
+ `decrease_mtrigger()'.
+
+ * gc-malloc.c (decrease_mtrigger): Make sure SIZE is lower than or
+ equal to SCM_MALLOCATED.
+
+2006-02-13 Marius Vollmer <mvo@zagadka.de>
+
+ * eval.c (scm_eval_body): Use scm_i_dynwind_pthread_mutex_lock
+ oinstead of scm_dynwind_pthread_mutex_lock so that it works when
+ configured --without-threads.
+ (SCM_APPLY, CEVAL): Likewise. Thanks to Han-Wen Nienhuys!
+
+2006-02-12 Marius Vollmer <mvo@zagadka.de>
+
+ * unif.c (scm_dimensions_to_uniform_array): Use the prototype for
+ filling when the fill parameter is omitted, as documented, but
+ turn #\nul into 0 since s8 arrays (signified by a #\nul prototype)
+ can not store characters.
+
+2006-02-09 Neil Jerram <neil@ossau.uklinux.net>
+
+ * socket.c (scm_c_make_socket_address): Pass address_size pointer
+ on to scm_fill_sockaddr call.
+
+2006-02-04 Neil Jerram <neil@ossau.uklinux.net>
+
+ * throw.h (scm_c_catch, scm_c_with_throw_handler,
+ scm_catch_with_pre_unwind_handler, scm_with_throw_handler): New.
+
+ * throw.c (SCM_JBPREUNWIND, SCM_SETJBPREUNWIND): New.
+ (struct pre_unwind_data): New, replaces struct lazy_catch.
+ (scm_c_catch): New, replaces scm_internal_catch as the primary
+ catch API for C code; adds pre-unwind handler support.
+ (scm_internal_catch): Now just a wrapper for scm_c_catch, for back
+ compatibility.
+ (tc16_pre_unwind_data, pre_unwind_data_print,
+ make_pre_unwind_data, SCM_PRE_UNWIND_DATA_P): Renamed from
+ "lazy_catch" equivalents.
+ (scm_c_with_throw_handler): New, replaces scm_internal_lazy_catch
+ as the primary C API for a "lazy" catch.
+ (scm_internal_lazy_catch): Now just a wrapper for
+ scm_c_with_throw_handler, for back compatibility.
+ (scm_catch_with_pre_unwind_handler): Renamed from scm_catch; adds
+ pre-unwind handler support.
+ (scm_catch): Now just a wrapper for
+ scm_catch_with_pre_unwind_handler, for back compatibility.
+ (scm_with_throw_handler): New.
+ (scm_lazy_catch): Update comment to say that the handler can
+ return, and what happens if it does.
+ (toggle_pre_unwind_running): New.
+ (scm_ithrow): When identifying the throw target, take running
+ flags into account. In general, change naming of things from
+ "lazy_catch" to "pre_unwind". When throwing to a throw handler,
+ don't unwind the dynamic context first. Add dynwind framing to
+ manage the running flag of a throw handler. If a lazy catch or
+ throw handler returns, rethrow the same exception again. Add
+ pre-unwind support to the normal catch case (SCM_JMPBUFP).
+
+ * root.c (scm_internal_cwdr): Add NULL args to
+ scm_i_with_continuation_barrier call.
+
+ * dynwind.c: Change comment mentioning lazy-catch to mention
+ pre-unwind data and throw handler also.
+
+ * continuations.h (scm_i_with_continuation_barrier): Add
+ pre-unwind handler args.
+
+ * continuations.c (scm_i_with_continuation_barrier): Add
+ pre-unwind handler args, and pass on to scm_c_catch (changed from
+ scm_internal_catch).
+ (c_handler): Remove scm_handle_by_message_noexit call.
+ (scm_c_with_continuation_barrier): Call
+ scm_i_with_continuation_barrier with scm_handle_by_message_noexit
+ as the pre-unwind handler.
+ (scm_handler): Remove scm_handle_by_message_noexit call.
+ (s_scm_with_continuation_barrier): Call
+ scm_i_with_continuation_barrier with scm_handle_by_message_noexit
+ as the pre-unwind handler.
+
+2006-02-04 Kevin Ryde <user42@zip.com.au>
+
+ * gc-mark.c (scm_mark_all): Fix c99-isms "loops" and "again" variables.
+
+2006-02-03 Kevin Ryde <user42@zip.com.au>
+
+ * list.c, list.h (scm_list): Restore this function for use from C.
+ It's a complete no-op but in theory might used by someone.
+
+2006-01-30 Marius Vollmer <mvo@zagadka.de>
+
+ * eval.c (scm_eval_body): Lock source_mutex with a dynwind context
+ so that it gets unlocked in all cases.
+ (SCM_APPLY, CEVAL): Likewise.
+
+2006-01-29 Marius Vollmer <mvo@zagadka.de>
+
+ * ramap.c: (scm_array_map_x): Don't use scm_array_p, use
+ scm_is_typed_array instead.
+
+ Renamed the "frames" that are related to dynamic-wind to "dynamic
+ contexts. Renamed all functions from scm_frame_ to scm_dynwind_.
+ Updated documentation.
+
+ Disabled "futures":
+
+ * futures.h, futures.c: Wrap whole contents in "#if 0"/"#endif".
+ * eval.c, init.c: Comment out all 'future' related things.
+
+2006-01-28 Marius Vollmer <mvo@zagadka.de>
+
+ * inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c
+ to inline.h to make it inline.
+
+2005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
+
+ * strings.c (scm_i_take_stringbufn): New.
+ (scm_i_c_take_symbol): New.
+ (scm_take_locale_stringn): Use `scm_i_take_stringbufn ()'.
+
+ * strings.h (scm_i_c_take_symbol): New.
+ (scm_i_take_stringbufn): New.
+
+ * symbols.c (lookup_interned_symbol): New function.
+ (scm_i_c_mem2symbol): New function.
+ (scm_i_mem2symbol): Use `lookup_symbol ()'.
+ (scm_from_locale_symbol): Use `scm_i_c_mem2symbol ()'. This avoids
+ creating a new Scheme string.
+ (scm_from_locale_symboln): Likewise.
+ (scm_take_locale_symbol): New.
+ (scm_take_locale_symboln): New.
+
+ * symbols.h (scm_take_locale_symbol): New.
+ (scm_take_locale_symboln): New.
+
+2006-01-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
+
+ * gc-card.c ("sweep_card"): don't count scm_tc_free_cell for
+ free_count.
+
+2005-11-29 Han-Wen Nienhuys <hanwen@xs4all.nl>
+
+ * regex-posix.c (s_scm_regexp_exec): list the offending pattern
+ upon error
+
+2005-12-29 Neil Jerram <neil@ossau.uklinux.net>
+
+ * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
+ the GC when allocated_fluids_len is zero.
+
+2005-12-14 Neil Jerram <neil@ossau.uklinux.net>
+
+ * load.c (the_reader, the_reader_fluid_num): New.
+ (scm_primitive_load): Support custom reader.
+ (scm_init_load): Init the_reader and the_reader_fluid_num; export
+ the_reader as `current-reader'.
+
+ * scmsigs.c (do_read_without_guile): Use the "raw_data" passed in
+ (rather than an uninitialized pointer on the stack).
+
+2005-12-07 Marius Vollmer <mvo@zagadka.de>
+
+ Reported by Bruce Korb:
+
+ * init.c (invoke_main_func): Don't call exit here. Throws that
+ are only caught by scm_with_guile will bypass us and would cause
+ scm_boot_guile to return erroneously.
+ (scm_boot_guile): Expect scm_with_guile to return and call exit
+ here, passing it an appropriate exit code.
+
+ From Andy Wingo:
+
+ * script.c (scm_find_executable): Compile fix -- fgetc returns an
+ unsigned char cast to an int, or -1 for EOS.
+
+2005-12-06 Marius Vollmer <mvo@zagadka.de>
+
+ * srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
+ non-const.
+ (scm_take_u8vector, etc): Likewise. Thanks to Ludovic Courtès!
+
+ * threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile,
+ scm_enter_guile): Removed from public API. See comment at
+ scm_without_guile for the rationale.
+
+ * scmsigs.c (read_without_guile): New.
+ (signal_delivery_thread): Use it instead of
+ scm_leave_guile/read/scm_enter_guile.
+
+ From Stephen Compall:
+
+ * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax.
+ (CEVAL): Evaluate SRFI 61 cond clauses.
+
+2005-12-06 Ludovic Courtès <ludovic.courtes@laas.fr>
+
+ * gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL.
+ This was typically hit when running `gc-live-object-stats' right
+ after starting Guile.
+
+2005-11-30 Kevin Ryde <user42@zip.com.au>
+
+ * srfi-13.c (scm_string_append_shared): No copying if just one
+ non-empty string in args.
+
+2005-11-26 Kevin Ryde <user42@zip.com.au>
+
+ * gc-mark.c (scm_mark_all): Change C++ comment to C comment. Reported
+ by Ludovic Courtès.
+
+ * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
+ "register".
+
+ * random.c (scm_i_copy_rstate, scm_c_make_rstate): Don't test for
+ scm_malloc returning NULL, it never does that.
+ * putenv.c (putenv): Likewise.
+
+ * socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is
+ much too big to want to inline.
+
+2005-11-17 Ludovic Courtès <ludovic.courtes@laas.fr>
+
+ * print.c (EXIT_NESTED_DATA): Before popping from the stack, reset
+ the value at its top. This fixes a reference leak.
+ (PUSH_REF): Perform `pstate->top++' after calling
+ `PSTATE_STACK_SET ()' in order to avoid undesired potential side
+ effects.
+
+2005-11-12 Ludovic Courtès <ludovic.courtes@laas.fr>
+
+ * gc.c (scm_weak_vectors): Removed.
+
+2005-11-12 Kevin Ryde <user42@zip.com.au>
+
+ * socket.c (scm_setsockopt): Missing @defvar in docstring. Reported
+ by Ludovic Courtès.
+
+2005-11-07 Marius Vollmer <mvo@zagadka.de>
+
+ * stime.c (scm_mktime): Use scm_frame_critical_section instead of
+ SCM_CRITICAL_SECTION_START/END since the code inside the critical
+ section might exit non-locally.
+
+2005-11-04 Neil Jerram <neil@ossau.uklinux.net>
+
+ * eval.c (sym_instead): New symbol.
+ (ENTER_APPLY): Remove optional use of a continuation when making
+ trap call.
+ (scm_debug_opts): Change doc for 'cheap option to make clear that
+ it is now obsolete.
+ (CEVAL, SCM_APPLY): Remove optional use of a continuation when
+ making trap calls, and implement substitution of eval expressions
+ and return values using the values that the trap call handlers
+ return.
+
+ * debug.h (SCM_CHEAPTRAPS_P): Removed.
+
+2005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
+
+ * socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc.
+ (scm_connect, scm_bind, scm_sendto): Accept sockaddr object.
+ (scm_addr_vector): Renamed to _scm_from_sockaddr, update usages.
+ (scm_from_sockaddr, scm_to_sockaddr, scm_make_socket_address,
+ scm_c_make_socket_address): New functions.
+ * socket.h: Add prototypes.
+
+2005-10-24 Kevin Ryde <user42@zip.com.au>
+
+ * socket.c (scm_init_socket): Add IPPROTO_IP, IPPROTO_TCP,
+ IPPROTO_UDP. Remove SOL_IP, SOL_TCP, SOL_UDP. The former are in
+ POSIX spec examples, the latter are not available on for instance
+ NetBSD.
+
+ * socket.c (scm_getsockopt, scm_setsockopt): Update docstrings from
+ posix.texi.
+
+ * stime.c (scm_strftime): Update docstring from posix.texi.
+
+2005-10-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
+
+ PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not portable enough.
+
+ * null-threads.h, pthread-threads.h
+ (SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Removed.
+ (scm_i_pthread_mutexattr_recursive): New.
+
+ * threads.c (scm_i_pthread_mutexattr_recursive): Declare.
+ (scm_i_critical_section_mutex): Do not initialize statically.
+ (scm_threads_prehistory): Initialize
+ scm_i_pthread_mutexattr_recursive and scm_i_critical_section_mutex
+ here.
+
+ * eval.c (source_mutex): Do not initialiaze statically.
+ (scm_init_eval): Do it here, using
+ scm_i_pthread_mutexattr_recursive.
+
+2005-09-05 Marius Vollmer <mvo@zagadka.de>
+
+ * print.h (SCM_PRINT_KEYWORD_STYLE_I, SCM_PRINT_KEYWORD_STYLE):
+ New.
+ (sym_reader): New.
+ (scm_print_opts): Added "quote-keywordish-symbols" option.
+ (quote_keywordish_symbol): New, for evaluating the option.
+ (scm_print_symbol_name): Use it.
+ (scm_init_print): Initialize new option to sym_reader.
+
+2005-08-15 Neil Jerram <neil@ossau.uklinux.net>
+
+ * eval.c (eval_letrec_inits): New.
+ (CEVAL): Eval letrec initializer forms using eval_letrec_inits.
+
+2005-08-12 Marius Vollmer <mvo@zagadka.de>
+
+ * numbers.c: Use scm_from_bool instead of SCM_BOOL. Thanks to
+ Peter Gavin!
+
+2005-08-12 Kevin Ryde <user42@zip.com.au>
+
+ * srfi-13.c (scm_string_for_each_index): Correction to docstring.
+
+2005-08-06 Kevin Ryde <user42@zip.com.au>
+
+ * srfi-13.c (scm_string_any, scm_string_every, scm_string_tabulate,
+ scm_string_trim, scm_string_trim_right, scm_string_trim_both,
+ scm_string_index, scm_string_index_right, scm_string_skip,
+ scm_string_skip_right, scm_string_count, scm_string_map,
+ scm_string_map_x, scm_string_for_each, scm_string_for_each_index,
+ scm_string_filter, scm_string_delete): Use scm_t_trampoline_1 for
+ procedures called in loops.
+
+2005-08-02 Kevin Ryde <user42@zip.com.au>
+
+ * strports.c (st_flush): Increase buffer by 1.5x when growing, to
+ avoid lots of copying where previoulsy growing by only 80 bytes at a
+ time.
+
+2005-08-01 Marius Vollmer <mvo@zagadka.de>
+
+ * modules.h, modules.c (scm_eval_closure_module): Removed, we
+ already have scm_lookup_closure_module, which does the same thing.
+
+2005-08-01 Marius Vollmer <mvo@zagadka.de>
+
+ New marking algorithm for weak hashtables that fixes the problem
+ that references from the non-weak value to the associated weak
+ key (for example) would prevent the entry from ever being dropped.
+
+ Guardians have been changed back to their original semantics and
+ are no longer greedy and no longer drop cycles.
+
+ * gc-mark.c (scm_mark_all): Do not rely on hooks to run the weak
+ hashtable and guardian machinery but call the relevant functions
+ directly.
+
+ * guardians.h, guardians.c, deprecated.h,
+ deprecated.c (scm_destroy_guardian_x, scm_guardian_greedy_p,
+ scm_guardian_destroyed_p, scm_guard, scm_get_one_zombie):
+ Deprecated and moved into deprecated.[ch].
+
+ * guardians.h, guardians.c: Mostly rewritten.
+ (scm_i_init_guardians_for_gc,
+ scm_i_identify_inaccessible_guardeds,
+ scm_i_mark_inaccessible_guardeds): New.
+ (scm_make_guardian): Removed greedy_p argument.
+
+ * weaks.h, weaks.c (SCM_I_WVECT_TYPE, SCM_I_SET_WVECT_TYPE): New.
+ (SCM_I_WVECT_N_ITEMS, SCM_I_SET_WVECT_N_ITEMS): New.
+ (SCM_WVECTF_NOSCAN, SCM_WVECT_NOSCAN_P): Removed.
+ (scm_weaks_prehistory): Removed.
+ (scm_i_init_weak_vectors_for_gc, scm_i_mark_weak_vector,
+ scm_i_mark_weak_vectors_non_weaks,
+ scm_i_remove_weaks_from_weak_vectors, scm_i_remove_weaks): New.
+ (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
+ scm_scan_weak_vectors): Removed.
+
+ * hashtab.h (scm_i_scan_weak_hashtables): New.
+ * hashtab.c (make_hash_table, scm_i_rehash): Do not use
+ SCM_WVECTF_NOSCAN.
+ (hashtable_print): Use SCM_HASHTABLE_N_ITEMS instead of
+ t->n_items.
+ (scan_weak_hashtables, scm_i_scan_weak_hashtables): Renamed former
+ to latter. Do not scan the alists themselves, this is done by the
+ weak vector code now. Just update the element count.
+
+ * vectors.h (SCM_I_WVECT_TYPE, SCM_I_WVECT_EXTRA): Renamed former
+ to latter. The type is now only part of the cell word.
+ (SCM_I_SET_WVECT_TYPE, SCM_I_SET_WVECT_EXTRA): Likewise.
+
+ * init.c (scm_i_init_guile): Do not call scm_weaks_prehistory.
+
+2005-07-18 Mikael Djurfeldt <mdj@d14n36.pdc.kth.se>
+
+ Some changes towards making it possible to run Guile on the EM64T
+ platform.
+
+ * gc.c (scm_gc_stats): Bugfix: Measure size of the type we are
+ mallocating for (unsigned long *bounds).
+
+ * hashtab.c (scm_i_rehash): Cast SCM_HASHTABLE_FLAGS (table) to
+ scm_t_bits before storing them in the type word.
+
+ * gc.c (tag_table_to_type_alist): Modified type of c_tag from
+ scm_t_bits to int.
+
+2005-07-12 Kevin Ryde <user42@zip.com.au>
+
+ * eval.c (scm_dbg_make_iloc): Should be SCM_IFRAMEMAX and
+ SCM_IDISTMAX, and cast uints through scm_t_bits to make gcc happy.
+ * pairs.c (scm_error_pair_access): Use scm_from_locale_string rather
+ than scm_makfrom0str.
+ Reported by Ken Raeburn.
+
+ * gc-card.c (scm_dbg_gc_get_bvec): Change return from long* to
+ scm_t_c_bvec_long*, gcc 4 doesn't like different pointer targets when
+ returning SCM_GC_CARD_BVEC.
+
+ * pairs.c (scm_error_pair_access): Plain ascii ' in error message
+ rather than latin-1 acute accent, the latter may not print on all
+ terminals.
+
+ * srfi-13.c (scm_string_filter, scm_string_delete): Strip leading and
+ trailing deletions, so as to return a substring if those are the only
+ changes.
+
+2005-07-10 Kevin Ryde <user42@zip.com.au>
+
+ * socket.c (scm_inet_pton, scm_inet_ntop): Pointer cast to scm_t_uint8
+ for scm ipv6 funcs, gcc 4 is picky about char* vs uchar*.
+ (scm_getsockopt, scm_accept, scm_getsockname, scm_getpeername,
+ scm_recvfrom) Use socklen_t, gcc 4 is picky about int* vs socklen_t*.
+
+2005-07-01 Han-Wen Nienhuys <hanwen@xs4all.nl>
+
+ * gc-card.c (scm_i_card_statistics): init tag.
+
+ * gc.c (tag_table_to_type_alist): check type of tag. Should be integer.
+