X-Git-Url: https://git.hcoop.net/bpt/guile.git/blobdiff_plain/fc9c5d0684420f55858ce28e54d85e1eb4fdbde0..582a4997abc8b34ac6caf374fda8ea3ac65bd571:/libguile/ChangeLog diff --git a/libguile/ChangeLog b/libguile/ChangeLog index 24bc5ca8c..a3c9767f9 100644 --- a/libguile/ChangeLog +++ b/libguile/ChangeLog @@ -1,6 +1,1972 @@ +2008-08-25 Ludovic Courtès + + * Makefile.am (AM_CFLAGS): New. + (guile_CFLAGS, libguile_la_CFLAGS): Use it. + +2008-08-20 Ludovic Courtès + + * eval.c, filesys.c, gc.c, numbers.c, stime.c, threads.c: Don't + define `_GNU_SOURCE' explicitly as it's now defined in + thanks to `AC_USE_SYSTEM_EXTENSIONS'. + +2008-08-19 Han-Wen Nienhuys + Ludovic Courtès + + * 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 + + * 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 + + From Thiemo Seufer : + + * 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 + + * 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 + + * strings.c (scm_c_symbol_length): New function. + * strings.h (scm_c_symbol_length): New declaration. + +2008-07-04 Ludovic Courtès + + * posix.h (scm_i_locale_mutex): Don't declare as `SCM_INTERNAL' + since it's needed by `libguile-i18n'. Reported by Patrick + Horgan . + + * __scm.h (SCM_INTERNAL): Add `extern' so that these symbols are + not considered as "common" by GCC 4.3. Reported by Patrick + Horgan . + +2008-06-28 Ludovic Courtès + + * 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 . + +2008-06-02 Ludovic Courtès + + * deprecated.c (maybe_close_port): Rename EXCEPT to EXCEPT_SET + to workaround `#define except' on Tru64. Reported by Peter + O'Gorman . + +2008-05-31 Ludovic Courtès + + * __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 + + * 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 + + * discouraged.c: Expand DEFFROM and DEFTO macros, to avoid + compiler warnings about excess semicolons. (Reported by Didier + Godefroy.) + +2008-05-08 Neil Jerram + + * 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 + + * 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 + + * c-tokenize.lex: #define YY_NO_INPUT. + +2008-04-26 Ludovic Courtès + + * read.c (scm_read_sexp): Remove extraneous semi-colon at + end-of-line, which broke compilation with GCC 2.7. Reported by + Alain Guibert . + +2008-04-24 Ludovic Courtès + + * 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 , not + "gen-scmconfig.h" since that file is under `$(builddir)'. + +2008-04-16 Ludovic Courtès + + * ports.c (scm_getc, scm_putc, scm_puts): Moved... + * inline.h: ... here. Noticeably improves `read' performance. + +2008-04-15 Ludovic Courtès + Julian Graham + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + 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 + + * 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 + + * numbers.c: Only define scm_from_complex_double if it will + actually be used. + +2008-03-08 Julian Graham + + * 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 + + * 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 + + * 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 + + * _scm.h (errno): Remove declarations that have been there + forever, and are known to conflict on some platforms with that + provided by , which we include unconditionally. If + doesn't provide a errno declaration, what is the point + of it? + +2008-02-23 Ludovic Courtès + + * 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 . + +2008-02-22 Ludovic Courtès + + * 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 + + Fix bug #22369. + + * goops.c (scm_add_slot): Add `SCM_UNDEFINED' as last argument + to `scm_list_n ()'. Thanks to René Köcher + . + +2008-02-17 Ludovic Courtès + + * script.c (scm_compile_shell_switches): Update copyright year. + +2008-02-16 Ludovic Courtès + + * gc_os_dep.c: Add NetBSD/alpha support. Patch by Greg Troxel + . + +2008-02-12 Ludovic Courtès + + * guile-snarf.in (tempdir): Honor `$TMPDIR'. + +2008-02-11 Neil Jerram + + * 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 + + Fix bug #21378. + Thanks to David Diffenbaugh . + + * 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 + + * 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 + + * 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 + + * 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 + ). + +2008-02-05 Neil Jerram + + * 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 + + * 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 + + * COPYING: Removed. + + * __scm.h, _scm.h, weaks.c: Update copyright statement to LGPL. + +2008-01-18 Neil Jerram + + * 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 + + * 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 + + * __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 + + * 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 . + +2007-10-27 Ludovic Courtès + + * 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 + + * 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 + + 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 + + * read.c (CHAR_IS_BLANK_): Add `\r' (ASCII 0x0d). This fixes a + regression compared to 1.8.2. Reported by Puneet + . + +2007-10-10 Ludovic Courtès + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * read.c (flush_ws): Handle SCSH block comments. + +2007-09-03 Ludovic Courtès + + 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 + + * 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 + + * socket.c (scm_make_socket_address): Free C_ADDRESS after use. + This fixes a memory leak. + +2007-08-26 Han-Wen Nienhuys + + * 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 + + * 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 + + * 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 + + * stime.c: Add #define _REENTRANT, to get gmtime_r() prototype on + solaris 2.6. Reported by anirkko. + +2007-07-29 Ludovic Courtès + + * 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 + * eval.c: Include Gnulib's . + * filesys.c: Likewise. + * read.c: Don't include and don't provide an + `strncasecmp ()' replacement; use Gnulib's and + `strncasecmp ()' instead. + +2007-07-25 Ludovic Courtès + + * 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 + + 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 + + * script.c (scm_compile_shell_switches): Updated copyright year. + +2007-07-11 Ludovic Courtès + + * 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 . + +2007-06-26 Ludovic Courtès + + * 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 + + * 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 + + * 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 + + * 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 + + 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 + + * 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 + + * numbers.c (carg): provide carg, cexp, clog in case they are + missing. + +2007-03-12 Ludovic Courtès + + * 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 + + * struct.c, struct.h (scm_make_vtable): New function, providing + `make-vtable'. + * stacks.c (scm_init_stacks): Use it. + +2007-03-06 Kevin Ryde + + * 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 + + * 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 + + * 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 + + * i18n.c: Include "libguile/threads.h" and "libguile/posix.h" + unconditionally. Include and 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 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 + + * 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 + + * vector.c: remove comment as per kryde's request. + +2007-01-25 Kevin Ryde + + * 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 + + * 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 + + * 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 + + * 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 + + * throw.c (scm_ithrow): more refined error message: print symbols + too. + +2007-01-16 Kevin Ryde + + * 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 + + * 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 + + * read.c (s_scm_read_hash_extend): document #f argument to + read-hash-extend. + +2007-01-04 Kevin Ryde + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * scmsigs.c: Conditionalize process.h, add io.h believe needed for + _pipe on mingw. + +2006-12-14 Kevin Ryde + + * 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 and needed by mingw. Copy the + fallback pipe() using _pipe() from posix.c. Reported by Nils Durner. + +2006-12-13 Kevin Ryde + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * script.c (scm_shell_usage): Note need for subscription to bug-guile@gnu.org. + +2006-11-08 Ludovic Courtès + + * 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 + + * 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 + + 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 + + * 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 + + * 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 + + * 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 + + * _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 + + * numbers.c, numbers.h (scm_log, scm_log10, scm_exp, scm_sqrt): New + functions. + +2006-09-20 Ludovic Courtès + + * srfi-14.c: Include . 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 + + * socket.c (scm_init_socket): Add MSG_DONTWAIT. + (scm_recvfrom): Update docstring from manual. + +2006-08-31 Rob Browning + + * 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 + + * backtrace.c (scm_display_backtrace_with_highlights): Minor + improvements to docstring. + (scm_backtrace_with_highlights): Analogous improvements. + +2006-08-12 Kevin Ryde + + * 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 + + * stacks.c (scm_last_stack_frame): Correct docstring (returns a + frame, not a stack). + +2006-07-25 Kevin Ryde + + * 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 + + * 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 + + * eval.c, filesys.c (alloca): Update etc blob, per current + autoconf recommendation. Should fix Solaris 10 reported by Claes + Wallin. + + * threads.c: Include , needed for memset() which is used by + FD_ZERO() on Solaris 10. Reported by Claes Wallin. + +2006-07-18 Rob Browning + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * eval.c, filesys.c: Add malloc.h to get alloca() on mingw. Reported + by "The Senator". + +2006-05-27 Marius Vollmer + + * srfi-4.c, strings.c: Replace SCM_C_INLINE with + SCM_C_INLINE_KEYWORD. Thanks to Mark Gran! + +2006-05-26 Kevin Ryde + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * _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 + + * posix.c (scm_mkstemp): Update docstring from the manual, in + particular file mode 0600 is not guaranteed. + +2006-04-17 Kevin Ryde + + * _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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * unif.c (bitvector_set): Use h->writable_elements not h->elements. + +2006-02-26 Kevin Ryde + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * socket.c (scm_c_make_socket_address): Pass address_size pointer + on to scm_fill_sockaddr call. + +2006-02-04 Neil Jerram + + * 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 + + * gc-mark.c (scm_mark_all): Fix c99-isms "loops" and "again" variables. + +2006-02-03 Kevin Ryde + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * gc-card.c ("sweep_card"): don't count scm_tc_free_cell for + free_count. + +2005-11-29 Han-Wen Nienhuys + + * regex-posix.c (s_scm_regexp_exec): list the offending pattern + upon error + +2005-12-29 Neil Jerram + + * 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 + + * 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 + + 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 + + * 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 + + * 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 + + * srfi-13.c (scm_string_append_shared): No copying if just one + non-empty string in args. + +2005-11-26 Kevin Ryde + + * 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 + + * 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 + + * gc.c (scm_weak_vectors): Removed. + +2005-11-12 Kevin Ryde + + * socket.c (scm_setsockopt): Missing @defvar in docstring. Reported + by Ludovic Courtès. + +2005-11-07 Marius Vollmer + + * 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 + + * 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 + + * 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 + + * 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 + + 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 + + * 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 + + * eval.c (eval_letrec_inits): New. + (CEVAL): Eval letrec initializer forms using eval_letrec_inits. + +2005-08-12 Marius Vollmer + + * numbers.c: Use scm_from_bool instead of SCM_BOOL. Thanks to + Peter Gavin! + +2005-08-12 Kevin Ryde + + * srfi-13.c (scm_string_for_each_index): Correction to docstring. + +2005-08-06 Kevin Ryde + + * 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 + + * 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 + + * 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 + + 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 + + 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 + + * 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 + + * 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 + + * gc-card.c (scm_i_card_statistics): init tag. + + * gc.c (tag_table_to_type_alist): check type of tag. Should be integer. + 2005-06-18 Han-Wen Nienhuys - * fports.c (s_scm_open_file): add the b flag for binary to the doc string. + * fports.c (s_scm_open_file): add the b flag for binary to the doc + string. 2005-06-25 Kevin Ryde @@ -47,7 +2013,7 @@ 2005-06-09 Han-Wen Nienhuys * gc.c (tag_table_to_type_alist): convert tag number to "tag %d" - string, so live object stats can be sorted with string @@ -78,21 +2044,21 @@ From Jan Nieuwenhuizen . Thanks! * hashtab.h: Bugfix: use SCM_API (WAS: extern). - + * socket.c: Remove obsolete comment about socklen_t. (s_scm_setsockopt)[!HAVE_IP_MREQ]: Do not use ip_mreq code. - + * numbers.h (isnan)[__MINGW32__]: Remove. - + * Makefile.am (gen_scmconfig_SOURCES): Bugfix: Add DEFAULT_INCLUDES when cross compiling. - + * threads.c (ETIMEDOUT, pipe)[__MINGW32__]: Add defines. * stime.c (scm_strftime)[!HAVE_TM_ZONE]: Use SCM_SIMPLE_VECTOR_REF instead of SCM_VELTS. (Changed slightly from Jan's patch.) - + 2005-05-22 Marius Vollmer * unif.c (scm_make_shared_array): Add old base to new base since @@ -105,7 +2071,7 @@ 2005-05-12 Neil Jerram Mac OS X compile warning fixes, reported by Richard Todd. - + * unif.c (scm_i_read_array): Declare rank as ssize_t, to guarantee that it is signed. @@ -125,8 +2091,8 @@ 2005-05-11 Neil Jerram - Fix C99isms reported by Ludovic Courtès: - + Fix C99isms reported by Ludovic Courtès: + * threads.c (s_scm_lock_mutex): Don't declare msg in middle of code. @@ -201,7 +2167,7 @@ non-NULL. Always use a NULL closure. (scm_hash_fn_create_handle_x): Also rehash when table contains too few entries. - + 2005-03-29 Marius Vollmer * hashtab.h, hashtab.c (scm_hash_fx_remove_x): Removed delete_fn @@ -211,7 +2177,7 @@ (scm_hashx_remove_x): Likewise. Also, exported to Scheme. (scm_hash_clear): Accept plain vectors as hashtables. (scm_delx_x): Removed. - + 2005-03-28 Han-Wen Nienhuys * inline.h (scm_double_cell): use __asm__ iso. asm, to maintain @@ -223,7 +2189,7 @@ scm_root. * threads.c: Removed fprintf debug statements. - + 2005-03-24 Neil Jerram * debug.c (scm_make_memoized): Restore use of SCM_UNPACK. @@ -240,7 +2206,7 @@ 2005-03-18 Kevin Ryde * arbiters.c (FETCH_STORE) [generic C]: Should be - scm_i_scm_pthread_mutex_lock/unlock now. Reported by Ludovic Courtès. + scm_i_scm_pthread_mutex_lock/unlock now. Reported by Ludovic Courtès. 2005-03-13 Kevin Ryde @@ -323,13 +2289,13 @@ simple things inside that region. (scm_make_fluid, scm_make_dynamic_state): Lock fluid_admin_mutex while adding to the global lists. - + 2005-03-08 Marius Vollmer libltdl is no longer distributed. We expect it to be installed already. - + * Makefile.am (INCLUDES): Removed @LTDLINCL@. (libguile_la_LIBADD): Removed @LIBLTDL@. @@ -347,14 +2313,14 @@ * throw.c (scm_ithrow): Abort when scm_i_critical_section_level is not zero. - + * threads.h, threads.c (scm_frame_lock_mutex): New. (scm_frame_critical_section): Take mutex as argument. (framed_critical_section_mutex): New, used as default for above. (scm_init_threads): Initialize it. (scm_threads_prehistory): Do not initialize thread_admin_mutex and scm_i_critical_section_mutex; both are initialized statically. - + * continuation.c, deprecated.c, goops.c, guardians.c keywords.c, libguile_la-arrays.loT, objprop.c, ports.c, smob.c, sort.s, srcprop.c, stime.c, struct.c, throw.c, regex-posix.c: Include @@ -368,7 +2334,7 @@ section. (scm_dynthrow): Abort when scm_i_critical_section_level is not zero. - + 2005-03-04 Marius Vollmer * threads.c (scm_try_mutex): Renamed argument for consistency. @@ -381,11 +2347,11 @@ Big merge from the mvo-thread-cleanup branch. The main changes are: - + - The dynamic roots functionality has been split into dynamic states and continuations barriers. Fluids have been reimplemented and can now be garbage collected. - + - Initialization of Guile now works in a multi-thread friendly manner. Threads can freely enter and leave guile mode. @@ -396,13 +2362,13 @@ - Signals are delivered via a pipe to a dedicated 'signal delivery thread'. - + - SCM_DEFER_INTS, SCM_ALLOW_INTS etc have been deprecated. * throw.c (scm_handle_by_message): Exit only the current thread, not the whole process. (scm_handle_by_message_noexit): Exit when catching 'quit. - + * scmsigs.c (take_signal, signal_delivery_thread, start_signal_delivery_thread, ensure_signal_delivery_thread, install_handler): Reimplemented signal delivery as explained in @@ -428,7 +2394,7 @@ when using pthreads. * null-threads.c, null-threads.h: Provide dummy definitions for the above symbols when not using pthreads. - + * modules.h, modules.c (scm_frame_current_module): New. * load.c (scm_primitive_load): Use scm_i_frame_current_load_port @@ -443,7 +2409,7 @@ Moved around some init funcs. Call scm_init_threads_default_dynamic_state. Register cleanup_for_exit with atexit. - + * hashtab.c (scm_hash_fn_create_handle_x, scm_hash_fn_remove_x): Use "!scm_is_eq" instead of "!=". @@ -455,7 +2421,7 @@ scm_after_gc_c_hook. (scm_permanent_object): Allocate outside of critical section. (cleanup): Removed. - + * fluids.h, fluids.c: Reimplemented completely. (SCM_FLUID_NUM, SCM_FAST_FLUID_REF, SCM_FAST_FLUID_SET): Reimplemented as functions. @@ -466,19 +2432,19 @@ scm_set_current_dynamic_state, scm_frame_current_dynamic_state, scm_c_with_dynamic_state, scm_with_dynamic_state, scm_i_make_initial_dynamic_state, scm_fluids_prehistory): New. - + * feature.c (progargs_fluid): New. (scm_program_arguments, scm_set_program_arguments): Use it instead of scm_progargs. (scm_init_feature): Allocate it. Also, only add "threads" feature when SCM_USE_PTHREAD_THREADS is true. - + * eval.c (scm_makprom): Use scm_make_recursive_mutex instead of scm_make_rec_mutex, with all the consequences. (scm_eval_x, scm_eval): Use scm_frame_begin etc instead of scm_internal_dynamic_wind. Handle dynamic states as second argument. - + * threads.h, threads.c (scm_internal_select): Renamed to scm_std_select and discouraged old name. (scm_thread_sleep, scm_thread_usleep): Likewise, as scm_std_sleep @@ -548,9 +2514,9 @@ respectively. * fluid.h (SCM_FLUIDP): Deprecated. - + * coop-threads.c: Removed. - + * continuations.h, continuations.c (scm_with_continuation_barrier, scm_c_with_continuation_barrier, scm_i_with_continuation_barrier): New. @@ -564,14 +2530,14 @@ current sleep. (scm_system_async_mark_for_thread): Do not use scm_current_thread since that might not work during early initialization. - + * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS, SCM_REDEFER_INTS, SCM_REALLOW_INTS): Deprecated by moving into deprecated.h and deprecated.c. Replaced all uses with SCM_CRITICAL_SECTION_START and SCM_CRITICAL_SECTION_END. (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): Removed. Replaced with SCM_CRITICAL_SECTION_START/END. - + * Makefile.am (modinclude_HEADER): Removed threads-plugin.h. (libguile_la_SOURCES): Added null-threads.c (EXTRA_libguile_la_SOURCES): Removed pthread-threads.c and @@ -591,8 +2557,8 @@ scm_frame_current_dynamic_state and scm_i_with_continuation_barrier. (scm_dynamic_root): Return current continuation barrier. - - + + 2005-02-28 Marius Vollmer * socket.c (scm_setsockopt): Handle IP_ADD_MEMBERSHIP and @@ -620,7 +2586,7 @@ the hashtable. (scm_hash_fn_create_handle_x): Likewise. * vectors.h (SCM_I_SET_WVECT_TYPE): New, for use in scm_i_rehash. - + 2005-02-10 Mikael Djurfeldt * unif.c (prototype_to_type): Bugfix: Don't compare prototype to @@ -658,7 +2624,7 @@ statistics on the number of live objects of each type. * gc-card.c (scm_i_tag_name): new function. - (scm_i_card_statistics): new function. + (scm_i_card_statistics): new function. 2005-01-24 Kevin Ryde @@ -701,14 +2667,14 @@ (scm_classes_initialized): Removed. (scm_class_of): Do not check it. (create_standard_classes): Do not set it. - + 2005-01-17 Marius Vollmer * objects.h, objects.c (scm_classes_initialized): New. (scm_class_of): Signal error when scm_classes_initialized is zero. * goops.c (create_standard_classes): Set scm_classes_initialized to one. - + * random.c (scm_random_solid_sphere_x): Use scm_c_generalized_vector_length instead of scm_uniform_vector_length. @@ -750,13 +2716,13 @@ (scm_init_srfi_4): Set mark function of smob when needed. Initialize scm_uint64_min, scm_uint64_max, scm_int64_min, scm_int64_max. - + Recognize 1.4 -e syntax. - + * script.c (sym_at, sym_atat, sym_main, all_symbols): New. (scm_compile_shell_switches): Use them to recognize and convert 1.4 "-e" syntax. - + 2005-01-12 Marius Vollmer * deprecated.h, deprecated.c, strings.h, strings.c: Turn all @@ -772,9 +2738,9 @@ (print_summary): New. (scm_init_deprecation): Initialize SCM_WARN_DEPRECATED instead of mode. - + Deprecated SCM_ARRAY* macros. - + * unif.h, unif.c, ramap.c, vectors.c, srfi-4.c, srfi-4.i.c (SCM_ARRAYP, SCM_I_ARRAYP): Renamed former to latter internal version. Changed all uses. @@ -793,11 +2759,11 @@ Moved from unif.h to unif.c. (scm_c_array_rank): New. (scm_array_rank): Reimplement using it. - + * deprecated.h, deprecated.c (SCM_ARRAYP, SCM_ARRAY_NDIM, SCM_ARRAY_CONTP, SCM_ARRAY_MEM, SCM_ARRAY_V, SCM_ARRAY_BASE, SCM_ARRAY_DIMS, scm_t_array): New deprecated versions. - + 2005-01-11 Marius Vollmer * ramap.c: Replace uses of scm_make_ra with scm_i_make_ra. @@ -817,7 +2783,7 @@ (scm_ra_set_contp): Deprecated, changed all uses to scm_i_ra_set_contp. (scm_cvref, scm_aind, scm_raprin1): Deprecated. - + 2005-01-10 Marius Vollmer * eval.c (scm_eval): Added example to docstring. Thanks to Issac @@ -829,7 +2795,7 @@ (scm_i_print_array): Print length information for arrays that need it. (scm_i_read_array): Parse it. - + * deprecated.h, deprecated.c (SCM_CHARS, SCM_UCHARS, SCM_LENGTH, scm_i_object_chars, scm_i_object_length): Brought back from the dead. @@ -865,7 +2831,7 @@ uvec_fast_ref since scm_array_handle_ref should be faster now. (coerce_to_uvec, scm_c_uniform_vector_ref, scm_c_uniform_vector_set_x): Likewise. - + * unif.h, unif.c, inline.h (scm_i_t_array_ref, scm_i_t_array_set): New. (scm_t_array_handle): Added ref, set, elements and @@ -883,12 +2849,12 @@ scm_bit_position, scm_bit_set_star_x, scm_bit_count_star, scm_bit_invert_x): Correctly multiply index with increment in the general case. - + * unif.c (scm_array_handle_set): Correctly execute only one alternative. D'Oh! (scm_list_to_typed_array, l2ra): Use scm_t_array_handle to fill the array; this covers all cases with much simpler code. - + * srfi-4.c (scm_uniform_element_size): Deprecated implementation as well. @@ -905,7 +2871,7 @@ (scm_i_print_array): Print zero rank arrays specially. (tag_to_type): Return #t for an empty tag, not the empty symbol. (scm_i_read_array): Allow zero rank arrays. - + 2005-01-07 Marius Vollmer * hashtab.h, hashtab.c (SCM_HASHTAB_BUCKET_LOC): Removed. @@ -916,9 +2882,9 @@ Removed ref_stack field. (PSTATE_STACK_REF, PSTATE_STACK_SET): New, for accessing the stack of a print state. Use them everywhere instead of ref_stack. - + * srfi-4.h (scm_uniform_element_size): Deprecated for real. - + * srfi-4.c: Include deprecation.h. * vectors.h, vectors.c, unif.h, unif.c, deprecated.h, @@ -933,12 +2899,12 @@ scm_vector_equal_p): Moved from vectors.[hc] to deprecated.[hc]. (scm_vector_equal_p, scm_i_vector_equal_p): Renamed former to latter. Changed use in eq.c. - + 2005-01-07 Marius Vollmer Make the uniform vector routines also deal with one dimensional arrays. - + * srfi-4.c (SCM_IS_UVEC): New, use it instead of SCM_SMOB_PREDICATE in this file. (is_uvec): Also recognize one-dimensional uniform numeric arrays @@ -955,13 +2921,13 @@ (scm_uniform_vector_to_list): Let uvec_to_list do all the checking. (scm_uniform_vector_length): Use uvec_length. - + 2005-01-06 Marius Vollmer * srfi-4.h, srfi-4.c (scm_c_uniform_vector_element_size, scm_c_uniform_vector_size): Removed. (scm_array_handle_uniform_element_size): New. - + * unif.h (scm_array_handle_ref, scm_array_handle_set): Changed type of POS parameter to be signed, positions can be negative. @@ -969,11 +2935,11 @@ scm_t_array_handle to properly call it. (scm_vector_get_handle, scm_generalized_vector_get_handle): Renamed former to latter, changed all uses. - + 2005-01-05 Marius Vollmer Updated bitvector routines to also use scm_t_array_handles. - + * unif.h (scm_bitvector_elements, scm_bitvector_writable_elements): Use a scm_t_array_handle and deliver offset, length and increment to caller. Changed all uses. @@ -988,7 +2954,7 @@ arrays is now SCM_UNSPECIFIED. The old special value SCM_BOOL_F was a valid value to fill bitvectors with, so it can't really be specialed out. - + 2005-01-04 Kevin Ryde * stime.c (scm_strftime): Free t.tm_zone produced by bdtime2c. @@ -1010,7 +2976,7 @@ so that it doesn't leak. (scm_stable_sort): Simply call scm_stable_sort_x on a copy of the list or vector. - + * ramap.c (scm_array_map_x): Do not try to convert fill value before filling, any necessary conversion is done while storing. @@ -1030,7 +2996,7 @@ vector elements API or simple vector API, as appropriate. Removed SCM_HAVE_ARRAYS ifdefery. Replaced all uses of SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET. - + * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_array_handle_uniform_elements, scm_array_handle_uniform_writable_elements, @@ -1040,10 +3006,10 @@ scm_t_array_handle, deliver length and increment. (scm_array_handle__elements, scm_array_handle__writable_elements): New. - + * gen-scmconfig.h.in (SCM_I_GSC_HAVE_ARRAYS): Removed. * gen-scmconfig.c: Hard code SCM_HAVE_ARRAYS to "1". - + * unif.h, unif.c (scm_t_array_handle, scm_array_get_handle, scm_array_handle_rank, scm_array_handle_dims, scm_array_handle_ref scm_array_handle_set, scm_array_handle_elements @@ -1055,7 +3021,7 @@ (scm_make_shared_array, scm_enclose_array): Correctly use scm_c_generalized_vector_length instead of scm_uniform_vector_length. - + * validate.h (SCM_VALIDATE_VECTOR, SCM_VALIDATE_VECTOR_OR_DVECTOR): use scm_is_simple_vector instead of SCM_VECTORP. @@ -1101,7 +3067,7 @@ No longer use creators to specify the type of an array. Creators expose the fact that arrays are wrapped around vectors, but that might change. - + * srfi-4.h (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector, scm_i_proc_make_u16vector, scm_i_proc_make_s16vector, scm_i_proc_make_u32vector, scm_i_proc_make_s32vector, @@ -1135,7 +3101,7 @@ (tag_to_type): New. (scm_i_read_array): Use scm_list_to_typed_array instead of scm_list_to_uniform_array. - + 2004-12-27 Marius Vollmer * unif.h, unif.c (scm_bitvector_elements): Made return value "const". @@ -1162,7 +3128,7 @@ scm_frame_uniform_vector_release_writable_elements): New. Takes crown of longest identifier yet. Changed all uses as required by the changes above. - + * vectors.h, vectors.c (scm_c_vector_set_x): Make return type void. (scm_is_vector, scm_vector_p, scm_vector_length, @@ -1182,7 +3148,7 @@ scm_uniform_vector_length. (scm_ramap, rafe): Use scm_c_vector_ref instead of SCM_VELTS. use scm_c_generalized_vector_ref instead of scm_uniform_vector_ref. - + 2004-12-23 Marius Vollmer * continuations.h, continuations.c (scm_t_contregs): New 'offset' @@ -1193,7 +3159,7 @@ scm_last_stack_frame, scm_stack_id): Use the new 'offset' member of continuations instead of calculating the offset ourselves. Relocate 'vect' member of scm_t_debug_frame. - + 2004-12-16 Kevin Ryde * ramap.c (scm_array_map_x): Check for at least one source argument. @@ -1237,7 +3203,7 @@ use of an array as their storage 'vector'. When all generalized vectors are allowed as storage, including one-dimensional arrays, this will no longer work.) - + * unif.h, unif.c: (scm_tc16_enclosed_array, SCM_ENCLOSED_ARRAYP): New. (exactly_one_third, singp): Removed. @@ -1277,7 +3243,7 @@ explicitly. (scm_init_unif): Initialize scm_tc16_enclosed_array smob. Use scm_i_print_array as printer for scm_tc16_array. - + 2004-11-10 Marius Vollmer * ramap.c (cind): Changed second arg to be pointer to long instead @@ -1293,7 +3259,7 @@ in terms of scm_uniform_vector_read_x and scm_uniform_vector_write, respectively. Strings and bitvector support has been dropped. - + * srfi-4.h, srfi-4.c: Do not include , include the needed files directly. Include config.h, and when available. @@ -1316,7 +3282,7 @@ (make_uvec): ...but not here. (coerce_to_uvec): Use new generalized vector functions to handle all kinds of vectors in one go. - + * tags.h (scm_tc7_bvect): Renamed to scm_tc7_unused7, renaming the remaining scm_tc7_unused tags to get a neatly ordered list. @@ -1333,7 +3299,7 @@ scm_is_generalized_vector, scm_c_generalized_vector_length, scm_c_generalized_vector_ref, scm_c_generalized_vector_set_x): New. - + * unif.h, unif.c (scm_bitvector_p, scm_bitvector, scm_make_bitvector, scm_bitvector_length, scm_bitvector_ref, scm_bitvector_set_x, scm_list_to_bitvector, scm_bitvector_to_list, @@ -1386,7 +3352,7 @@ 2004-11-02 Marius Vollmer - Mac OS X and OpenBSD compatibility patches from Andreas Vögele. + Mac OS X and OpenBSD compatibility patches from Andreas Vögele. Thanks! * backtrace.c (scm_display_backtrace_with_highlights): Join the @@ -1418,7 +3384,7 @@ * srfi-4.h, srfi-4.c (scm_frame_uniform_vector_release): New. * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use it to get more efficient access to the u32vector. - + * tags.h (scm_tc7_llvect, scm_tc7_uvect, scm_tc7_fvect, scm_tc7_dvect, scm_tc7_cvect, scm_tc7_svect, scm_tc7_byvect, scm_tc7_ivect): Renamed to scm_tc7_unused_1 to scm_tc7_unused_8. @@ -1434,7 +3400,7 @@ * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use u32vectors instead of old-sytle uvectors. - + * convert.c, convert.i.c: Rewritten completely, using scm_any_to_u8vector, etc and other new-style uniform vector functions. @@ -1459,7 +3425,7 @@ return creators. (scm_make_uve): Use scm_call_1 instead of scm_call_2 with a second arg of SCM_UNDEFINED. The latter is wrong. - + * unif.h, unif.c (scm_make_u1vector): New, but only temporary. (make_uve): Removed. (scm_i_proc_make_vector, scm_i_proc_make_string, @@ -1491,7 +3457,7 @@ Updated all tables and generic functions to support them. (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector, etc): New. (scm_init_srfi_4): Initialize them. - + * srfi-4.i.c (scm_take_u8vector, etc): use uvec_sizes instead of sizeof(CTYPE) as explained in the comment. @@ -1508,7 +3474,7 @@ vector. The plan is to gradually replace one type after the other until none is left and then to consider general cleanups and optimizations. - + * srfi-4.h, srfi-4.i.c (scm_u8vector_elements, etc): New. * srfi-4.h, srfi-4.c (scm_uniform_vector_p, @@ -1570,7 +3536,7 @@ requested. * convert.c (scm_c_scm2chars, scm_c_chars2scm, scm_c_chars2byvect): Use a s8vector instead of a scm_tc7_byvect. - + 2004-10-26 Marius Vollmer * numbers.h, numbers.c (scm_i_print_double): New. @@ -1601,11 +3567,11 @@ (scm_uint2str): New, for scm_t_uintmax. (scm_iint2str): Argument type changed to scm_t_intmax, reimplemented in terms of scm_uint2str. - + * print.c, print.h (scm_uintprint): New, for printing scm_t_uintmax values. (scm_intprint): Argument type changed to scm_t_intmax. - + * sort.c (quicksort, scm_merge, scm_merge_list_x, scm_merge_list_step, scm_merge_vector_step): Inserted SCM_TICKs at strategic places so that the loops can be interrupted. @@ -1614,7 +3580,7 @@ "-I$(top_srcdir)/libguile-ltdl". (libguile_la_LIBADD): Use @LIBLTDL@ instead of "../libguile-ltdl/libguile-ltdl.a". - + * guile.c, dynl.c: Switched to using libltdl directly. Replaced all references to scm_lt_* with just lt_*. Include instead of . @@ -1627,12 +3593,12 @@ quicksort to fail, it just put all the burdon on the insertion sort and was thus very slow. Thanks to Rolan Orre for reporting the slowness! - + 2004-10-19 Marius Vollmer * numbers.c (scm_i_range_error): New. * conv-integer.i.c, conv-uinteger.i.c: Use it instead of - scm_out_of_range. + scm_out_of_range. * sort.c (scm_restricted_vector_sort_x): Validate startpos <= endpos. State inclusiveness/exclusiveness of bounds in docstring. @@ -1660,11 +3626,11 @@ Keywords no longer store a 'dash symbol'. Instead, they store a symbol with their real name. - + * keywords.h, keywords.c, deprecated.h, deprecated.c (SCM_KEYWORDP, SCM_KEYWORDSYM): Deprecated and implemented in terms of scm_is_keyword and scm_keyword_dash_symbol. - + * keywords.h, keywords.c, discouraged.h, discouraged.c (scm_make_keyword_from_dash_symbol, scm_keyword_dash_symbol, scm_c_make_keyword): Discouraged. @@ -1674,7 +3640,7 @@ (scm_is_keyword, scm_from_locale_keyword, scm_from_locale_keywordn): New. - * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword. + * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword. * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): Use scm_from_locale_keyword instead of scm_c_make_keyword. @@ -1732,7 +3698,7 @@ (libguile_la_LIBADD): Removed THREAD_LIBS_LOCAL, which is unused now. (libpath.h): Put GUILE_CFLAGS in the build-info. - + 2004-09-23 Marius Vollmer * print.h (scm_print_state): Added highlight_objects. @@ -1744,14 +3710,14 @@ * backtrace.h, backtrace.c (scm_display_backtrace_with_highlights, scm_backtrace_with_highlights): New. Set highlight_objects of printstate. - + * error.c (scm_error_scm): Document new meaning of data/rest argument for out-of-range and wrong-type-arg errors. (scm_out_of_range, scm_out_of_range_pos, scm_wrong_type_arg, scm_wrong_type_arg_msg): Pass bad_value in rest argument of exception so that it gets highlighted in the backtrace. Don't talk about "argument" when not giving a position. - + * throw.c (handler_message): The rest argument is the fourth argument, not everything after the third. Call scm_display_backtrace_with_highlights, passing the rest argument @@ -1815,8 +3781,8 @@ * strings.h, strings.c (scm_substring_read_only, scm_c_substring_read_only, scm_i_substring_read_only): New. (RO_STRING_TAG, IS_RO_STRING): New. - (scm_i_string_writable_chars): Bail on read-only strings. - + (scm_i_string_writable_chars): Bail on read-only strings. + * read.c (scm_lreadr): use scm_c_substring_read_only for string literals, thus making them read-only as specified by R5RS. @@ -1830,8 +3796,8 @@ * numbers.h, numbers.c: Include in numbers.h, not in numbers.c. (scm_to_mpz, scm_from_mpz): New. - Thanks to Andreas Vögele! - + Thanks to Andreas Vögele! + * read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not just on a line of its own. @@ -1839,10 +3805,10 @@ scm_string_tabulate, string_upcase_x, string_down_case_x, string_titlecase_x, string_reverse_x, scm_string_tokenize): Use size_t instead of int for indices into strings. Make sure that no - over- or underflow occurs. Thanks to Andreas Vögele! + over- or underflow occurs. Thanks to Andreas Vögele! (scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended' indices, which can also be negative. - + 2004-09-20 Marius Vollmer * gc-mark.c (SCM_MARK_BACKING_STORE): Removed, it was unused. @@ -1861,7 +3827,7 @@ * filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it causes too many problems elsewhere (glibc, freebsd, mingw). Reported - by Andreas Vögele. + by Andreas Vögele. 2004-09-08 Marius Vollmer @@ -1880,7 +3846,7 @@ (scm_lreadr): Abort on seeing "#!", which should no longer happen. (skip_scsh_block_comment): Use scm_input_error instead of scm_misc_error in case of EOF. - + 2004-09-07 Kevin Ryde * numbers.c (scm_integer_expt): Reject exponent +/-inf. @@ -1954,7 +3920,7 @@ scm_i_string_chars et al. Copious scm_remember_upto_heres have been inserted. Made sure that no internal string pointer is used across a SCM_TICK or a possible GC. - + * script.c (scm_compile_shell_switches): Use scm_from_locale_string instead of scm_makfrom0str. @@ -1969,7 +3935,7 @@ * srfi-13.c, srfi-13.h, srfi-14.c, srfi-14.h: New files. * strop.h, strop.c: Removed, they are now empty. * Makefile.am: Updated for new and removed files. - + * symbols.h, symbols.c (scm_string_ci_to_symbol): Moved here, next to scm_string_to_symbol. @@ -1983,7 +3949,7 @@ scm_string_geq_p, scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p): Use scm_string_eq, etc instead of explicit code. - + * deprecated.c, load.c, posix.c, unif.c, symbols.c: Include "srfi-13.h" instead of "strop.h". @@ -2001,14 +3967,14 @@ scm_i_string_char, scm_i_string_writable_chars): Use it. (scm_i_substring_copy): Make START argument optional for C callers, for upcoming SRFI-13 integration. - + 2004-08-21 Marius Vollmer From Richard Todd, Thanks! - + * script.c (scm_compile_shell_switches): added '-L' switch to add to the %load-path. - + 2004-08-21 Dirk Herrmann * eval.c (unmemoize_exprs): When dropping internal body markers @@ -2026,7 +3992,7 @@ scm_i_string_writable_chars doesn't give that. Fixed by letting mkstemp modify a locale version of the tmpl argument and copying the result back into tmpl. - + * strop.c (scm_substring_move_x): Store into str2, not str1. 2004-08-20 Kevin Ryde @@ -2045,7 +4011,7 @@ New string implementation, with copy-on-write strings and mutation-sharing substrings, and a new internal string API. Symbols can now share memory with strings. - + * tags.h (scm_tc7_stringbuf): New tag. * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length, @@ -2100,12 +4066,12 @@ (scm_i_thread_wake_up): Unlock all threads, including ourselves, call scm_i_enter_guile. (scm_thread_mark_stacks): Expect all threads to be suspended. - + * gc.h, gc.c (scm_i_gc_admin_mutex): New, to protect scm_gc_mallocated, for now. (scm_init_storage): Initialize it. * gc-malloc.c (descrease_mtrigger, increase_mtrigger): Use it. - + * gc-mark.c (scm_gc_mark_dependencies): Call scm_i_string_mark, scm_i_stringbuf_mark and scm_i_symbol_mark, as appropriate. * gc-card.c (scm_i_sweep_card): Call scm_i_string_free, @@ -2148,7 +4114,7 @@ (scm_recv, scm_send, scm_recvfrom, scm_sendto): Use SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and SCM_STRING_LENGTH. - + * simpos.c (scm_system): Convert SCM strings to locale strings instead of accessing their internals. @@ -2172,12 +4138,12 @@ (scm_basename, scm_dirname): Use SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and SCM_STRING_LENGTH. - + * extensions.c (load_extension): Convert lib and init to locale strings instead of accessing the internals directly. (scm_c_load_extension): Use scm_from_locale_string instead of scm_makfrom0str. - + * fports.h, fports.c (scm_i_fdes_to_port): New, like scm_fdes_to_port, but take mode bits directly instead of as a C string. @@ -2196,7 +4162,7 @@ (scm_void_port): Implement using above. (scm_sys_make_void_port): Use scm_i_void_port together with scm_i_mode_bits to avoid accessing internals of SCM string. - + * strings.h, strings.c (scm_i_get_substring_spec): New. * socket.c, rw.c, deprecated.h, validate.h @@ -2205,7 +4171,7 @@ scm_to_locale_string, etc. (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated. Replaced as above, plus scm_i_get_substring_spec. - + * regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c, hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c, strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use @@ -2223,7 +4189,7 @@ (scm_putenv): Rewritten to use only C strings. (scm_setlocale, scm_crpt): Convert argument strings to locale strings. - + 2004-08-11 Marius Vollmer * load.c (scm_primitive_load_path): Do not check for absolute @@ -2267,7 +4233,7 @@ (scm_string_append): Use memcpy instead of explicit loop. Do not use register keyword. Use plain 'char' instead of 'unsigned char'. - + * strports.c (scm_mkstrport): Use SCM_I_STRING_UCHARS instead of SCM_STRING_UCHARS. Use SCM_I_STRINGP instead of SCM_STRINGP. @@ -2283,7 +4249,7 @@ SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and SCM_I_STRING_LENGTH, respectively. (gh_scm2newstr): Implement in terms of scm_to_locale_string. - + * environments.c: Instead calling scm_puts on the SCM_STRING_CHARS of a string, call scm_display on the string itself. @@ -2309,7 +4275,7 @@ scm_error, this avoids the back and forth conversion of SUBR and MESSAGE and also plugs a memory leak. (scm_error): Call scm_error_scm. - + * backtrace.c: Replaced SCM_STRINGP with scm_is_string. (display_header): Print FNAME when it is true, not merely when it is a string. @@ -2317,7 +4283,7 @@ * strings.h (SCM_SET_STRING_LENGTH, SCM_SET_STRING_CHARS): Removed unceremoniously. They were unused by Guile itself, and external use should stop immediately. - + 2004-08-10 Marius Vollmer @@ -2325,7 +4291,7 @@ scm_truncate): Renamed to scm_c_round and scm_c_truncate; deprecated versions installed in deprecated.h and deprecated.c. Changed all uses. - + 2004-08-06 Rob Browning * net_db.c (scm_resolv_error): don't cause an exception while @@ -2355,7 +4321,7 @@ stat on the filename, to be certain a file rename can't mean we get info on one filesystem object but open another. This fstat usage is similar to Emacs copy-file. - + * posix.c (scm_setgroups): Enhance docstring, per doc/ref/posix.texi. * simpos.c (scm_system_star): Change scm_from_long to scm_from_int on @@ -2377,7 +4343,7 @@ New. (scm_make_complex): Discouraged by moving to discouraged.h and discouraged.c. Replaced all uses with scm_c_make_rectangular. - + * discouraged.h, discouraged.c, numbers.c, numbers.h (scm_is_rational): New. (scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big, @@ -2393,7 +4359,7 @@ explicit code. (scm_from_double): Do not implement in terms of scm_make_real, use explicit code. - + 2004-08-02 Marius Vollmer * init.c (scm_init_guile_1): Call scm_i_init_discouraged. @@ -2425,7 +4391,7 @@ * numbers.h, numbers.c: Removed GUILE_DEBUG code. (scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big, scm_i_ptrdiff2big): Removed. - (scm_i_long2big, scm_i_ulong2big): New, explicit definitions. + (scm_i_long2big, scm_i_ulong2big): New, explicit definitions. * conv-integer.i.c, conv-uinteger.i.c: Use them instead of explicit code. @@ -2479,7 +4445,7 @@ SCM_T_INT64_MIN, SCM_T_INT64_MAX, SCM_T_UINT64_MAX, SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, SCM_T_UINTMAX_MAX): Moved definition into __scm.h, using new SCM_I_TYPE_MIN, etc. - + * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate the functions below. @@ -2494,11 +4460,11 @@ (scm_to_signed_integer, scm_to_unsigned_integer, scm_from_signed_integer, scm_from_unsigned_integer): Generate via conv-integer.i.c and conv-uinteger.i.c, as well. - + * number.h (scm_to_ssize_t, scm_to_size_t): Use the new SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX, and SCM_I_SIZE_MAX macros for the limits. Those are always defined. - + 2004-07-29 Kevin Ryde * posix.c (scm_ttyname): Use scm_i_misc_mutex for thread safety. @@ -2518,7 +4484,7 @@ Reimplement using scm_is_false, scm_is_true, scm_is_bool, and scm_from_bool, respectively. (SCM_NINUMP): Added. - + * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into deprecated.h. Replaced all uses with scm_is_eq. @@ -2539,7 +4505,7 @@ * dynwind.c (scm_i_dowinds): Removed unused code that would call the unexisting scm_cross_dynwind_binding_scope for inums on the windlist. - + 2004-07-10 Marius Vollmer * socket.c (ipv6_net_to_num, scm_from_ipv6): Renamed @@ -2550,7 +4516,7 @@ an IPv& byte-wise address to a SCM integer. Changed all uses. (bignum_in_ipv6_range_p, VALIDATE_INET6): Removed, their function is now done by scm_to_ipv6. - + * numbers.c (scm_to_signed_integer, scm_to_unsigned_integer): dot not accept inexact integers. @@ -2584,7 +4550,7 @@ use CHAR_BIT instead of hardcoding 8. (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used SCM_I_LLONG_MIN etc. instead. - + * numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to SCM_I_MAKINUM and changed all uses. * deprecated.h, deprecated.c (SCM_MAKINUM): Newly deprecated. @@ -2612,7 +4578,7 @@ scm_from_uint8, scm_from_int16, scm_from_uint16, scm_from_int32, scm_from_uint32, scm_from_int64, scm_from_uint64, scm_from_intmax, scm_from_uintmax): New. - + 2004-07-06 Marius Vollmer * tags.h (scm_is_eq): New. @@ -2636,7 +4602,7 @@ scm_from_uint, scm_from_long, scm_from_ulong, scm_from_size_t, scm_from_ssize_t, scm_is_real, scm_to_double, scm_from_double): New. - + 2004-07-05 Marius Vollmer * boolean.h, boolean.c (scm_is_true, scm_is_false, scm_from_bool, @@ -2696,7 +4662,7 @@ * gc_os_dep.c: update ifdefery for macosx. (scm_get_stack_base): separate result initialization from declaration to slience warnings with macosx and hp-ux using gcc - 3.3. Thanks to Andreas Vögele. + 3.3. Thanks to Andreas Vögele. 2004-06-13 Han-Wen Nienhuys @@ -2716,7 +4682,7 @@ unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let, unmemoize_letrec, unmemoize_letstar, unmemoize_or, unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc, - unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref, + unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref, unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x, unmemoize_builtin_macro): New static functions and symbols. @@ -2744,7 +4710,7 @@ macroexp and made static. Added new version of scm_macroexp that emits a deprecation warning and then calls macroexp. (scm_m_undefine): Issue deprecation warning. - + 2004-05-30 Dirk Herrmann * eval.c (lookup_global_symbol, literal_p, try_macro_lookup): @@ -2852,7 +4818,7 @@ Convert floating point numbers into strings with an arbitrary radix. Thanks to Richard Todd! - + * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will fit. (fx): Removed. @@ -2906,10 +4872,10 @@ 2004-05-02 Kevin Ryde * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under - --disable-deprecated. Reported by Andreas Vögele. + --disable-deprecated. Reported by Andreas Vögele. * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in - particular on HP-UX). Reported by Andreas Vögele. + particular on HP-UX). Reported by Andreas Vögele. * list.c (varargs.h): Remove, leave just stdarg.h which is all the code has support for. Fixes building with AIX cc, which is ansi but @@ -2920,14 +4886,14 @@ 2004-05-01 Kevin Ryde * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which - is now gone. Reported by Andreas Vögele. + is now gone. Reported by Andreas Vögele. 2004-04-28 Kevin Ryde * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT, mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for ctype.h tests, to avoid warnings from gcc on HP-UX about char as array - subscript. Reported by Andreas Vögele. + subscript. Reported by Andreas Vögele. Also cast through unsigned char to avoid passing negatives to those macros if input contains 8-bit values. @@ -2938,20 +4904,20 @@ * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to avoid warning from gcc 3.4. Reported by Hyperdivision. - + * numbers.c (scm_bit_extract): Use min instead of MIN. (MIN): Remove, this conflicts with similar macro defined by limits.h - on HP-UX. Reported by Andreas Vögele. + on HP-UX. Reported by Andreas Vögele. * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in - particular on HP-UX). Reported by Andreas Vögele. + particular on HP-UX). Reported by Andreas Vögele. * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t. - Reported by Andreas Vögele. + Reported by Andreas Vögele. * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long), for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported - by Andreas Vögele. + by Andreas Vögele. 2004-04-22 Dirk Herrmann @@ -3025,7 +4991,7 @@ rounding in x+0.5 when x is a big value already an integer. In certain hardware rounding cases x+0.5 can give an adjacent integer, leading to that as the result, when we really just wanted x itself. - + 2004-04-19 Dirk Herrmann * eval.c (scm_unmemocopy): Fixed unmemoization of let*. @@ -3075,7 +5041,7 @@ 2004-04-15 Kevin Ryde * cpp_sig_symbols.in: Add SIGSYS. - + * list.c (scm_append_x): Use iterative style, to avoid non-tail recursion. @@ -3092,9 +5058,9 @@ * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag. * chars.h (scm_init_chars): change scm_{upcase,downcase} to - scm_c_{up,down}case. + scm_c_{up,down}case. (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc - when hi-bit ASCII is subjected to SCM_MAKE_CHAR(). + when hi-bit ASCII is subjected to SCM_MAKE_CHAR(). 2004-04-06 Kevin Ryde @@ -3302,7 +5268,7 @@ SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on debugging conditionally. - + 2004-03-21 Kevin Ryde * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety. @@ -3374,10 +5340,10 @@ * gc.h (scm_gc_cells_collected): Removed duplicated declaration. Thanks to Bill Schottstaedt! - + * socket.h (scm_gethost): Removed prototype it is already in "net_db.h". Thanks to Bill Schottstaedt! - + 2004-02-18 Kevin Ryde * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word @@ -3470,7 +5436,7 @@ * read.h: Remove conditionally compiled last arg to scm_lreadparen. (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New. - + 2004-01-23 Han-Wen Nienhuys * eval.c (m_expand_body): remove stray variable new_body. @@ -3492,7 +5458,7 @@ * dynwind.h, dynwind.c (scm_frame_unwind, scm_frame_unwind_handler): Renamed and changed all uses. (scm_frame_rewind, scm_frame_rewind_handler): Likewise. - + 2004-01-11 Kevin Ryde * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x, @@ -3518,14 +5484,14 @@ case of only one fluid. (scm_with_fluid): New. (scm_c_with_fluid): Use frames instead of scm_c_with_fluids. - + * fluids.h, fluids.c (scm_frame_fluid): New. (scm_with_fluid): New. (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed. * dynwind.c (scm_frame_end): Do not use scm_i_dowinds. Instead, do the unwinding directly. It is simple enough. - + * dynwind.h, dynwind.c: Did the following renamings: scm_begin_frame -> scm_frame_begin, scm_end_frame -> scm_frame_end, @@ -3539,7 +5505,7 @@ scm_with_blocked_asyncs -> scm_frame_block_asyncs, scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs. Changed all uses. - + * ports.h, ports.c: Did the follwing renamings: scm_with_current_input_port -> scm_frame_current_input_port, scm_with_current_output_port -> scm_frame_current_output_port, @@ -3571,12 +5537,12 @@ (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New. (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above to protect SCM values. - + * dynwind.h (SCM_F_WIND_EXPLICITELY, SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn. Changed all uses. (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. - + 2004-01-05 Marius Vollmer * ports.h, ports.c (scm_with_current_input_port, @@ -3605,12 +5571,12 @@ rewinding. (scm_dynthrow): Do not call scm_dowinds, this is now done by copy_stack_and_call. - + 2004-01-04 Kevin Ryde * numbers.c (scm_less_p): Don't convert frac to float for compares, can give bad results due to rounding. - + * stime.c (scm_current_time, scm_gettimeofday): Add a comment about setzone/restorezone protection for DOS. @@ -3711,13 +5677,13 @@ 2003-11-18 Marius Vollmer Support for exact fractions from Bill Schottstaedt! Thanks! - + * print.c (scm_iprin1): Handle fractions. * objects.h (scm_class_fraction): New. - * objects.c (scm_class_fraction): New. + * objects.c (scm_class_fraction): New. (scm_class_of): Handle fractions. - + * hash.c (scm_hasher): Handle fractions. * numbers.c: New code for handling fraction all over the place. @@ -3740,7 +5706,7 @@ scm_rational_p): New prototypes. (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp, scm_i_print_fraction): New prototypes. - + * goops.c (create_standard_classes): Create "" class. * gc-mark.c (scm_gc_mark_dependencies): Handle fractions. @@ -4314,7 +6280,7 @@ * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness and to have non-integer types rejected as per other logical funcs. - + 2003-08-28 Kevin Ryde * gc.h (scm_remember_upto_here_1): Revise comments on the asm form. @@ -4351,7 +6317,7 @@ that parameter name. (scm_primitive_property_set_x): In docstring, VAL is the value parameter not CODE. - + 2003-07-27 Marius Vollmer * print.c (scm_print_symbol_name): handle more weird characters by @@ -4361,7 +6327,7 @@ * posix.c (scm_setgroups): New. Thanks to Paul Jarc! (scm_getgroups): Handle groups ids that don't fit into a fixnum. Don't use SCM_WRITABLE_VELTS. - + * gc.h (SCM_GC_SET_CELL_BVEC): New. * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to Matthias Koeppe! @@ -4439,13 +6405,13 @@ 2003-07-03 Han-Wen Nienhuys - * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)" + * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)" 2003-07-02 Han-Wen Nienhuys * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if clauses. - + 2003-06-29 Marius Vollmer * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops, @@ -4460,7 +6426,7 @@ * continuations.c: Redeclaration of getcontext() via the __asm__ ("getcontext") directive. - * continuations.h: Include instead of + * continuations.h: Include instead of . 2003-06-21 Kevin Ryde @@ -4491,7 +6457,7 @@ (scm_getspecific, scm_setspecific): Made these two function real part of the API. - * posix.c (s_scm_putenv): Added some code to make a + * posix.c (s_scm_putenv): Added some code to make a (putenv "FOO="), i.e. setting an empty string, work also on Win32 systems. Thanks to Kevin Ryde for the proposal. @@ -4539,7 +6505,7 @@ * read.c (scm_input_error): Pass arg list parameter to scm_error_scm, rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr. - + 2003-06-04 Dirk Herrmann * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT, @@ -4623,7 +6589,7 @@ 2003-05-30 Stefan Jahn - * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV + * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV appropriately for mingw32 hosts. * numbers.h: Defining copysign(), isnan() and finite() to @@ -4654,13 +6620,13 @@ * load.c (s_scm_search_path): Fixed absolute and relative path detections for native Windows platforms. - * gc.h, threads.h: Export some more symbols using SCM_API (necessary + * gc.h, threads.h: Export some more symbols using SCM_API (necessary to build on mingw32). - * gc-freelist.c ("s_scm_map_free_list", + * gc-freelist.c ("s_scm_map_free_list", "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME. - * fports.c (fport_fill_input): Disable use of + * fports.c (fport_fill_input): Disable use of fport_wait_for_input() on Win32 platforms. * filesys.c (s_scm_basename): Fixed __MINGW32__ code. @@ -4716,7 +6682,7 @@ branch. Some have been slightly rewritten. (scm_i_object_chars, scm_i_object_length): New, to support SCM_CHARS, SCM_UCHARS, and SCM_LENTH. - + 2003-05-19 Dirk Herrmann * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of @@ -4770,7 +6736,7 @@ (print_state_mutex): New mutex. (scm_make_print_state, scm_free_print_state, scm_prin1): Lock/unlock print_state_mutex. - + * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK): Use current names in definitions. @@ -4853,7 +6819,7 @@ scm_port_for_each. (scm_port_for_each): Reimplemented using scm_c_port_for_each. * ports.h (scm_c_port_for_each): New prototype. - + 2003-04-28 Mikael Djurfeldt * eval.c (scm_m_atdispatch): Removed until actually needed. (This @@ -5118,7 +7084,7 @@ * goops.c (prep_hashsets): make static to match prototype. (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert Chin. - + * c-tokenize.lex: remove trailing comma from enum. Thanks to Albert Chin. @@ -5384,7 +7350,7 @@ builds work. (DOT_X_FILES): Removed "iselect.x". (DOT_DOC_FILES): Removed "iselect.doc". - + 2003-03-25 Rob Browning * win32-socket.h: #include "libguile/__scm.h". Replace usage of @@ -5908,7 +7874,7 @@ * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for slots with instance allocation. - + * goops.c, goops.h (scm_class_extended_generic_with_setter): New class. (scm_compute_applicable_methods): Use scm_generic_function_methods. @@ -5943,7 +7909,7 @@ * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath builds work. (EXTRA_DIST): Added version.h.in. - + 2002-12-21 Mikael Djurfeldt This change makes it possible for one thread to do lazy sweeping @@ -6124,7 +8090,7 @@ These changes remove scm_ints_disabled (which hasn't has any effect in Guile for quite some time). - + * async.c, error.h (scm_ints_disabled): Removed. * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1), @@ -6149,7 +8115,7 @@ threads, though. Signalling and error handling for threads is very likely broken. Work on making the implementation cleaner and more efficient is needed. - + * __scm.h (SCM_ALLOW_INTS_ONLY): Removed. (SCM_NONREC_CRITICAL_SECTION_START, SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START, @@ -6197,7 +8163,7 @@ * Makefile.am (version.h): Changed $^ --> $< in rule for version.h. - + 2002-12-08 Rob Browning * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now. @@ -6222,13 +8188,13 @@ implements the rest on top of that. Guile's implementation is what the "coop-pthreads" package has been previously. Support for "coop" threads has been removed until I get time to add it again. - + * Makefile.am (libguile_la_SOURCES): Removed iselect.c. (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c, null-threads.c, coop-pthreads.c. (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added pthread-threads.h. - + * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h. * threads.h: Do not include "libguile/coop-defs.h". Include @@ -6254,7 +8220,7 @@ * pthread-threads.h: New, implement pthread-like API by deferring to pthread itself. - + * init.c (scm_init_guile_1): Do not call scm_init_iselect, which has been lost in the reorganization. @@ -6282,7 +8248,7 @@ case; Use trampolines. Other changes: - + * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o; (subr2oless): Removed. (scm_restricted_vector_sort_x): Use scm_return_first to keep the @@ -6377,13 +8343,13 @@ SCM_COPT_THREADS is defined. (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS is defined. - + * coop-pthreads.c: Some harmless renamings of internal stuff. (create_thread): New, generalized version of scm_call_with_new_thread. (scm_call_with_new_thread): Use it. (scm_spawn_thread): New, use create_thread. - + 2002-11-02 Marius Vollmer * coop-pthreads.c, coop-pthreads.h: Redone completely, you might @@ -6402,7 +8368,7 @@ (take_signal): Simplified, to avoid race conditions. (scm_sigaction_for_thread): Use new Scheme. Validate that thread hasn't exited yet. - + * async.c (scm_async_click): Reset pending_asyncs, handle signal_asyncs. Don't set cdr of a non-signal async to #f. (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue @@ -6411,7 +8377,7 @@ exited. (scm_unmask_signals, decrease_block): Call scm_async_click after block_asyncs becomes zero. - + * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of active_asyncs. @@ -6419,16 +8385,16 @@ fields. * root.c (root_mark): Mark them. (make_root): Initialize them. - + * iselect.c, iselect.h: Replaced GUILE_ISELECT with USE_COOP_THREADS. (scm_internal_select): Define one version for USE_COOP_THREADS and one for USE_NULL_THREADS. (scm_init_iselect): Likewise. - + * inline.h (scm_cell, scm_double_cell): Also allow USE_COPT_THREADS to not protect the slot initializers. - + * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is because threads need to be initialized before the stack, but gsubrs such as scm_timed_condition_variable_wait can only be @@ -6477,7 +8443,7 @@ scm_cond_wait, scm_cond_signal, scm_cond_broadcast, scm_cond_destory): Do not define, they are now deprecated and handled by threads.{h,c}. - + * null-threads.c (scm_null_mutex, scm_null_cond): Define here. (scm_threads_init): Create smobs here, using the appropriate sizes. @@ -6519,7 +8485,7 @@ * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc. * coop-pthreads.h, coop-pthreads.c: New, but unfinished. - + 2002-10-21 Marius Vollmer * null-threads.c: Include . Also, use <...> for inclusion @@ -6598,7 +8564,7 @@ * scmsigs.c (scm_sigaction_for_thread): Store original handler in signal_handlers, not the closure that is used as the async. The closure is stored in signal_handler_cells, as previously. - + 2002-10-10 Marius Vollmer * root.h (scm_root_state): Added 'block_async' slot. @@ -6623,7 +8589,7 @@ (increase_block, decrease_block, scm_call_with_blocked_asyncs, scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs, scm_c_call_with_unblocked_asyncs): New. - + * script.c (scm_compile_shell_switches): Do not set scm_mask_ints. Asyncs are enabled by default. @@ -6644,7 +8610,7 @@ (scm_system_async_mark_for_thread): Initialize cdr of handler cell with SCM_BOOL_F. * scmsigs.c (scm_sigaction_for_thread): Likewise. - + 2002-10-04 Rob Browning * guile.c (main): switch to scm_lt_dlset_preloaded_symbols; @@ -6690,7 +8656,7 @@ scm_set_switch_rate, scm_system_async_mark_from_signal_handler): Removed prototypes. (scm_i_queue_async_cell): New. - + * __scm.h (scm_asyncs_pending_p): Removed. (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of scm_asyncs_pending_p. @@ -6737,7 +8703,7 @@ 2002-09-19 Han-Wen Nienhuys - * inline.h (scm_double_cell): move SET_GCMARK set out of if body. + * inline.h (scm_double_cell): move SET_GCMARK set out of if body. 2002-09-09 Han-Wen Nienhuys @@ -6758,7 +8724,7 @@ * gc-malloc.c (scm_gc_init_malloc): check user settings for sanity. - * gc-freelist.c (scm_init_freelist): check user settings for sanity. + * gc-freelist.c (scm_init_freelist): check user settings for sanity. * struct.h: change scm_structs_to_free to scm_i_structs_to_free @@ -6804,7 +8770,7 @@ 2002-08-26 Marius Vollmer * script.c (scm_compile_shell_switches): Added "2002" to Copyright - years. Thanks to Martin Grabmüller! + years. Thanks to Martin Grabmüller! 2002-08-25 Han-Wen Nienhuys @@ -6825,7 +8791,7 @@ 2002-08-23 Han-Wen Nienhuys * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment - length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most. + length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most. 2002-08-22 Han-Wen Nienhuys @@ -6856,7 +8822,7 @@ function * ports.h: use scm_i_ prefix for port table and port table size. - + 2002-08-15 Mikael Djurfeldt * vports.c (scm_make_soft_port): Initialize pt variable. @@ -6871,12 +8837,12 @@ (scm_eval_string): Implement using scm_eval_string_in_module. (scm_c_eval_string_in_module): New. Thanks to Ralf Mattes for the suggestion! - + 2002-08-09 Han-Wen Nienhuys * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print message and abort. - + * gc-mark.c ("scm_gc_mark_dependencies"): idem. * ports.c ("scm_new_port_table_entry"): return a boxed SCM in @@ -6900,7 +8866,7 @@ 2002-08-05 Han-Wen Nienhuys - * tags.h: remove GC bits documentation from the tags table. + * tags.h: remove GC bits documentation from the tags table. * read.c (INPUT_ERROR): Prepare for file:line:column error messages for errors in scm_lreadr() and friends. @@ -6908,14 +8874,14 @@ 2002-08-04 Han-Wen Nienhuys * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies - implementation). + implementation). (scm_gc_calloc): new function 2002-08-04 Han-Wen Nienhuys * ports.c (scm_new_port_table_entry): init port entry to 0 completely. - + * ports.c (scm_new_port_table_entry): change function from scm_add_to_port_table. This prevents cells with null-pointers from being exposed to GC. @@ -6946,7 +8912,7 @@ 2002-07-24 Stefan Jahn - * continuations.h: ia64: Include before + * continuations.h: ia64: Include before . 2002-07-21 Dirk Herrmann @@ -6979,7 +8945,7 @@ * *.c: use SCM_VECTOR_SET everywhere, where a vector is written. Document cases where SCM_WRITABLE_VELTS() is used. - + * vectors.h (SCM_VELTS): prepare for write barrier, and let SCM_VELTS() return a const pointer (SCM_VECTOR_SET): add macro. @@ -8720,7 +10686,7 @@ * deprecation.c (scm_include_deprecated_features): Simplified. * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use - `SCM_IMP´ instead of `!SCM_CELLP´. + `SCM_IMP' instead of `!SCM_CELLP´. * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests. Extract side-effecting operations from macros. @@ -9630,7 +11596,7 @@ (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix signedness. - (scm_last_stack_frame): Remove bogus `;´. + (scm_last_stack_frame): Remove bogus `;'. * stacks.h (SCM_FRAMEP): Fix type check. @@ -9740,7 +11706,7 @@ * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro. - * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\´ at the end of + * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\' at the end of the macro definition. (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP, @@ -9761,7 +11727,7 @@ 2001-06-09 Marius Vollmer * ports.c (scm_lfwrite): Maintain columnd and row count in port. - Thanks to Matthias Köppe! + Thanks to Matthias Köppe! 2001-06-08 Michael Livshin @@ -9769,7 +11735,7 @@ space-happy C preprocessors. * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces - inside cookies. thanks to Matthias Köppe! + inside cookies. thanks to Matthias Köppe! 2001-06-08 Dirk Herrmann @@ -10074,7 +12040,7 @@ * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing. - * ramap.c (ramap_rp): Removed bogus `;´. + * ramap.c (ramap_rp): Removed bogus `;'. * sort.c (scm_restricted_vector_sort_x): Fixed signedness problem. @@ -10344,7 +12310,7 @@ SCM_VARIABLE_INIT since that it what it used to be. * deprecation.c (scm_include_deprecated_features): Make docstring - ANSIsh. Thanks to Matthias Köppe! + ANSIsh. Thanks to Matthias Köppe! 2001-05-21 Marius Vollmer @@ -10698,7 +12664,7 @@ 2001-05-15 Marius Vollmer * values.c (print_values): Print as a unreadable object, not as - multiple lines. Thanks to Matthias Köppe! + multiple lines. Thanks to Matthias Köppe! 2001-05-14 Dirk Herrmann @@ -10730,7 +12696,7 @@ 2001-05-09 Michael Livshin - from Matthias Köppe (thanks!): + from Matthias Köppe (thanks!): * ports.c (scm_c_read): pointer arithmetic on void pointers isn't portable. @@ -12587,7 +14553,7 @@ 2001-01-11 Michael Livshin - from Matthias Köppe: + from Matthias Köppe: * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER casts its result, so doesn't yield an lvalue per ANSI C. @@ -12656,3 +14622,7 @@ (write_all): new helper procedure. The ChangeLog continues in the file: "ChangeLog-2000" + +;; Local Variables: +;; coding: utf-8 +;; End: