*** empty log message ***
[bpt/guile.git] / libguile / ChangeLog
index cf417e7..68af192 100644 (file)
+2005-02-25  Marius Vollmer  <mvo@zagadka.de>
+
+       * hashtab.c (scm_i_rehash): Remove elements from old bucket vector
+       so that no two weak alist vectors share a spine.
+       (scm_hash_fn_create_handle_x): Deal with a possible rehashing
+       during GC before inserting the new alist cell.
+
+2005-02-23  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
+
+       * hashtab.c (scm_i_rehash): Cope with the case that a GC modifies
+       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  <djurfeldt@nada.kth.se>
+
+       * unif.c (prototype_to_type): Bugfix: Don't compare prototype to
+       the prototypical examples mentioned in the old reference manual.
+       Instead keep the old semantics of dispatching on type.  (Yes, this
+       is extremely ugly, but the whole point of keeping the deprecated
+       interface is not to break old code.)
+
+2005-02-08  Mikael Djurfeldt  <djurfeldt@nada.kth.se>
+
+       * deprecated.h (SCM_ARRAY_DIMS): Rename scm_i_attay_dims -->
+       scm_i_array_dims.
+
+2005-01-28  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (scm_ash): Rewrite using shifts, much faster than
+       integer-expt and multiply/divide.  Inexacts and fractions no longer
+       supported (they happened to work before for left shifts, but not
+       right).  Don't really need inexacts and fractions, since ash is
+       documented as a "bitwise operation", and all the rest of those only
+       take exact integers.
+
+2005-01-27  Han-Wen Nienhuys  <hanwen@xs4all.nl>
+
+       * gc-card.c (scm_i_card_statistics): map structs, closures and
+       subrs to one tag.
+
+       * gc.c (s_scm_gc_live_object_stats): return alist, not hashtable.
+       (tag_table_to_type_alist): ignore unknown types.
+
+       * gc-segment.c (scm_i_all_segments_statistics): new function.
+       (scm_i_heap_segment_statistics): new function
+
+       * gc.c (s_scm_gc_live_object_stats): new GUILE callable: return
+       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. 
+
+2005-01-24  Kevin Ryde  <user42@zip.com.au>
+
+       * posix.c (scm_setlocale): Force errno=EINVAL for an error, since
+       POSIX and C99 don't document errno being set.  Reported by Bruno
+       Haible.
+       (scm_flock): Update docstring from manual.
+
+       * random.c (scm_i_init_rstate): Compare w to -1 not 0xffffffffUL, now
+       that it's an scm_t_int32.  Otherwise gcc 3.4 says it's always false on
+       a 64-bit system.
+
+       * scmsigs.c (scm_sigaction_for_thread): Use scm_to_long for
+       sa_handler, needs to be a long on 64-bit systems where int is only 32
+       bits.
+
+2005-01-20  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
+
+       * environments.c (obarray_enter, obarray_replace): Call
+       SCM_HASHTABLE_INCREMENT when adding a new entry.
+
+       * objects.c: Include goops.h for the scm_class_of prototype.
+
+       * hashtab.c (hashtable_size, HASHTABLE_SIZE_N): Restrict hashtable
+       sizes to be smaller than the maximum lengths of vectors.
+
+2005-01-18  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
+
+       * ports.c, smob.c: Include "libguile/goops.h".
+
+       * objects.h, objects.c, goops.c, goops.h (scm_class_boolean,
+       scm_class_char, scm_class_pair, scm_class_procedure,
+       scm_class_string, scm_class_symbol,
+       scm_class_procedure_with_setter, scm_class_primitive_generic,
+       scm_class_vector, scm_class_null, scm_class_real,
+       scm_class_complex, scm_class_integer, scm_class_fraction,
+       scm_class_unknown, scm_port_class, scm_smob_class,
+       scm_no_applicable_method, scm_class_of): Moved from objects to
+       goops since they are only useable once goops has been loaded.
+       (scm_classes_initialized): Removed.
+       (scm_class_of): Do not check it.
+       (create_standard_classes): Do not set it.
+       
+2005-01-17  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
+
+       * 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.
+
+2005-01-16  Marius Vollmer  <mvo@zagadka.de>
+
+       * script.c (scm_compile_shell_switches): Removed debugging output.
+
+2005-01-15  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (scm_logtest, scm_logbit_p, scm_integer_expt): Update
+       docstrings from manual.
+       * random.c (scm_random_solid_sphere_x): Update docstring from manual.
+
+2005-01-14  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
+
+       * random.c: Don't check for definedness of SCM_HAVE_T_INT64, check
+       its value.
+
+       Implement u64 and s64 uniform numeric vectors with bignums when
+       scm_t_uint64 and scm_t_int64 are not available.
+
+       * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_take_u64vector,
+       scm_array_handle_u64_elements,
+       scm_array_handle_u64_writable_elements, scm_u64vector_elements,
+       scm_u64vector_writable_elements): Do not define when scm_t_uint64
+       is not available.
+       (scm_take_s64vector, scm_array_handle_s64_elements,
+       scm_array_handle_s64_writable_elements, scm_s64vector_elements,
+       scm_s64vector_writable_elements): Likewise for scm_t_int64.
+       (uvec_sizes, uvec_print, uvec_equalp): Use SCM bignums when
+       scm_t_int64/scm_t_uint64 are not available.
+       (uvec_mark): New, to mark the bignums.
+       (alloc_uvec): Initialize bignums.
+       (uvec_fast_ref): Return bignums directly.
+       (scm_uint64_min, scm_uint64_max, scm_int64_min, scm_int64_max,
+       assert_exact_integer): New.
+       (uvec_fast_set): Use them to validate the bignums.
+       (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  <marius.vollmer@uni-dortmund.de>
+
+       * deprecated.h, deprecated.c, strings.h, strings.c: Turn all
+       deprecated features that once were macros but are now functions
+       back into macros.
+
+2005-01-11  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
+
+       * eval.c, debug.h (SCM_WARN_DEPRECATED): New debug option.
+       * deprecation.c (scm_issue_deprecation_warning,
+       scm_c_issue_deprecation_warning_fmt): Use it.
+       (mode): Removed.
+       (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.
+       (scm_tc16_array, scm_i_tc16_array,
+       scm_tc16_enclosed_array, scm_i_tc16_enclosed_array,
+       SCM_ARRAY_FLAG_CONTIGUOUS, SCM_I_ARRAY_FLAG_CONTIGUOUS,
+       SCM_ENCLOSE_ARRAYP, SCM_I_ENCLOSE_ARRAYP,
+       SCM_ARRAY_NDIM, SCM_I_ARRAY_NDIM,
+       SCM_ARRAY_CONTP, SCM_I_ARRAY_CONTP,
+       SCM_ARRAY_MEM, SCM_I_ARRAY_MEM,
+       SCM_ARRAY_V, SCM_I_ARRAY_V,
+       SCM_ARRAY_BASE, SCM_I_ARRAY_BASE,
+       SCM_ARRAY_DIMS, SCM_I_ARRAY_DIMS,
+       scm_t_array, scm_i_t_array): Likewise.
+       (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
+       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  <mvo@zagadka.de>
+
+       * ramap.c: Replace uses of scm_make_ra with scm_i_make_ra.
+       (GVREF, GVSET): New abbreviations.  Use them everywhere instead of
+       scm_c_generalized_vector_ref and scm_cvref, and
+       scm_c_generalized_vector_set_x, respectively.
+       (RVREF, IVDEP, BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
+       UNARY_ELTS_CODE, UNARY_PAIR_ELTS_CODE): Removed since unused.
+
+       * unif.h, unif.c (indices_to_pos, scm_array_handle_pos): Renamed
+       former to latter and made public.  Changed all uses.
+       (scm_i_make_ra): Made public, changed tag param to enclosed flag.
+       (scm_make_ra): Deprecated, changed all uses to scm_i_make_ra.
+       (scm_i_shap2ra): New internal version of scm_shap2ra.
+       (scm_shap2ra): Deprecated, changed all uses to scm_i_shap2ra.
+       (scm_i_ra_set_contp): New internal version of scm_ra_set_contp.
+       (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  <marius.vollmer@uni-dortmund.de>
+
+       * eval.c (scm_eval): Added example to docstring.  Thanks to Issac
+       Trotts!
+
+       * unif.c (scm_list_to_typed_array): Allow the specification of the
+       upper bound as well.  This is needed for empty arrays.
+       (l2ra): Give needed number of elements in error message.
+       (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.
+
+2005-01-10  Marius Vollmer  <mvo@zagadka.de>
+
+       * ramap.c: Replaced single-index uses of scm_array_set_x with
+       scm_c_generalized_vector_set_x.
+
+       * unif.c (scm_array_rank, scm_array_dimensions,
+       scm_shared_array_offset, scm_shared_array_increments,
+       scm_array_ref, scm_array_set_x): Use scm_t_array_handle operations
+       to simplify code and make it more general.
+       (scm_shared_array_root): Work with all kinds of arrays, including
+       naked vectors.
+       (indices_to_pos): New.
+       (scm_make_shared_array): Use it instead of scm_aind; use handle
+       for oldra.
+
+2005-01-10  Kevin Ryde  <user42@zip.com.au>
+
+       * posix.c (scm_mkstemp): Update docstring from manual.
+
+       * stime.c (scm_mktime): Missing default errno=EINVAL from prev change.
+
+2005-01-09  Marius Vollmer  <mvo@zagadka.de>
+
+       * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_i_uniform_vector_ref_proc,
+       scm_i_uniform_vector_set_proc): New.
+       (u8ref, u8set, s8ref, s8set, etc): New.
+       (uvec_reffers, uvec_setters): New.
+       (uvec_to_list): Use generic scm_array_handle_ref instead of
+       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
+       writable_elements for fast inline operation of
+       scm_array_handle_ref and scm_array_handle_set.
+       (scm_array_handle_ref, scm_array_handle_set): Moved to inline.h
+       and replaced with inline code that simply calls the ref/set
+       members of the handle.
+       (enclosed_ref, vector_ref, string_ref, bitvector_ref, memoize_ref,
+       enclosed_set, vector_set, string_set, bitvector_set, memoize_set):
+       New.
+       (scm_array_handle_get): Initialize ref/set fields to memoize_ref
+       and memoize_set.
+       (scm_bitvector_fill_x, scm_bitvector_to_list, scm_bit_count,
+       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.
+
+2005-01-09  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
+
+       * srfi-4.c (uvec_type): New.
+       (uvec_to_list, uvec_ref, uvec_set_x, scm_c_uniform_vector_ref,
+       scm_c_uniform_vector_x): Use it to get concrete type.
+
+       * unif.h (scm_t_array_dim): Changed type of members to ssize_t, to
+       fit the docs.
+
+       * unif.c (ra2l): Handle zero rank arrays.
+       (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  <marius.vollmer@uni-dortmund.de>
+
+       * hashtab.h, hashtab.c (SCM_HASHTAB_BUCKET_LOC): Removed.
+       (scan_weak_hashtables): Rewrote its use with SCM_HASHTAB_BUCKET
+       and SCM_SET_HASHTAB_BUCKET.
+
+       * print.h, print.c (scm_print_state, SCM_PRINT_STATE_LAYOUT):
+       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,
+       deprecated.c, eq.c
+       (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Removed.
+       (scm_vector_elements, scm_vector_writable_elements,
+       scm_generalized_vector_get_handle): Moved to vectors.[hc] from
+       unif.[hc].
+       (SCM_SIMPLE_VECTOR_LOC): Removed.
+       (SCM_VECTOR_MAX_LENGTH, SCM_VECTOR_LENGTH, SCM_VELTS,
+       SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET,
+       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  <mvo@zagadka.de>
+
+       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
+       of the right type.
+       (scm_is_uniform_vector): Likewise.
+       (uvec_fast_ref): Made BASE param const.
+       (uvec_writable_elements, uvec_elements): New.
+       (uvec_to_list, uvec_ref, uvec_set_x, uvec_length,
+       scm_c_uniform_vector_length, scm_c_uniform_vector_ref,
+       scm_c_uniform_set_x): Use them to also deal with one-dimensional
+       arrays.
+       (scm_uniform_vector_ref, scm_uniform_vector_set_x): Deprecate old
+       argument convention.
+       (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  <marius.vollmer@uni-dortmund.de>
+
+       * 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.
+       (scm_array_handle_release): New, changed all uses of
+       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  <mvo@zagadka.de>
+
+       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.
+       (scm_bitvector_release_elements,
+       scm_frame_bitvector_release_elements,
+       scm_bitvector_release_writable_elements,
+       scm_frame_bitvector_release_writable_elements): Removed.
+       (scm_array_handle_bit_elements,
+       scm_array_handle_bit_writable_elements,
+       scm_array_handle_bit_elements_offset): New.
+       (scm_make_typed_array): The special value for non-initialized
+       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  <user42@zip.com.au>
+
+       * stime.c (scm_strftime): Free t.tm_zone produced by bdtime2c.
+       Reported by Bill Schottstaedt.
+
+2005-01-02  Marius Vollmer  <mvo@zagadka.de>
+
+       * sort.c (quicksort): Added INC parameter for non-contigous
+       vectors.
+       (quicksort1): New, for contigous vectors.  Both functions are
+       generated from the same code by including "quicksort.i.c".
+       (scm_restricted_vector_sort_x): Call one of quicksort and
+       quicksort1, depending on increment of vector.
+       (scm_sort): Simply call scm_sort_x on a copy of the list or
+       vector.
+       (scm_merge_vector_x, scm_merge_vector_step): Changed indices to
+       size_t, added inc parameter.
+       (scm_stable_sort_x): Allocate temporary storage as Scheme vector
+       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.
+
+       * gc-card.c (scm_i_sweep_card): Call scm_i_vector_free instead of
+       doing it inline.
+
+       * hashtab.c, hashtab.h (SCM_HASHTABLE_BUCKETS): Removed.
+       (SCM_HASHTABLE_BUCKET, SCM_HASHTABLE_BUCKET_LOC): New.  Replaced
+       all uses of SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
+
+       * tags.h, weaks.c, vports.c, hashtab.c, convert.c, sort.c,
+       convert.c, convert.h, convert.i.c, deprecated.c, environments.c,
+       eval.c, filesys.c, fluids.c, gc-mark.c, gh.h, gh_data.c, goops.c,
+       hash.c, init.c, libguile_la-arrays.loT, modules.c, net_db.c,
+       objects.c, ports.c, posix.c, print.c, random.c, read.c,
+       regex-posix.c, scmsigs.c, socket.c, stime.c, symbols.c: Use new
+       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,
+       scm_uniform_vector_elements,
+       scm_uniform_vector_writable_elements):
+       (scm_<foo>vector_elements, scm_<foo>vector_writable_elements): Use
+       scm_t_array_handle, deliver length and increment.
+       (scm_array_handle_<foo>_elements,
+       scm_array_handle_<foo>_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
+       scm_array_handle_writable_elements, scm_vector_get_handle): New.
+       (scm_make_uve, scm_array_prototype, scm_list_to_uniform_array,
+       scm_dimensions_to_uniform_array): Deprecated for real.
+       (scm_array_p, scm_i_array_p): Use latter for SCM_DEFINE since
+       snarfing wont allow a mismatch between C and Scheme arglists.
+       (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.
+
+       * weaks.h, weaks.c: Use new internal weak vector API from
+       vectors.h.
+
+       * Makefile.am (libguile_la_SOURCES, DOT_X_FILES, DOT_DOC_FILES,
+       EXTRA_libguile_la_SOURCES): Changed ramap.c and unif.c from being
+       'extra' to being regular sources.
+       (noinst_HEADERS): Added quicksort.i.c.
+       * quicksort.i.c: New file.
+
+       * vectors.h, vector.c (SCM_VECTORP, SCM_VECTOR_LENGTH, SCM_VELTS,
+       SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET): Deprecated
+       and reimplemented.  Replaced all uses with scm_vector_elements,
+       scm_vector_writable_elements, or SCM_SIMPLE_VECTOR_*, as
+       appropriate.
+       (scm_is_simple_vector, SCM_SIMPLE_VECTOR_LENGTH,
+       SCM_SIMPLE_VECTOR_REF, SCM_SIMPLE_VECTOR_SET,
+       SCM_SIMPLE_VECTOR_LOC): New.
+       (SCM_VECTOR_BASE, SCM_SET_VECTOR_BASE, SCM_VECTOR_MAX_LENGTH,
+       SCM_MAKE_VECTOR_TAG, SCM_SET_VECTOR_LENGTH,
+       SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS, SCM_GC_WRITABLE_VELTS):
+       Removed.
+       (scm_vector_copy): New.
+       (scm_vector_elements, scm_vector_writable_elements): Use
+       scm_t_array_handle, deliver length and increment.  Moved to
+       unif.h. Changed all uses.
+       (scm_vector_release_elements,
+       scm_vector_release_writable_elements,
+       (scm_frame_vector_release_elements,
+       scm_frame_vector_release_writable_elements): Removed.
+       (SCM_I_IS_VECTOR, SCM_I_VECTOR_ELTS, SCM_I_VECTOR_WELTS,
+       SCM_I_VECTOR_LENGTH, scm_i_vector_free): New internal API.
+       (SCM_I_WVECTP SCM_I_WVECT_LENGTH SCM_I_WVECT_VELTS
+       SCM_I_WVECT_GC_WVELTS SCM_I_WVECT_TYPE SCM_I_WVECT_GC_CHAIN
+       SCM_I_SET_WVECT_GC_CHAIN, scm_i_allocate_weak_vector): New, for
+       weak vectors.
+
+2004-12-29  Marius Vollmer  <mvo@zagadka.de>
+
+       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,
+       scm_i_proc_make_u64vector, scm_i_proc_make_s64vector,
+       scm_i_proc_make_f32vector, scm_i_proc_make_f64vector,
+       scm_i_proc_make_c32vector, scm_i_proc_make_c64vector,
+       uvec_proc_vars): Removed.
+       (scm_i_generalized_vector_creator): Removed.
+       (scm_i_generalized_vector_type): New.
+
+       * unif.h, unif.c (scm_typed_array_p, scm_make_array,
+       scm_make_typed_array, scm_array_type, scm_list_to_array,
+       scm_list_to_typed_array, scm_is_array, scm_is_typed_array): New.
+       (scm_array_creator): Removed.
+       (scm_array_p): Deprecated second PROT argument.
+       (scm_dimensions_to_uniform_array, scm_list_to_uniform_array):
+       Deprecated, reimplemented in terms of scm_make_typed_array and
+       scm_list_to_typed_array.
+       (scm_i_proc_make_vector, scm_i_proc_make_string,
+       scm_i_proc_make_bitvector): Removed.
+       (type_creator_table, init_type_creator_table, type_to_creator,
+       make_typed_vector): New.
+       (scm_i_convert_old_prototype): Removed.
+       (prototype_to_type): New.
+       (scm_make_uve): Deprecated, reimplemented using make_typed_vector.
+       (scm_array_dimensions): Use scm_list_1 instead of scm_cons for
+       minor added clarity.
+       (scm_make_shared_array, scm_ra2contig): Use make_typed_vector
+       instead of scm_make_uve.
+       (tag_creator_table, scm_i_tag_to_creator): Removed.
+       (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  <mvo@zagadka.de>
+
+       * unif.h, unif.c (scm_bitvector_elements): Made return value "const".
+       (scm_bitvector_writable_elements): New.
+       (scm_bitvector_release, scm_bitvector_release_elements):
+       Renamed former to latter.  Added explicit call to
+       scm_remember_upto_here_1.
+       (scm_frame_bitvector_release,
+       scm_frame_bitvector_release_elements): Renamed former to latter.
+       (scm_bitvector_release_writable_elements,
+       scm_bitvector_release_writable_elements): New.
+       Changed all uses as required by the changes above.
+
+       * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_uniform_vector_elements,
+       scm_u8vector_elements, etc): Made return value "const".
+       (scm_uniform_vector_writable_elements,
+       scm_u8vector_writable_elements, etc): New.
+       (scm_uniform_vector_release, scm_uniform_vector_release_elements):
+       Renamed former to latter.  Added explicit call to
+       scm_remember_upto_here_1.
+       (scm_frame_uniform_vector_release,
+       scm_frame_uniform_vector_release_elements): Renamed former to latter.
+       (scm_uniform_vector_release_writable_elements,
+       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,
+       scm_c_vector_length, scm_vector_ref, scm_c_vector_ref,
+       scm_vector_set_x, scm_c_vector_set_x, scm_vector_to_list,
+       scm_vector_move_left_x, scm_vector_move_right_x,
+       scm_vector_fill_x): handle one-dimensional arrays.
+       (scm_vector_elements, scm_vector_release_elements,
+       scm_vector_frame_release_elements, scm_vector_writable_elements,
+       scm_vector_release_writable_elements,
+       scm_vector_frame_release_writable_elements): New.
+       (scm_list_to_vector, scm_vector_to_list, scm_vector_fill,
+       scm_vector_move_left_x, scm_vector_move_right_x): Use them.
+
+       * ramap.c (scm_ramapc, scm_raeql): Use
+       scm_c_generalized_vector_length instead of
+       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  <marius.vollmer@uni-dortmund.de>
+
+       * continuations.h, continuations.c (scm_t_contregs): New 'offset'
+       member for relocating debug frames.
+       (scm_make_continuation): Set it.
+
+       * stacks.c (read_frame, read_frames, scm_make_stack,
+       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  <user42@zip.com.au>
+
+       * ramap.c (scm_array_map_x): Check for at least one source argument.
+
+2004-12-14  Kevin Ryde  <user42@zip.com.au>
+
+       * srfi-13.c (string-any, string-every): Use a scheme wrapper around
+       the C code so for the final call to the predicate procedure is a tail
+       call, per SRFI-13 spec.
+
+2004-12-10  Kevin Ryde  <user42@zip.com.au>
+
+       * eq.c (scm_eq_p, scm_eqv_p, scm_equal_p): Update docstrings from
+       recent revision to the reference manual.
+
+       * numbers.c (scm_modulo): Amend fixme comment about negative divisor
+       with "%", C99 says it's well-defined.
+
+       * socket.c (scm_from_ipv6): Just use mpz_import.  Don't bother trying
+       to fit scm_from_ulong_long, since that uses mpz_import anyway.  Don't
+       bother trying to fit scm_from_ulong, not really worth the trouble if
+       addresses are more than 4 bytes usually.
+
+2004-11-30  Kevin Ryde  <user42@zip.com.au>
+
+       * gc_os_dep.c (NetBSD): Test __m68k__ and __arm__ as well as m68k and
+       arm32.  Reported by Greg Troxel.
+
+2004-11-14  mvo  <mvo@zagadka.de>
+
+       * unif.c, unif.h (scm_i_cvref): Made non-static for ramap.c.
+
+       * Makefile.am (INCLUDES): It is "@LTDLINCL@", not "@LTDLINC@".
+
+2004-11-12  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
+
+       Enclosed arrays are now their own smob.  This has been done to
+       make the code more explicit about them and to prepare for the time
+       when generalized vectors include arbitrary one-dimensional
+       arrays. (Uptonow, enclosed arrays have been recognized by their
+       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.
+       (scm_array_p, scm_array_dimensions, scm_shared_array_root,
+       scm_shared_array_offset, scm_shared_array_increments): Handle
+       enclosed arrays explicitely.
+       (scm_array_rank): Likewise. Also, do not return zero for
+       non-arrays, signal an error instead since arrays with rank zero do
+       exist.
+       (scm_i_make_ra): New, for specifying the tag of the new array.
+       (scm_make_enclosed_array): Use it.
+       (scm_make_ra): Reimplemented in terms of scm_i_make_ra.
+       (scm_make_shared_array): Use scm_c_generalized_vector_length
+       instead of scm_uniform_vector_length.
+       (scm_array_in_bounds_p): Rewritten to be much cleaner.
+       (scm_i_cvref): New, doing the job of scm_cvref.
+       (scm_cvref): Use scm_i_cvref.
+       (scm_array_ref): Do not accept non-arrays when no indices are
+       given. Use scm_i_cvref to do the actual access.
+       ("uniform-array-set1"): Do not register.
+       (scm_array_set_x, scm_uniform_array_read_x,
+       scm_uniform_array_write): Handle enclosed arrays explicitly.
+       (ra2l): Use scm_i_cvref instead of scm_uniform_vector_ref to also
+       handle enclosed arrays.
+       (scm_array_to_list): Handle enclosed arrays explicitly.
+       (rapr1): Removed.
+       (scm_i_print_array_dimension): Use scm_i_cvref to also handle
+       enclosed arrays.
+       (scm_i_print_enclosed_array): New.
+       (tag_proto_table, tag_creator_table): Renamed former to latter.
+       Added "a" and "b" for strings and bitvectors, resp.
+       (scm_i_tag_to_prototype, scm_i_tag_to_creator): Renamed former to
+       latter.  Tag "a" is in the table now, no need to handle it as a
+       legacy tag.
+       (scm_raprin1): Just call scm_iprin1.
+       (scm_array_creator, scm_array_prototype): Handle enclosed arrays
+       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  <mvo@zagadka.de>
+
+       * ramap.c (cind): Changed second arg to be pointer to long instead
+       of uniform vector.
+       (scm_ramapc): Allocate index vector with scm_malloc and not as
+       uniform vector.  Wrap it in a frame so that it gets properly freed.
+       (scm_array_index_map_x): Likewise.
+
+       * unif.c: Changed all uses of scm_array_prototype to
+       scm_array_creator. (scm_i_get_old_prototype): Signal error when no
+       prototype is known.
+       (scm_uniform_array_read_x, scm_uniform_array_write): Reimplemented
+       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 <libguile.h>, include the
+       needed files directly.  Include config.h, <unistd.h> and <io.h>
+       when available.
+       (scm_uniform_vector_read_x, scm_uniform_vector_write): New.
+
+2004-11-09  Marius Vollmer  <mvo@zagadka.de>
+
+       * gh_data.c (gh_uniform_vector_length): Properly use
+       scm_c_uniform_vector_length instead of scm_uniform_vector_length.
+
+2004-11-09  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
+
+       * srfi-4.h (scm_c_uniform_vector_ref, scm_c_uniform_vector_set_x):
+       New.
+       (scm_i_uniform_vector_creator): Removed.
+       (scm_i_generalized_vector_creator): New.
+       (scm_uniform_vector_length, scm_uniform_element_size): Do not
+       handle generalized vectors, only uniform numeric vectors.
+       (alloc_uvec): Do length check here...
+       (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.
+
+       * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c: Do no
+       longer handle scm_tc7_bvect bitvectors.
+
+       * ramap.c: Use the new generalized vector functions to handle all
+       vector like things.
+
+       * vectors.h, vectors.c (scm_is_vector, scm_c_vector_length,
+       scm_c_vector_ref, scm_c_vector_set_x, scm_generalized_vector_p,
+       scm_generalized_vector_length, scm_generalized_vector_ref,
+       scm_generalized_vector_set_x, scm_generalized_vector_to_list,
+       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,
+       scm_bitvector_fill_x, scm_is_bitvector, scm_c_make_bitvector,
+       scm_c_bitvector_length, scm_c_bitvector_ref,
+       scm_c_bitvector_set_x, scm_bitvector_elements,
+       scm_bitvector_release, scm_frame_bitvector_release,
+       scm_tc16_bitvector, bitvector_free, bitvector_print,
+       bitvector_equalp, count_ones, find_first_one): New.
+       (scm_bit_count, scm_bit_position, scm_bit_set_star_x,
+       scm_bit_count_star, scm_bit_invert_x, scm_istr2bve): Rewritten
+       using the new C API for bitvectors and maybe count_ones or
+       find_first_one, as appropriate.
+       (SCM_I_MAX_LENGTH, SCM_BITVECTOR_P, SCM_BITVECTOR_BASE,
+       SCM_SET_BITVECTOR_BASE, SCM_BITVECTOR_MAX_LENGTH,
+       SCM_BITVECTOR_LENGTH, SCM_MAKE_BITVECTOR_TAG,
+       SCM_SET_BITVECTOR_LENGTH): Removed.  Replaced all uses with the
+       new functions from above.
+       (scm_i_proc_make_vector, scm_i_proc_make_string,
+       scm_i_proc_make_bitvector): Made non-static for use in
+       scm_i_generalized_vector_creator.
+       (scm_make_u1vector): Removed, replaced by scm_make_bitvector.
+       (scm_make_uve): Validate that the created object is a generalized
+       vector.
+       (scm_i_legacy_tag): Removed.
+       (scm_i_print_array): Do it here.
+       (scm_raprin1): Only print enclosed arrays.
+
+       * Makefile.am (DOT_DOC_FILES): Added srfi-4.doc.
+
+2004-11-04  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
+
+       * srfi-4.c (make_uvec): Use SCM_I_SIZE_MAX instead of SIZE_MAX for
+       added portability.
+
+       * chars.c (scm_charnames, scm_charnums): Added "sp" as an alias
+       for "space".  Thanks to Bruce Korb!
+
+       * rw.c (scm_read_string_x_partial): Bugfix, apply offset to dest
+       only after dest has been set.  Thanks to Hyper Division!
+
+       * gh_data.c (gh_uniform_vector_length): Use
+       scm_uniform_vector_length instead of SCM_UVECTOR_LENGTH.
+
+2004-11-03  Marius Vollmer  <mvo@zagadka.de>
+
+       * unif.h (SCM_UVECTOR_BASE, SCM_SET_UVECTOR_BASE,
+       SCM_UVECTOR_MAXLENGTH, SCM_UVECTOR_LENGTH, SCM_MAKE_UVECTOR_TAG,
+       SCM_SET_UVECTOR_LENGTH): Removed.
+
+2004-11-02  Marius Vollmer  <mvo@zagadka.de>
+
+        Mac OS X and OpenBSD compatibility patches from Andreas Vögele.
+       Thanks!
+
+       * backtrace.c (scm_display_backtrace_with_highlights): Join the
+       first and the second line of the SCM_DEFINE macro call, since old
+       preprocessors cannot handle definitions that are split into two
+       lines.
+
+       * inline.h (scm_cell, scm_double_cell): Don't use C99 variable
+       declarations.
+
+       * pairs.c (scm_i_chase_pairs): Replace scm_t_bits with
+       scm_t_uint32 to fix the mismatch between the function declaration
+       and definition.
+
+       * sort.c (quicksort): Don't use C99 variable declarations.
+
+       * srfi-4.c (uvec_fast_ref): Avoid a compiler warning by returning
+       SCM_BOOL_F if no type matches.
+
+       * threads.c (thread_print): Cast a pointer to size_t when printing
+       with scm_uintprint.
+
+       * unif.c (scm_i_tag_to_prototype): Make sure that "instead" gets
+       defined.
+       (scm_array_prototype): Deprecated.
+
+2004-11-02  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
+
+       * 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.
+
+       * validate.h (SCM_VALIDATE_VECTOR_OR_DVECTOR): Accept f64vectors
+       instead of the old-style dvectors.
+
+       * gh_data.c: Use new-style uniform arrays in place of old-style
+       ones.
+
+       * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c,
+       ramap.c, unif.c: Do no longer handle old-style uniform vectors.
+
+       * 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.
+
+       * random.c (scm_random_solid_sphere_x,
+       scm_random_hollow_sphere_x): Do not validate vector argument, this
+       is already done elsewhere.
+
+       * srfi-4.h, srfi-4.i.c, srfi-4.c (coerce_to_uvec,
+       scm_any_to_u8vector, etc): New.
+       (scm_uniform_element_size, scm_uniform_vector_length): Do no
+       longer handle old-style uniform vectors.
+
+       * read.c (scm_lreadr): Bugfix: include the last bit in the
+       bit vector.
+
+2004-10-29  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
+
+       * unif.h, unif.c (scm_array_creator): New.
+       (scm_i_get_old_prototype): New.
+       (scm_array_prototype): use it to return old-style prototype, never
+       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,
+       scm_i_proc_make_u1vector): New.
+       (scm_init_unif): Initialize them.
+       (scm_i_convert_old_prototype): New.
+       (scm_make_uve): Use it to get the creator procedure.  Removed all
+       old code that created old-style uniform vectors.
+       (scm_array_p): Handle generic vectors.
+       (scm_dimensions_to_uniform_array): Do not fill new array with
+       prototype when that is a procedure.
+       (scm_list_to_uniform_array): Also accept a list of lower bounds as
+       the NDIM argument.
+       (scm_i_print_array): Print rank for shared or non-zero-origin
+       vectors.
+       (tag_proto_table, scm_i_tag_to_prototype, scm_i_read_array): New.
+       (scm_raprin1): Do not call scm_i_array_print for enclosed arrays,
+       which I do not understand yet.
+       (scm_array_prototype): Explicitely handle generic vectors.
+
+       * numbers.c, number.h (scm_i_print_complex, icmplx2str): New.
+       (iflo2str): Use icmplx2str for complex numbers.
+
+       * srfi-4.c, srfi-4.h (scm_i_read_homogenous_vector,
+       scm_i_uniform_vector_prototype): Removed.
+       (scm_i_uniform_vector_creator): New.
+       (SCM_UVEC_C32, scm_c32vector, scm_make_c32vector, etc,
+       SCM_UVEC_C64, scm_c64vector, scm_make_c64vector, etc): New.
+       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.
+
+       * read.c (scm_lreadr): Call scm_i_read_array for all characters
+       following '#' that can start an array.  Explicitely disambiguate
+       'i' and 'e' between introducing numbers and uniform vectors.  Do
+       not call scm_i_read_homogenous_vector, since that is also handled
+       by scm_i_read_array now.
+
+2004-10-27  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
+
+       First cut at integrating uniform vectors from srfi-4 with the rest
+       of Guile.  This change replaces scm_tc7_byvect with a s8 uniform
+       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,
+       scm_uniform_vector_ref, scm_uniform_vector_set_x,
+       scm_uniform_vector_to_list, scm_is_uniform_vector,
+       scm_c_uniform_vector_lengths, scm_c_uniform_vector_size,
+       scm_uniform_vector_elements, scm_uniform_vector_element_size,
+       scm_uniform_vector_release): New.
+       (scm_i_uniform_vector_prototype, scm_i_uniform_vector_tag): New.
+       (scm_uniform_element_size, scm_uniform_vector_length): Moved here
+       from unif.h, unif.c and extended to handle both the old and new
+       uniform vectors.
+
+       * tags.h (scm_tc7_byvect): Commented out.
+
+       * unif.h, unif.c (scm_uniform_vector_ref, scm_array_ref): Renamed
+       the former to the latter.
+       (scm_uniform_vector_length, scm_uniform_element_size): Moved to
+       srfi-4.h, srfi-4.c.
+       (scm_make_uve): Call scm_make_s8vector for #\nul prototype.
+       (scm_array_p, scm_array_rank, scm_array_dimensions,
+       scm_transpose_array, scm_enclose_array, scm_array_ref, scm_cvref,
+       scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
+       scm_array_to_list, scm_array_prototype): Handle srfi-4 uniform
+       vectors.  Removed code for scm_tc7_byvect.
+       (scm_dimensions_to_uniform_array): Fill array with 0 when
+       prototype is #\nul.
+       (scm_i_print_array_dimension, scm_i_legacy_tag,
+       scm_i_print_array): New.
+       (scm_raprin1): Call scm_i_print_array for arrays.  Removed code
+       for scm_tc7_byvect.
+
+       * ramap.c (scm_ra_matchp, scm_array_fill_int, racp,
+       scm_array_index_map_x, raeql_1, scm_array_equal_p): Handle srfi-4
+       uniform vectors.  Removed code for scm_tc7_byvect
+
+       * print.c (iprin1): Removed code for scm_tc7_byvect.
+       * objects.c (scm_class_of): Likewise.
+       * gc-mark.c (scm_gc_mark_dependencies): Likewise.
+       * gc-card.c (scm_i_sweep_card): Likewise.
+       * evalext.c (scm_self_evaluating_p): Likewise.
+       * eq.c (scm_equal_p): Likewise.
+
+       * gh_data.c (gh_chars2byvect): Reimplemented with
+       scm_make_s8vector.
+       (gh_scm2chars): Handle s8vectors, removed code for scm_tc7_byvect.
+
+       * srfi-4.c (take_uvec): New.
+       (alloc_uvec): Use it.
+       * srfi-4.h, srfi-4.i.c (scm_take_u8vector, etc): New.
+
+       * random.c (vector_scale, vector_scale_x): Renamed former to the
+       latter, since it modifies its argument.
+       (vector_scale_x, vector_sum_squares, scm_random_normal_vector_x):
+       Do not use scm_universal_vector_length for non-uniform vectors.
+       Use scm_f64vector_elements to access innards of uniform vectors.
+
+       * convert.i.c: Convert srfi-4 style uniform vectors when
+       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  <marius.vollmer@uni-dortmund.de>
+
+       * numbers.h, numbers.c (scm_i_print_double): New.
+
+       * srfi-4.c, srfi-4.h, srfi-4.i.c: New files, initially from
+       ../srfi/ but heavily modified.
+       * Makefile.am: Add them in all the right places.
+       * init.c (scm_init_guile_1): Call scm_init_srfi_4.
+       * read.c (scm_lreadr): Call scm_i_read_homogenous_vector for '#f',
+       '#u', and '#s'.
+
+       * read.h, read.c (scm_i_input_error): Renamed from scm_input_error
+       and made non-static.  Changed all uses.
+
+2004-10-22  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
+
+       * variable.c, threads.c, struct.c, stackchk.c, smob.c, root.c,
+       print.c, ports.c, mallocs.c, hooks.c, hashtab.c, fports.c,
+       guardians.c, filesys.c, coop-pthreads.c, continuations.c: Use
+       scm_uintprint to print unsigned integers, raw heap words, and
+       adresses, using a cast to scm_t_bits to turn pointers into
+       integers.
+
+       * unif.c: Include "libguile/print.h".
+
+       * numbers.h, numbers.c (SCM_T_INTBUFLEN): Increased to cover
+       scm_t_intmax values.
+       (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.
+
+       * Makefile.am (INCLUDES): Use @LTDLINC@ instead of
+       "-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 <ltdl.h>
+       instead of <libguile-ltdl.h>.
+
+2004-10-20  Marius Vollmer  <mvo@zagadka.de>
+
+       * sort.c (quicksort): Copy pivot out of the array while
+       constructing the partitions; it could get overwritten otherwise.
+       Because of the ultimate insertion sort, this bug did not cause
+       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  <marius.vollmer@uni-dortmund.de>
 
        * numbers.c (scm_i_range_error): New.
        scm_out_of_range.       
 
        * sort.c (scm_restricted_vector_sort_x): Validate startpos <=
-       endpos.  State inclusiveness/exclusiveness if bounds in docstring.
+       endpos.  State inclusiveness/exclusiveness of bounds in docstring.
 
        * unif.c (scm_array_p): When no prototype is given, explicitely
        test for allowable types, do not simply return true.  Thanks to
 
 2004-10-08  Han-Wen Nienhuys  <hanwen@xs4all.nl>
 
+       * gc.c (scm_igc): put scm_gc_running-- before running hooks.
+
        * inline.h (scm_double_cell): abort if GC running.
        (scm_cell): idem.