2006-02-01 Ludovic Courtès <ludovic.courtes@laas.fr>
[bpt/guile.git] / libguile / ChangeLog
index 96313bd..1ef606c 100644 (file)
@@ -1,3 +1,398 @@
+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.