+2006-01-30 Marius Vollmer <mvo@zagadka.de>
+
+ * eval.c (scm_eval_body): Lock source_mutex with a dynwind context
+ so that it gets unlocked in all cases.
+ (SCM_APPLY, CEVAL): Likewise.
+
+2006-01-29 Marius Vollmer <mvo@zagadka.de>
+
+ * ramap.c: (scm_array_map_x): Don't use scm_array_p, use
+ scm_is_typed_array instead.
+
+ Renamed the "frames" that are related to dynamic-wind to "dynamic
+ contexts. Renamed all functions from scm_frame_ to scm_dynwind_.
+ Updated documentation.
+
+ Disabled "futures":
+
+ * futures.h, futures.c: Wrap whole contents in "#if 0"/"#endif".
+ * eval.c, init.c: Comment out all 'future' related things.
+
+2006-01-28 Marius Vollmer <mvo@zagadka.de>
+
+ * inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c
+ to inline.h to make it inline.
+
+2005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
+
+ * strings.c (scm_i_take_stringbufn): New.
+ (scm_i_c_take_symbol): New.
+ (scm_take_locale_stringn): Use `scm_i_take_stringbufn ()'.
+
+ * strings.h (scm_i_c_take_symbol): New.
+ (scm_i_take_stringbufn): New.
+
+ * symbols.c (lookup_interned_symbol): New function.
+ (scm_i_c_mem2symbol): New function.
+ (scm_i_mem2symbol): Use `lookup_symbol ()'.
+ (scm_from_locale_symbol): Use `scm_i_c_mem2symbol ()'. This avoids
+ creating a new Scheme string.
+ (scm_from_locale_symboln): Likewise.
+ (scm_take_locale_symbol): New.
+ (scm_take_locale_symboln): New.
+
+ * symbols.h (scm_take_locale_symbol): New.
+ (scm_take_locale_symboln): New.
+
+2006-01-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
+
+ * gc-card.c ("sweep_card"): don't count scm_tc_free_cell for
+ free_count.
+
+2005-11-29 Han-Wen Nienhuys <hanwen@xs4all.nl>
+
+ * regex-posix.c (s_scm_regexp_exec): list the offending pattern
+ upon error
+
+2005-12-29 Neil Jerram <neil@ossau.uklinux.net>
+
+ * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
+ the GC when allocated_fluids_len is zero.
+
+2005-12-14 Neil Jerram <neil@ossau.uklinux.net>
+
+ * load.c (the_reader, the_reader_fluid_num): New.
+ (scm_primitive_load): Support custom reader.
+ (scm_init_load): Init the_reader and the_reader_fluid_num; export
+ the_reader as `current-reader'.
+
+ * scmsigs.c (do_read_without_guile): Use the "raw_data" passed in
+ (rather than an uninitialized pointer on the stack).
+
+2005-12-07 Marius Vollmer <mvo@zagadka.de>
+
+ Reported by Bruce Korb:
+
+ * init.c (invoke_main_func): Don't call exit here. Throws that
+ are only caught by scm_with_guile will bypass us and would cause
+ scm_boot_guile to return erroneously.
+ (scm_boot_guile): Expect scm_with_guile to return and call exit
+ here, passing it an appropriate exit code.
+
+ From Andy Wingo:
+
+ * script.c (scm_find_executable): Compile fix -- fgetc returns an
+ unsigned char cast to an int, or -1 for EOS.
+
+2005-12-06 Marius Vollmer <mvo@zagadka.de>
+
+ * srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
+ non-const.
+ (scm_take_u8vector, etc): Likewise. Thanks to Ludovic Courtès!
+
+ * threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile,
+ scm_enter_guile): Removed from public API. See comment at
+ scm_without_guile for the rationale.
+
+ * scmsigs.c (read_without_guile): New.
+ (signal_delivery_thread): Use it instead of
+ scm_leave_guile/read/scm_enter_guile.
+
+ From Stephen Compall:
+
+ * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax.
+ (CEVAL): Evaluate SRFI 61 cond clauses.
+
+2005-12-06 Ludovic Courtès <ludovic.courtes@laas.fr>
+
+ * gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL.
+ This was typically hit when running `gc-live-object-stats' right
+ after starting Guile.
+
+2005-11-30 Kevin Ryde <user42@zip.com.au>
+
+ * srfi-13.c (scm_string_append_shared): No copying if just one
+ non-empty string in args.
+
+2005-11-26 Kevin Ryde <user42@zip.com.au>
+
+ * gc-mark.c (scm_mark_all): Change C++ comment to C comment. Reported
+ by Ludovic Courtès.
+
+ * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
+ "register".
+
+ * random.c (scm_i_copy_rstate, scm_c_make_rstate): Don't test for
+ scm_malloc returning NULL, it never does that.
+ * putenv.c (putenv): Likewise.
+
+ * socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is
+ much too big to want to inline.
+
+2005-11-17 Ludovic Courtès <ludovic.courtes@laas.fr>
+
+ * print.c (EXIT_NESTED_DATA): Before popping from the stack, reset
+ the value at its top. This fixes a reference leak.
+ (PUSH_REF): Perform `pstate->top++' after calling
+ `PSTATE_STACK_SET ()' in order to avoid undesired potential side
+ effects.
+
+2005-11-12 Ludovic Courtès <ludovic.courtes@laas.fr>
+
+ * gc.c (scm_weak_vectors): Removed.
+
+2005-11-12 Kevin Ryde <user42@zip.com.au>
+
+ * socket.c (scm_setsockopt): Missing @defvar in docstring. Reported
+ by Ludovic Courtès.
+
+2005-11-07 Marius Vollmer <mvo@zagadka.de>
+
+ * stime.c (scm_mktime): Use scm_frame_critical_section instead of
+ SCM_CRITICAL_SECTION_START/END since the code inside the critical
+ section might exit non-locally.
+
+2005-11-04 Neil Jerram <neil@ossau.uklinux.net>
+
+ * eval.c (sym_instead): New symbol.
+ (ENTER_APPLY): Remove optional use of a continuation when making
+ trap call.
+ (scm_debug_opts): Change doc for 'cheap option to make clear that
+ it is now obsolete.
+ (CEVAL, SCM_APPLY): Remove optional use of a continuation when
+ making trap calls, and implement substitution of eval expressions
+ and return values using the values that the trap call handlers
+ return.
+
+ * debug.h (SCM_CHEAPTRAPS_P): Removed.
+
+2005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
+
+ * socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc.
+ (scm_connect, scm_bind, scm_sendto): Accept sockaddr object.
+ (scm_addr_vector): Renamed to _scm_from_sockaddr, update usages.
+ (scm_from_sockaddr, scm_to_sockaddr, scm_make_socket_address,
+ scm_c_make_socket_address): New functions.
+ * socket.h: Add prototypes.
+
+2005-10-24 Kevin Ryde <user42@zip.com.au>
+
+ * socket.c (scm_init_socket): Add IPPROTO_IP, IPPROTO_TCP,
+ IPPROTO_UDP. Remove SOL_IP, SOL_TCP, SOL_UDP. The former are in
+ POSIX spec examples, the latter are not available on for instance
+ NetBSD.
+
+ * socket.c (scm_getsockopt, scm_setsockopt): Update docstrings from
+ posix.texi.
+
+ * stime.c (scm_strftime): Update docstring from posix.texi.
+
+2005-10-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
+
+ PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not portable enough.
+
+ * null-threads.h, pthread-threads.h
+ (SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Removed.
+ (scm_i_pthread_mutexattr_recursive): New.
+
+ * threads.c (scm_i_pthread_mutexattr_recursive): Declare.
+ (scm_i_critical_section_mutex): Do not initialize statically.
+ (scm_threads_prehistory): Initialize
+ scm_i_pthread_mutexattr_recursive and scm_i_critical_section_mutex
+ here.
+
+ * eval.c (source_mutex): Do not initialiaze statically.
+ (scm_init_eval): Do it here, using
+ scm_i_pthread_mutexattr_recursive.
+
+2005-09-05 Marius Vollmer <mvo@zagadka.de>
+
+ * print.h (SCM_PRINT_KEYWORD_STYLE_I, SCM_PRINT_KEYWORD_STYLE):
+ New.
+ (sym_reader): New.
+ (scm_print_opts): Added "quote-keywordish-symbols" option.
+ (quote_keywordish_symbol): New, for evaluating the option.
+ (scm_print_symbol_name): Use it.
+ (scm_init_print): Initialize new option to sym_reader.
+
+2005-08-15 Neil Jerram <neil@ossau.uklinux.net>
+
+ * eval.c (eval_letrec_inits): New.
+ (CEVAL): Eval letrec initializer forms using eval_letrec_inits.
+
+2005-08-12 Marius Vollmer <mvo@zagadka.de>
+
+ * numbers.c: Use scm_from_bool instead of SCM_BOOL. Thanks to
+ Peter Gavin!
+
+2005-08-12 Kevin Ryde <user42@zip.com.au>
+
+ * srfi-13.c (scm_string_for_each_index): Correction to docstring.
+
+2005-08-06 Kevin Ryde <user42@zip.com.au>
+
+ * srfi-13.c (scm_string_any, scm_string_every, scm_string_tabulate,
+ scm_string_trim, scm_string_trim_right, scm_string_trim_both,
+ scm_string_index, scm_string_index_right, scm_string_skip,
+ scm_string_skip_right, scm_string_count, scm_string_map,
+ scm_string_map_x, scm_string_for_each, scm_string_for_each_index,
+ scm_string_filter, scm_string_delete): Use scm_t_trampoline_1 for
+ procedures called in loops.
+
+2005-08-02 Kevin Ryde <user42@zip.com.au>
+
+ * strports.c (st_flush): Increase buffer by 1.5x when growing, to
+ avoid lots of copying where previoulsy growing by only 80 bytes at a
+ time.
+
+2005-08-01 Marius Vollmer <mvo@zagadka.de>
+
+ * modules.h, modules.c (scm_eval_closure_module): Removed, we
+ already have scm_lookup_closure_module, which does the same thing.
+
+2005-08-01 Marius Vollmer <mvo@zagadka.de>
+
+ New marking algorithm for weak hashtables that fixes the problem
+ that references from the non-weak value to the associated weak
+ key (for example) would prevent the entry from ever being dropped.
+
+ Guardians have been changed back to their original semantics and
+ are no longer greedy and no longer drop cycles.
+
+ * gc-mark.c (scm_mark_all): Do not rely on hooks to run the weak
+ hashtable and guardian machinery but call the relevant functions
+ directly.
+
+ * guardians.h, guardians.c, deprecated.h,
+ deprecated.c (scm_destroy_guardian_x, scm_guardian_greedy_p,
+ scm_guardian_destroyed_p, scm_guard, scm_get_one_zombie):
+ Deprecated and moved into deprecated.[ch].
+
+ * guardians.h, guardians.c: Mostly rewritten.
+ (scm_i_init_guardians_for_gc,
+ scm_i_identify_inaccessible_guardeds,
+ scm_i_mark_inaccessible_guardeds): New.
+ (scm_make_guardian): Removed greedy_p argument.
+
+ * weaks.h, weaks.c (SCM_I_WVECT_TYPE, SCM_I_SET_WVECT_TYPE): New.
+ (SCM_I_WVECT_N_ITEMS, SCM_I_SET_WVECT_N_ITEMS): New.
+ (SCM_WVECTF_NOSCAN, SCM_WVECT_NOSCAN_P): Removed.
+ (scm_weaks_prehistory): Removed.
+ (scm_i_init_weak_vectors_for_gc, scm_i_mark_weak_vector,
+ scm_i_mark_weak_vectors_non_weaks,
+ scm_i_remove_weaks_from_weak_vectors, scm_i_remove_weaks): New.
+ (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
+ scm_scan_weak_vectors): Removed.
+
+ * hashtab.h (scm_i_scan_weak_hashtables): New.
+ * hashtab.c (make_hash_table, scm_i_rehash): Do not use
+ SCM_WVECTF_NOSCAN.
+ (hashtable_print): Use SCM_HASHTABLE_N_ITEMS instead of
+ t->n_items.
+ (scan_weak_hashtables, scm_i_scan_weak_hashtables): Renamed former
+ to latter. Do not scan the alists themselves, this is done by the
+ weak vector code now. Just update the element count.
+
+ * vectors.h (SCM_I_WVECT_TYPE, SCM_I_WVECT_EXTRA): Renamed former
+ to latter. The type is now only part of the cell word.
+ (SCM_I_SET_WVECT_TYPE, SCM_I_SET_WVECT_EXTRA): Likewise.
+
+ * init.c (scm_i_init_guile): Do not call scm_weaks_prehistory.
+
+2005-07-18 Mikael Djurfeldt <mdj@d14n36.pdc.kth.se>
+
+ Some changes towards making it possible to run Guile on the EM64T
+ platform.
+
+ * gc.c (scm_gc_stats): Bugfix: Measure size of the type we are
+ mallocating for (unsigned long *bounds).
+
+ * hashtab.c (scm_i_rehash): Cast SCM_HASHTABLE_FLAGS (table) to
+ scm_t_bits before storing them in the type word.
+
+ * gc.c (tag_table_to_type_alist): Modified type of c_tag from
+ scm_t_bits to int.
+
+2005-07-12 Kevin Ryde <user42@zip.com.au>
+
+ * eval.c (scm_dbg_make_iloc): Should be SCM_IFRAMEMAX and
+ SCM_IDISTMAX, and cast uints through scm_t_bits to make gcc happy.
+ * pairs.c (scm_error_pair_access): Use scm_from_locale_string rather
+ than scm_makfrom0str.
+ Reported by Ken Raeburn.
+
+ * gc-card.c (scm_dbg_gc_get_bvec): Change return from long* to
+ scm_t_c_bvec_long*, gcc 4 doesn't like different pointer targets when
+ returning SCM_GC_CARD_BVEC.
+
+ * pairs.c (scm_error_pair_access): Plain ascii ' in error message
+ rather than latin-1 acute accent, the latter may not print on all
+ terminals.
+
+ * srfi-13.c (scm_string_filter, scm_string_delete): Strip leading and
+ trailing deletions, so as to return a substring if those are the only
+ changes.
+
+2005-07-10 Kevin Ryde <user42@zip.com.au>
+
+ * socket.c (scm_inet_pton, scm_inet_ntop): Pointer cast to scm_t_uint8
+ for scm ipv6 funcs, gcc 4 is picky about char* vs uchar*.
+ (scm_getsockopt, scm_accept, scm_getsockname, scm_getpeername,
+ scm_recvfrom) Use socklen_t, gcc 4 is picky about int* vs socklen_t*.
+
+2005-07-01 Han-Wen Nienhuys <hanwen@xs4all.nl>
+
+ * gc-card.c (scm_i_card_statistics): init tag.
+
+ * gc.c (tag_table_to_type_alist): check type of tag. Should be integer.
+
+2005-06-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
+
+ * fports.c (s_scm_open_file): add the b flag for binary to the doc
+ string.
+
+2005-06-25 Kevin Ryde <user42@zip.com.au>
+
+ * srfi-13.c (scm_string_filter, scm_string_delete): Partial revert
+ last change, use plain copy-on-write substrings, the individual
+ descriptions in the srfi don't mention shared storage (only the
+ introduction does).
+
+ * strings.c (scm_take_locale_stringn): Use realloc to make room for
+ null-terminator, rather than mallocing a whole new block.
+ (scm_take_locale_string): Use scm_take_locale_stringn len==-1.
+
+2005-06-12 Marius Vollmer <mvo@zagadka.de>
+
+ * ramap.c (scm_array_index_map_x): First test for real arrays,
+ then check for generalized vectors. This ensures that the
+ generalized vector case need only work with zero-origin ranges.
+ (scm_ra_eqp, scm_ra_compare): Use the new array handle functions
+ to access the target array, making these functions work with all
+ kinds of arrays, not just bit arrays.
+
+ * gh.h, gh_data.c, gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c,
+ gh_list.c, gh_predicates.c: Deprecated everything.
+
+ * environments.c (environment_default_folder,
+ environment_default_observer): Do not use gh_call3, gh_call1.
+
+2005-06-10 Han-Wen Nienhuys <hanwen@xs4all.nl>
+
+ * modules.c (s_scm_eval_closure_module): new function. Return the
+ module inside an eval-closure.
+
+ * gc.c (scm_init_storage): make scm_stand_in_procs a weak_key hash
+ table. This means that procedure properties are GC'd if the
+ procedure dies.
+
+2005-06-11 Kevin Ryde <user42@zip.com.au>
+
+ * srfi-13.c (scm_string_filter, scm_string_delete): For char and
+ charset cases, count chars kept and build a string in a second pass,
+ rather than using a cons cell for every char kept. Use a shared
+ substring when nothing removed (such sharing is allowed by the srfi).
+
2005-06-09 Han-Wen Nienhuys <hanwen@xs4all.nl>
* gc.c (tag_table_to_type_alist): convert tag number to "tag %d"
* 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.
(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.
* 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,
* 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.