Avoid modifications of cells via pointers. Use SCM_SET_CELL... instead.
[bpt/guile.git] / libguile / ChangeLog
index 5144de3..d6a8937 100644 (file)
+2000-05-04  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * numbers.h (SCM_INUM0):  Uses SCM_MAKINUM instead of SCM_PACK.
+
+       * dynl.c (dynl_obj, DYNL_OBJ, get_dynl_obj):  Removed.
+
+       (DYNL_FILENAME, DYNL_HANDLE):  Use SCM_CELL... macros instead of
+       pointer trickery.
+
+       (SET_DYNL_HANDLE):  Added.
+
+       (scm_dynamic_object_p):  Simplified.
+
+       (scm_dynamic_unlink, scm_dynamic_func):  Changed comment.  Deliver
+       better error message when accessing unlinked dynamic objects.
+       Eliminated call to get_dynl_obj.
+
+2000-05-03  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * scmsigs.c (orig_handlers) [HAVE_SIGACTION]: Fix declaration to
+       be an array of function pointers instead of being a pointer to an
+       array returning function.  Thanks to Kalle Olavi Niemitalo!
+
+2000-05-03  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * numbers.c (scm_divbigbig, scm_divbigint), numbers.h
+       (scm_divbigbig, scm_divbigint):  Don't return zero any more to
+       indicate that a division has a remainder, return SCM_UNDEFINED
+       instead.  It is improbable that anyone actually used these
+       functions outside of numbers.c.  For this reason and due to the
+       change in behaviour the functions are static now.  Thus, if
+       surprisingly there are users of these functions they will at least
+       get alarmed.
+
+       * numbers.c:  Removed #ifdef SCM_BIGDIG #endif in those functions,
+       that already have a clean dispatch order.  Note: SCM_BIGDIG is
+       always defined.
+
+       * numbers.c (scm_inexact_p):  Simplified.
+
+       * numbers.c (scm_num_eq_p, scm_less_p, scm_max, scm_min,
+       scm_product, scm_num2dbl, scm_angle):  Reordered dispatch
+       sequence, thereby fixing some comparisons of SCM values with
+       integer constants.
+
+       * numbers.c (scm_divide):  Division by zero of inums leads to an
+       error now.  (Formerly, an infinite number was returned.)
+
+       Respect the fact, that scm_divbigbig does now return SCM_UNDEFINED
+       if a division has a remainder.
+
+2000-05-02  Gary Houston  <ghouston@arglist.com>
+
+       * Makefile.am (INCLUDES): add ${INCLTDL} (thanks to Tim Mooney).
+
+2000-05-02  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * numbers.c (scm_logtest, scm_division):  Reordered dispatch
+       sequence, thereby fixing some comparisons of SCM values with
+       integer constants.
+
+       * numbers.h (scm_makdbl):  Mark as deprecated at the point of
+       declaration.
+
+       * eval.c (SCM_CEVAL, SCM_APPLY), gh_data.c (gh_double2scm,
+       gh_doubles2scm), numbers.c (scm_istr2flo, scm_max, scm_min,
+       scm_sum, scm_difference, scm_product, scm_divide, scm_sys_expt,
+       scm_sys_atan2, scm_make_rectangular, scm_make_polar,
+       scm_real_part, scm_imag_part, scm_magnitude, scm_angle,
+       scm_long2num, scm_long_long2num, scm_ulong2num), ramap.c
+       (ramap_rp, scm_array_map_x), random.c (scm_random,
+       scm_random_uniform, scm_random_normal_vector_x, scm_random_exp),
+       struct.c (scm_struct_ref), unif.c (scm_array_to_list):  Replace
+       call to scm_makdbl with a call to scm_make_real or
+       scm_make_complex, depending on whether the imaginary part is known
+       to be zero.
+
+2000-05-01  Gary Houston  <ghouston@arglist.com>
+
+       * scmsigs.c: fix the definition of orig_handlers for the case
+       that HAVE_SIGACTION is not defined (thanks to
+       Kalle Olavi Niemitalo).
+
+       * Makefile.am: remove include_HEADERS (was libguile.h)
+       libguile.h: moved to top level directory.
+
+2000-04-28  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * numbers.c (SCM_SWAP):  Moved to the top of the file to allow for
+       a wider use.
+
+       * numbers.c (scm_modulo, scm_gcd, scm_lcm, scm_logand, scm_logior,
+       scm_logxor):  Reordered dispatch sequence, thereby fixing some
+       comparisons of SCM values with integer constants.
+
+       * number.c (scm_logtest):  Removed some redundant SCM_{N}?IMP
+       tests. 
+
+2000-04-28  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * numbers.c (scm_quotient, scm_remainder):  Removed code that was
+       conditionally compiled based on BADIVSGNS.  BADIVSGNS does not
+       occur anywhere else throughout guile.
+
+       * numbers.c (scm_quotient):  Fixed parameter number in error
+       message.
+
+       * numbers.c (scm_remainder):  Reordered dispatch sequence.
+
+2000-04-25  Gary Houston  <ghouston@arglist.com>
+
+       * posix.c (scm_execlp): docstring fix (thanks to Martin
+       Grabmueller).
+
+2000-04-25  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * eval.c (undef_object):  Made into a local static variable
+       (suggested by Jost Boekemeier).
+
+2000-04-25  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * pairs.c (cxrs, scm_init_pairs):  Simplify initialization of
+       c[ad]+r functions.
+
+       * procs.c (scm_init_iprocs), procs.h (scm_subr, scm_iproc,
+       scm_dsubr, scm_init_iprocs):  Removed.
+
+       * procs.h (SCM_SUBRF, SCM_DSUBRF):  Access the cell words
+       directly instead of casting a cell to a C struct.
+
+2000-04-22  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       Better modularization of GC extensions through new C level GC
+       hooks:
+       
+       * weaks.c (scm_weaks_prehistory): New function: Add
+       scm_weak_vector_gc_init to scm_before_mark_c_hook; Add
+       scm_mark_weak_vector_spines to scm_before_sweep_c_hook.
+       (scm_scan_weak_vectors): New function; added to
+       scm_after_sweep_c_hook.
+
+       * weaks.h (scm_weak_vectors, scm_weaks_prehistory): Added
+       declarations.
+
+       * guardians.h (scm_guardian_gc_init, scm_guardian_zombify): Are
+       now static.
+
+       * guardians.c (scm_guardian_gc_init): Turned into a hook function
+       and added to scm_before_mark_c_hook.
+       (scm_guardian_zombify): Turned into a hook function and added to
+       scm_before_sweep_c_hook.
+
+       * async.c (scm_sys_gc_async_thunk): Run after-gc-hook.
+       Added #include "libguile/gc.h".
+
+       * gc.h: Added #include "libguile/hooks.h".
+
+       * gc.c: Removed #include "libguile/guardians.h".
+       (scm_before_gc_c_hook, scm_before_mark_c_hook,
+       scm_before_sweep_c_hook, scm_after_sweep_c_hook,
+       scm_after_gc_c_hook): New C level hooks.
+       (scm_after_gc_hook): New Scheme level hook.
+       (scm_gc_sweep): Moved scanning of weak vectors to weaks.c.
+       (scm_igc): Moved initialization of scm_weak_vectors and the call
+       to scm_guardian_gc_init to respective module.
+       (scm_mark_weak_vector_spines): Moved to weaks.c;
+       Call to scm_guardian_zombify moved to guardians.c;
+       Run scm_before_gc_c_hook, scm_before_sweep_c_hook,
+       scm_after_gc_c_hook at appropriate places.
+       (scm_init_gc): Initialize scm_after_gc_hook.
+
+       * hooks.c, hooks.h (scm_make_hook_with_name): Removed deprecated
+       function.
+
+       * init.c (scm_boot_guile_1): Added `scm_init_hooks'.
+
+       * Makefile.am: Added hooks.c, hooks.h, hooks.x.
+
+       * feature.c, feature.h: Broke out hook code into separate files.
+
+       * hooks.c, hooks.h: New files.
+
+       * *.*: Change includes so that they always use the "prefixes"
+       libguile/, qt/, guile-readline/, or libltdl/.
+       (Thanks to Tim Mooney.)
+
+       * Makefile.am (INCLUDES): Removed THREAD_CPPFLAGS and INCLTDL.
+       (DEFS): Added.  automake adds -I options to DEFS, and we don't
+       want that.
+       Removed all -I options except for the root source directory and
+       the root build directory.
+
+       * numbers.c (scm_odd_p, scm_even_p): Use SCM_WRONG_TYPE_ARG
+       instead of SCM_ASSERT (0, ...).  (Some compilers will complain
+       about control reaching end of function otherwise, and, besides,
+       the new code is not less clear.)
+
+       * gc.c (scm_must_malloc, scm_must_realloc, scm_must_free): Added
+       calls to malloc debugging functions. 
+
+       * init.c (scm_boot_guile_1): Added calls to debug-malloc init
+       functions.
+
+       * Makefile.am: Added debug-malloc.c, debug-malloc.h,
+       debug-malloc.x.
+
+       * debug-malloc.c, debug-malloc.h: New files.
+
+2000-04-20  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * numbers.c (scm_exact_p, scm_odd_p, scm_even_p):  Added
+       documentation strings.
+
+       * numbers.c (scm_exact_p, scm_odd_p, scm_even_p, scm_abs,
+       scm_quotient):  Reordered dispatch sequence to first handle
+       immediates, second handle bignums and finally handle generic
+       functions respectively signal wrong type arguments.  Hopefully
+       this will allow for easier separation when goops is integrated.
+
+2000-04-19  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * gc.c (which_seg):  Use SCM2PTR to convert a non immediate SCM
+       variable into a pointer to a heap cell.
+
+       * gc.c (scm_mark_locations, scm_cellp, init_heap_seg,
+       scm_unhash_name):  Remove redundant cast to SCM_CELLPTR.
+
+2000-04-19  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * print.c (scm_iprin1):  Don't assign zero to SCM values, use
+       SCM_UNDEFINED instead.
+
+       * weaks.c (scm_make_weak_vector):  Fix assignment of zero to a
+       vector element.  (Still to be improved)
+
+2000-04-19  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * eval.c (undef_cell):  Removed, replaced by:
+
+       (undef_object):  Added to replace undef_cell.
+
+       (scm_lookupcar, scm_lookupcar1):  Use undef_object.
+
+       * eval.c (scm_lookupcar, scm_lookupcar1, scm_m_atfop,
+       scm_m_atbind, CHECK_EQVISH, SCM_CEVAL), procs.h (SCM_SETCODE):
+       Don't perform arithmetic operations with SCM values.
+
+       * eval.c (scm_lookupcar, scm_lookupcar1, scm_m_atfop,
+       scm_m_atbind, scm_eval_args, scm_deval_args, SCM_CEVAL):  Use
+       symbolic names for the tc3 type codes.
+
+       * eval.c (scm_m_define, SCM_CEVAL, SCM_APPLY):  Remove redundant
+       cast to SCM.
+
+       * eval.c (scm_eval_args, scm_deval_args, SCM_CEVAL):  Made the
+       access of the struct vcell element explicit.
+
+2000-04-19  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * struct.c (scm_struct_free_light, scm_struct_free_standard,
+       scm_struct_free_entity): Use `scm_must_free' instead of `free'.
+
+       * procs.c (scm_make_subr_opt): Tell scm_must_realloc that we're
+       realloc:ing scm_subr_table ("what" instead of "who").
+
+       * numbers.c (scm_adjbig): Ditto.
+
+2000-04-18  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * unif.c (l2ra):  Don't eliminate the call to scm_array_set_x
+       itself, as was done in the previous 'patch'.  (Thanks to Radey
+       Shouman)
+
+2000-04-18  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * options.c (scm_options), read.c (recsexpr):  Remove redundant
+       SCM_IMP test.
+
+       * print.c (scm_iprin1):  Made the access of the struct vcell
+       element explicit.
+
+       * print.h (SCM_PRINT_CLOSURE):  Added call to SCM_PACK.
+
+       * ramap.c (scm_ra_eqp, ra_compare), unif.c
+       (scm_uniform_vector_ref, scm_cvref, rapr1):  Separated accesses to
+       unsigned long and signed long arrays and clarified the way the
+       access is performed.
+
+       * ramap.c (scm_array_map_x, raeql), read.c (scm_lreadr), stacks.c
+       (narrow_stack), unif.c (scm_cvref, scm_uniform_array_read_x,
+       scm_raprin1):  Use SCM_EQ_P to compare SCM values.
+
+       * strings.c (scm_makstr):  Treat the msymbol slots as a field of
+       scm_bits_t values.
+
+       * struct.h (SCM_SET_VTABLE_DESTRUCTOR):  Treat the struct data as
+       a field of scm_bits_t values.
+
+       * unif.c (l2ra):  Don't test result of scm_array_set_x against
+       zero:  It is always SCM_UNSPECIFIED.
+
+2000-04-18  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * script.c (scm_compile_shell_switches): Also enable
+       record-positions when given the --debug option.  (Thanks to Diego
+       Dainese.)
+
+2000-04-18  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * print.c (ENTER_NESTED_DATA, print_circref, scm_iprlist):
+       Compare SCM's with SCM_EQ_P.
+
+       * print.c (scm_make_print_state), srcprop.c
+       (scm_source_properties):  Use valid scheme object to initialize
+       SCM variable.
+
+       * print.c (scm_iprin1):  Remove redundant calls to SCM_UNPACK.
+
+2000-04-17  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * struct.c (scm_alloc_struct, scm_struct_free_0,
+       scm_struct_free_light, scm_struct_free_standard,
+       scm_struct_free_entity, scm_make_struct, scm_make_vtable_vtable),
+       struct.h (scm_struct_free_t, scm_alloc_struct, scm_struct_free_0,
+       scm_struct_free_light, scm_struct_free_standard,
+       scm_struct_free_entity):  Struct data regions (and thus also
+       vtable data regions) are now C arrays of scm_bits_t elements.
+
+       * gc.c (scm_gc_mark, scm_gc_sweep, scm_unhash_name):  Made the
+       mixup of glocs and structs explicit.
+
+       * gc.c (scm_unprotect_object):  Compare SCM's with SCM_EQ_P.
+
+2000-04-17  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * eval.c (scm_unmemocar):  Use macros to test for gloc cell.
+       Minimize scope of variable 'ir'.
+
+       * eval.h (SCM_IFRAME, SCM_IDIST), weaks.h (SCM_IS_WHVEC_ANY):
+       Added missing call to SCM_UNPACK.
+
+2000-04-17  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * validate.h (SCM_VALIDATE_INUM_RANGE_COPY,
+       SCM_VALIDATE_NUMBER_COPY): New macros.
+
+2000-04-16  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * script.c (scm_compile_shell_switches): Added --debug option.
+
+2000-04-16  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * vectors.c (scm_vector_set_x): Return SCM_UNSPECIFIED (as
+       specified by R5RS).
+
+2000-04-15  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * ports.h (SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P): New macros.
+       (SCM_INPORTP, SCM_OUTPORTP): Marked as deprecated.
+
+       * validate.h (SCM_VALIDATE_INPUT_PORT, SCM_VALIDATE_OUTPUT_PORT):
+       New macros.
+       Cleanup of code layout.
+
+       * ports.c, ports.h (close-input-port, close-output-port): New R5RS
+       procedures.
+
+2000-04-13  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * continuations.c (scm_make_cont, scm_dynthrow):  Completely
+       separated implementations for defined (CHEAP_CONTINUATIONS) and
+       !defined (CHEAP_CONTINUATIONS).  Also, now using memcpy for stack
+       copying.
+
+       * continuations.c (grow_stack):  Renamed from grow_throw.
+
+       * continuations.c (copy_stack_and_call):  New static function.
+
+       * continuations.c (scm_dynthrow):  Simplified and made static.
+
+       * continuations.h (scm_dynthrow):  Made static.
+
+2000-04-13  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * unif.c, unif.h (shared-array-root, shared-array-offset,
+       shared-array-increments): New primitives.
+
+2000-04-12  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * gc.c (scm_gc_sweep):  Simplify the computation of freed memory
+       size for msymbols.
+
+       * symbols.h (SCM_SLOTS, SCM_SYMBOL_FUNC, SCM_SYMBOL_PROPS,
+       SCM_SYMBOL_HASH):  The msymbol slots are now a field of scm_bits_t
+       values.
+
+       * symbols.h (SCM_SET_SYMBOL_FUNC, SCM_SET_SYMBOL_PROPS):  New
+       macros.
+
+       symbols.c (scm_intern_obarray_soft, msymbolize, scm_symbol_fset_x,
+       scm_symbol_pset_x):  Use them.
+
+       * symbols.c (scm_symbol_hash):  Unpack to access SCM raw data. 
+
+2000-04-12  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * ports.c (scm_port_print):  The port data is read as raw data.
+
+       * ports.h (SCM_TC2PTOBNUM, SCM_PTOBNUM):  Fix SCM/scm_bits_t
+       mismatch.
+
+2000-04-11  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * eval.c (SCM_CEVAL), objects.c (scm_mcache_lookup_cmethod,
+       scm_make_subclass_object), objects.h (SCM_CLASS_FLAGS,
+       SCM_ENTITY_PROCEDURE, SCM_ENTITY_SETTER), struct.c
+       (scm_struct_init, scm_struct_vtable_p, scm_make_struct,
+       scm_struct_ref, scm_struct_set_x), struct.h (SCM_STRUCT_DATA):
+       The struct data is now an array of scm_bits_t variables.
+
+       * objects.h (SCM_SET_ENTITY_PROCEDURE):  New macro.
+
+       objects.c (scm_set_object_procedure_x):  Use it.
+
+       * struct.c (scm_struct_init):  Unused variable 'data' removed.
+
+       (scm_struct_vtable_p):  Redundant SCM_IMP tests removed.
+
+2000-04-11  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * objects.h (SCM_OBJ_CLASS_FLAGS, SCM_OBJ_CLASS_REDEF), struct.h
+       (SCM_STRUCT_VTABLE_DATA, SCM_STRUCT_LAYOUT, SCM_STRUCT_VTABLE,
+       SCM_STRUCT_PRINTER):  The struct vtable data is now an array of
+       scm_bits_t variables.
+
+       * struct.h (SCM_SET_STRUCT_LAYOUT):  New macro.
+
+       struct.c (scm_make_vtable_vtable):  Use it.
+
+2000-04-11  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * symbols.c (scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
+       scm_intern_obarray_soft, scm_sysintern0,
+       scm_string_to_obarray_symbol, scm_intern_symbol,
+       scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
+       scm_symbol_bound_p, scm_symbol_set_x):  Don't use C operators to
+       compare SCM values.
+
+2000-04-11  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * numbers.c (scm_quotient, scm_modulo):  Reordered to handle the
+       case of immediate numbers parameters first.  Also, only use
+       decoded numbers for numerical comparison.
+       
+2000-04-10  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * objects.h: Don't redeclare scm_call_generic_0 and
+       scm_apply_generic.  (Thanks to Tal Tversky.)
+
+2000-04-10  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * hash.c (scm_hasher):  Use symbolic names for the tc3 constants.
+       Unpack SCM value to use it as a switch parameter.  Don't cast SCM
+       values to int values.
+
+2000-04-10  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * coop.c (mother): Handled EINTR (the wait has been interrupted by
+       a signal).
+
+2000-04-07  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * __scm.h (SCM_WTA_DISPATCH_[012n]):  To test whether a SCM value
+       contains a raw zero value it has to be unpacked.
+
+       * debug.c (with_traps_inner, scm_with_traps):  Passing SCM values
+       via void * requires unpacking / packing.
+
+       * stacks.h (SCM_STACKP):  Remove unnecessary SCM_NIMP test and use
+       SCM_EQ_P to compare SCM values.
+
+       * stacks.h (SCM_FRAME_VOID_P, SCM_FRAME_REAL_P, SCM_FRAME_PROC_P,
+       SCM_FRAME_EVAL_ARGS_P, SCM_FRAME_OVERFLOW_P):  Remove unnecessary
+       call to SCM_UNPACK.
+
+       * tags.h (SCM_NECONSP):  Define in terms of SCM_ECONSP
+
+       * tags.h (SCM_ECONSP):  Clarify the test for glocs.  This is still
+       quite ugly.
+
+2000-04-05  Michael Livshin  <mlivshin@bigfoot.com>
+
+       * async.[ch]: unexpose low-level async access macros (thanks to
+       Dirk Herrmann).
+
+       * validate.h: move async validation macros to async.c (nobody else
+       needs them anyway), and rename them.
+
+2000-04-04  Michael Livshin  <mlivshin@bigfoot.com>
+
+       * async.h: kill the scm_async_t struct.  having a heap cell
+       pretending to be a C struct is not helthy, and is not needed here
+       anyway, as asyncs happily fit in one heap cell.
+
+       * async.c: reflect the fact that asyncs are now represented by
+       single heap cell each.
+
+2000-04-04  Gary Houston  <ghouston@arglist.com>
+
+       * error.c (scm_syserror): save errno before doing anything else,
+       since it's used in two expressions and may get mutated (thanks to
+       Dirk Herrmann).
+
+2000-04-04  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * debug.c (scm_procedure_source, scm_procedure_environment),
+       gsubr.c (scm_make_gsubr_with_generic, scm_gsubr_apply), procs.c
+       (scm_procedure, scm_setter):  Return valid scheme value as dummy.
+
+       * filesys.c (scm_readdir, scm_rewinddir, scm_closedir,
+       scm_dir_print, scm_dir_free), numbers.h (SCM_COMPLEX_REAL,
+       SCM_COMPLEX_IMAG), regex-posix.h (SCM_RGX), throw.c (JBJMPBUF,
+       SETJBJMPBUF, JBJMPBUF, SETJBJMPBUF, freejb, print_lazy_catch,
+       scm_ithrow), unif.c (scm_uniform_vector_ref, scm_cvref,
+       scm_array_set_x, rapr1), unif.h (SCM_ARRAY_V, SCM_ARRAY_BASE),
+       vectors.h (SCM_VELTS, SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS):  Use
+       SCM_{SET_}?CELL_WORD* to access cell entries with raw data.
+
+       * filesys.c (scm_closedir), numbers.c (scm_addbig), numbers.h
+       (SCM_SETNUMDIGS), throw.c (JBACTIVE, SCM_JBDFRAME,
+       SCM_SETJBDFRAME): Read and modify data bits in cell entry #0 using
+       SCM_{SET_}?CELL_WORD_0.
+
+       * filesys.c (fill_select_type, retrieve_select_type, scm_select),
+       numbers.c (scm_gcd, scm_lcm, scm_integer_expt, scm_zero_p,
+       scm_product, scm_divide), posix.c (scm_getgrgid), ramap.c
+       (scm_array_fill_int, racp), throw.c (scm_catch, scm_lazy_catch,
+       scm_ithrow), unif.c (scm_make_uve, scm_array_p,
+       scm_transpose_array, scm_array_set_x, scm_bit_set_star_x,
+       scm_bit_count_star, l2ra), variable.c (prin_var,
+       scm_make_variable, scm_make_undefined_variable,
+       scm_builtin_variable), vectors.c (scm_vector_set_length_x),
+       vports.c (sf_flush, sf_close):  Don't use C operators to compare
+       SCM values.
+
+       * numbers.c (scm_odd_p, scm_even_p), variable.c (prin_var):  Must
+       unpack SCM values to access their raw contents.
+
+       * numbers.c (big2str):  Eliminate unnecessary casts to SCM.
+
+       * numbers.h (SCM_NEWREAL), regex-posix.h (SCM_RGXP), vports.c
+       (scm_make_soft_port):  Use SCM_{SET_}?CELL_TYPE to access the cell
+       type information.
+
+       * throw.c (printjb):  Eliminated unnecessary unpack.
+
+       * variable.c (make_vcell_variable):  Smob data is of type
+       scm_bits_t.
+
+2000-04-04  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * print.c: Removed promise to rewrite printer code before next
+       release.  :)
+
+2000-04-03  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * iselect.c (add_fd_sets): Insert empty statement after label.
+       (Thanks to Tim Mooney.)
+
+2000-04-03  Michael Livshin  <mlivshin@bigfoot.com>
+
+       * guardians.c (scm_guardian_zombify): mark all zombies in a
+       separate loop after processing all the currently known live
+       guardians, so as to not introduce order dependencies (thanks to
+       Gary Houston).  note that the order problems are still there if
+       some guardians are themselves zombies, but that's a sick case that
+       I'm not going to worry about.
+       also, make another outer loop to process zombified
+       guardians (which are uncovered while marking zombies).
+
+2000-04-03  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * evalext.c (scm_definedp, scm_m_undefine), gc.c
+       (scm_mark_weak_vector_spines, scm_gc_sweep), hashtab.c
+       (scm_hashq_ref, scm_hashv_ref, scm_hash_ref, scm_hashx_ref),
+       keywords.c (scm_make_keyword_from_dash_symbol), lang.c
+       (scm_nil_eq), lang.h (SCM_NILP, SCM_NIL2EOL), load.c
+       (scm_primitive_load), modules.c (scm_module_full_name), objects.c
+       (scm_class_of, scm_mcache_lookup_cmethod, scm_make_class_object),
+       ports.c (scm_close_all_ports_except), ports.h (SCM_EOF_OBJECT_P),
+       print.c (scm_iprin1, scm_prin1, scm_iprlist, scm_simple_format),
+       print.h (SCM_PRINT_STATE_P), procprop.c (scm_i_procedure_arity,
+       scm_stand_in_scm_proc, scm_procedure_property,
+       scm_set_procedure_property_x), procs.c
+       (scm_procedure_documentation), read.c (scm_lreadr, scm_lreadparen,
+       scm_lreadrecparen, scm_read_hash_extend), script.c
+       (scm_compile_shell_switches), srcprop.c (scm_source_property,
+       scm_set_source_property_x), srcprop.h (SCM_WHASHFOUNDP), stacks.c
+       (read_frame, NEXT_FRAME, read_frames, narrow_stack,
+       scm_make_stack, scm_stack_id), strop.c (scm_i_index,
+       scm_string_index, scm_string_rindex), struct.c (scm_struct_init),
+       validate.h (SCM_VALIDATE_BOOL_COPY, SCM_VALIDATE_INUM_DEF,
+       SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_PROC,
+       SCM_VALIDATE_ARRAY):  Don't use C operators to compare SCM values.
+
+       * feature.c (make_hook), keywords.c
+       (scm_make_keyword_from_dash_symbol), macros.c (scm_makacro,
+       scm_makmacro, scm_makmmacro), print.c (scm_iprin1,
+       scm_printer_apply, scm_port_with_print_state):  Smob data is of type
+       scm_bits_t.
+
+       * feature.c (print_hook), gc.c (scm_object_address), hash.c
+       (scm_ihashq, scm_ihashv), print.c (scm_iprin1, scm_ipruk), smob.c
+       (freeprint), struct.c (scm_print_struct):  Must unpack
+       SCM values to access their raw contents.
+
+       * fluids.c (apply_thunk, scm_with_fluids), hashtab.c (fold_proc,
+       scm_hash_fold), load.c (load, scm_primitive_load):  Passing SCM
+       values via void * requires unpacking / packing.
+
+       * fports.c (scm_fport_buffer_add, scm_setvbuf), procs.h
+       (SCM_SUBRNUM, SCM_SET_SUBRNUM), srcprop.h (SRCPROPBRK, SRCBRKP):
+       Read and modify data bits in cell entry #0 using
+       SCM_{SET_}?CELL_WORD_0.
+
+       * fports.c (scm_fdes_to_port), gc.c (scm_gc_for_newcell,
+       scm_gc_sweep, init_heap_seg), init.c (start_stack), ports.c
+       (scm_void_port), procs.c (scm_make_subr_opt,
+       scm_make_procedure_with_setter), root.c (scm_internal_cwdr),
+       smob.c (scm_make_smob), strports.c (scm_mkstrport):  Use
+       SCM_SET_CELL_TYPE to write the cell type information.
+
+       * gc.c (scm_gc_mark):  Use SCM_CELL_OBJECT* to access SCM values
+       from cells that are no scheme pairs.
+
+       * gc.c (scm_gc_sweep), mallocs.c (prinmalloc), mallocs.h
+       (SCM_MALLOCDATA, SCM_SETMALLOCDATA), print.c (scm_ipruk), random.h
+       (SCM_RSTATE), root.h (SCM_ROOT_STATE), smob.c (scm_smob_free),
+       srcprop.c (freesrcprops), srcprop.h (SRCPROPPOS, SRCPROPFNAME,
+       SRCPROPCOPY, SRCPROPPLIST), struct.c (scm_make_struct,
+       scm_make_vtable_vtable):  Use SCM_{SET_}?CELL_WORD* to access cell
+       entries with raw data.
+
+       * gc.c (scm_init_storage), sort.c (applyless), strop.c
+       (scm_string_to_list):  Eliminate unnecessary casts to SCM.
+
+       * mallocs.c (scm_malloc_obj):  Store result of malloc as raw
+       data.
+
+       * ports.c (scm_close_all_ports_except):  Duplicate documentation
+       text removed.
+
+       * print.c (scm_iprin1):  Use SCM_ITAG3.
+
+       * procs.h (SCM_SET_SUBRNUM):  Fix shift direction.
+
+       * snarf.h (SCM_GPROC, SCM_GPROC1, SCM_SYMBOL, SCM_GLOBAL_SYMBOL,
+       SCM_KEYWORD, SCM_GLOBAL_KEYWORD, SCM_VCELL, SCM_GLOBAL_VCELL,
+       SCM_VCELL_INIT, SCM_GLOBAL_VCELL_INIT):  Don't initialize globals
+       and static variables at their point of declaration, but rather in
+       the init function.
+
+       * tags.h (SCM_PACK):  Automatically cast to scm_bits_t.
+
+2000-04-02  Gary Houston  <ghouston@arglist.com>
+
+       * guardians.c (TCONC_IN, scm_make_guardian): set the CDR of the
+       empty tconc pair to SCM_EOL instead of SCM_BOOL_F, avoiding the
+       use of an improper list (which breaks g_print.  g_print isn't
+       used).
+       guardians.c: Added more comments and modified the make-guardian
+       docstring.  Reordered a few procedures.
+
+2000-04-01  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * eval.c (scm_lookupcar1, scm_lookupcar, scm_m_case, scm_m_cond,
+       scm_m_lambda, iqq, scm_m_define, scm_m_expand_body, unmemocopy,
+       SCM_CEVAL), procs.h (SCM_TOP_LEVEL):  Don't use C operators to
+       compare SCM values.
+
+       (scm_makprom):  Smob data is of type scm_bits_t.
+
+2000-03-31  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * backtrace.c (display_error_body), debug.c (scm_procedure_source,
+       scm_reverse_lookup), dynl.c (scm_dynamic_link):  Don't use C
+       operators to compare SCM values.
+
+       * debug.c (scm_make_debugobj), debug.h (SCM_DEBUGOBJ_FRAME,
+       SCM_SET_DEBUGOBJ_FRAME):  Update SCM_{SET_}?DEBUGOBJ_FRAME to
+       access raw cell data with SCM_{SET_}?CELL_WORD_1.
+
+       * debug.c (scm_make_debugobj):  Don't use SCM_SETCAR to set types.
+
+       * debug.c (scm_make_memoized), dynl.c (scm_dynamic_link):  Smob
+       data is of type scm_bits_t.
+
+2000-03-31  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * gdbint.c (gdb_maybe_valid_type_p), guardians.c (TCONC_EMPTYP,
+       scm_guardian_zombify):  Use SCM_EQ_P to compare SCM values.
+
+       * guardians.c (GUARDIAN):  Use SCM_CELL_WORD_1 for raw data.
+
+2000-03-31  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * ports.h (scm_port):  Change type of stream member to scm_bits_t.
+
+       * gdbint.c (unmark_port, remark_port), ports.c (scm_markstream),
+       strports.c (st_resize_port, scm_mkstrport), vports (sf_flush,
+       sf_write, sf_fill_input, sf_close, scm_make_soft_port):  Since
+       streams are now of type scm_bits_t, SCM streams have to be
+       unpacked/packed.
+
+       * ports.h (SCM_SETPTAB_ENTRY, SCM_SETSTREAM):  Cast input to
+       scm_bits_t.
+
+2000-03-31  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * coop-defs.h (struct coop_t): Added `sto'-field again because of
+       binary compatibility---let's remove it next time we alter some
+       major structure.
+
+       * coop.c (coop_quitting_p, coop_cond_create, coop_mutex_create,
+       coop_mother, coop_child): New variables.
+       (mother): New function.
+       (coop_create): New thread spawning mechanism which uses a "mother
+       thread".  The "dummy" pthreads aren't healthy enough to give birth
+       to new threads since Linux threads thinks they are asleep.
+
+       * coop-defs.h (struct coop_t): Removed dummy_mutex.
+
+       * coop-defs.h, coop-threads.c (struct coop_t): Eliminate
+       `sto'-field when GUILE_PTHREAD_COMPAT is enabled.
+
+2000-03-30  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * arbiters.c (scm_make_arbiter), async.c (scm_async), dynwind.c
+       (scm_internal_dynamic_wind):  Smob data is always of type
+       scm_bits_t.
+
+       * arbiters.c (SCM_ARB_LOCKED, SCM_LOCK_ARB, SCM_UNLOCK_ARB):
+       Access the locking information in cell entry 0 with
+       SCM_{SET_}?CELL_WORD_0 instead of SCM_*CAR.
+
+       * async.c (scm_run_asyncs):  Use SCM_NULLP to test for the empty
+       list.
+
+       * dynwind.c (scm_dowinds):  Use SCM_EQ_P to compare SCM values.
+
+       * ports.h (SCM_PTAB_ENTRY, SCM_SETPTAB_ENTRY):  Access the ptab
+       entry data using SCM_{SET_}?CELL_WORD_1 instead of SCM_{SET}?CDR.
+
+2000-03-29  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * alist.c (scm_sloppy_assq, scm_assq), eq.c (scm_eq_p, scm_eqv_p,
+       scm_equal_p), list.c (scm_ilength, scm_last_pair, scm_reverse,
+       scm_sloppy_memq, scm_delq_x, scm_delq1_x), tags.h (SCM_UNBNDP):
+       Don't use C operators == and != to compare SCM values, use
+       SCM_EQ_P instead.
+
+       * boolean.c (scm_boolean_p):  Use SCM_BOOLP to determine whether a
+       SCM value is equal to #t or #f.
+
+       * eq.c (scm_eqv_p, scm_equal_p):  Don't use SCM_CAR to access the
+       cell type entry of non immediate objects of unknown type.  Use
+       SCM_CELL_TYPE instead.
+
+       * gh_data.c (gh_scm2bool, gh_module_lookup), list.c
+       (scm_sloppy_memv, scm_sloppy_member, scm_delv_x, scm_delete_x,
+       scm_delv1_x, scm_delete1_x), scmsigs.c (scm_sigaction):  Use
+       SCM_FALSEP and SCM_TRUE_P to compare SCM values against #f and
+       #t.
+
+       * list.c (scm_listify):  Use SCM_UNBNDP to test for an unbound
+       scheme value.
+
+2000-03-29  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * coop-threads.c (scm_call_with_new_thread, scm_spawn_thread,
+       scm_make_mutex, scm_make_condition_variable): Cast data to
+       scm_bits_t in SCM_SET_CELL_WORD and SCM_NEWSMOB macros.
+
+       * coop.c (coop_create): Set `specific' field, not `data' to NULL.
+
+2000-03-29  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * smob.h (SCM_NEWSMOB, SCM_NEWSMOB2, SCM_NEWSMOB3, SCM_SMOB_DATA,
+       SCM_SET_SMOB_DATA, SCM_TC2SMOBNUM, SCM_SMOBNUM):  To access smob
+       data, use SCM_{SET_}?CELL_TYPE or SCM_{SET_}?WORD_[1-3].
+
+       Note that this implies that smob data has always to be passed as
+       values of type scm_bits_t.
+
+2000-03-29  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * threads.c (scm_init_threads): Pass 0 size to scm_make_smob_type
+       for scm_tc16_thread.  As the current COOP threads are written, GC
+       is not supposed to manage storage for threads.
+
+       * error.c (scm_error): Don't try to throw an error if
+       scm_gc_heap_lock is true.
+
+       * coop.c (coop_finish): New function.  Called at exit.
+       (coop_aborthelp): Free thread structures when threads die.
+       Finished LinuxThreads compatibility support => COOP threads now
+       mesh with LinuxThreads.
+
+       * coop-threads.c (scm_call_with_new_thread, scm_spawn_thread):
+       Changed SETCDR --> SET_CELL_WORD_1.
+
+       * coop-threads.c (scheme_launch_thread): Set word 1 of handle to 0
+       when thread dies.
+
+2000-03-29  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * boolean.h (SCM_TRUE_P):  New macro.
+
+       * boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP), pairs.h
+       (SCM_NULLP, SCM_NNULLP):  Use SCM_EQ_P to compare SCM values.
+
+2000-03-28  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * continuations.h (SCM_CONTREGS, SCM_SET_CONTREGS):  New macros to
+       access continuation data.
+
+       (SCM_SETJMPBUF):  Deprecated.  Use SCM_SET_CONTREGS instead.
+
+       (SCM_JMPBUF, SCM_DYNENV, SCM_THROW_VALUE, SCM_BASE, SCM_SEQ,
+       SCM_DFRAME):  Use SCM_CONTREGS instead of SCM_CHARS to access
+       continuation data.
+
+       * continuations.c (scm_make_cont), init.c (start_stack),
+       root.c (scm_internal_cwdr):  Use SCM_SET_CONTREGS instead of
+       SCM_SETJMPBUF.
+
+2000-03-28  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * symbols.h (SCM_LENGTH, SCM_SETLENGTH):  Access the length field
+       of strings and symbols by using SCM_{SET_}?CELL_WORD_0.
+
+       (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS):  Use SCM_{SET_}?CELL_WORD_1
+       to access the char * field of strings and symbols.
+
+2000-03-27  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * gc.h (SCM_NEWCELL, SCM_NEWCELL2):  Use SCM_SET_CELL_TYPE to set
+       the type entry of a new cell.  Added a comment about things to
+       remember when updating the list of free cells.
+
+       (SCM_FREEP, SCM_MARKEDP):  Use SCM_CELL_TYPE to access the type
+       entry of a cell.
+
+2000-03-27  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * pairs.h (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR):  Use
+       SCM_CELL_OBJECT and SCM_SET_CELL_OBJECT.  This change implies that
+       with strict type checking enabled these macros will only work if
+       given valid SCM parameters.
+
+       (SCM_GCCDR):  Moved to tags.h.
+
+       * tags.h (SCM_GCCDR):  Moved here from pairs.h.
+
+2000-03-26  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * tags.h (SCM2PTR, PTR2SCM):  Moved to gc.h.
+
+       * pairs.h (scm_cell, SCM_CELLPTR, SCM_CELL_WORD*, SCM_CELL_OBJECT*,
+       SCM_SET_CELL_WORD*, SCM_SET_CELL_OBJECT*, SCM_CELL_TYPE,
+       SCM_SET_CELL_TYPE, SCM_PTR_LT, SCM_PTR_MASK, SCM_PTR_GT,
+       SCM_PTR_LE, SCM_PTR_GE, SCM_CELL_WORD_LOC, SCM_NEWCELL,
+       SCM_NEWCELL2):  Moved to gc.h.
+
+       (SCM_CARLOC, SCM_CDRLOC, SCM_SETAND_CAR, SCM_SETAND_CDR,
+       SCM_SETOR_CAR, SCM_SETOR_CDR):  Moved to gc.h.  These names should
+       be changed, though, since the macros are not only pair related.
+
+       (SCMPTR):  Deleted.
+
+       * gc.h (SCM2PTR, PTR2SCM, scm_cell, SCM_CELLPTR, SCM_CELL_WORD*,
+       SCM_CELL_OBJECT*, SCM_SET_CELL_WORD*, SCM_SET_CELL_OBJECT*,
+       SCM_CELL_TYPE, SCM_SET_CELL_TYPE, SCM_PTR_LT, SCM_PTR_MASK,
+       SCM_PTR_GT, SCM_PTR_LE, SCM_PTR_GE, SCM_CELL_WORD_LOC,
+       SCM_NEWCELL, SCM_NEWCELL2, SCM_CARLOC, SCM_CDRLOC, SCM_SETAND_CAR,
+       SCM_SETAND_CDR, SCM_SETOR_CAR, SCM_SETOR_CDR):  Moved here from
+       tags.h and pairs.h.
+
+2000-03-25  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * tags.h (SCM_STRICT_TYPING):  New macro that, if defined,
+       activates strict compile time type checking for variables of
+       type SCM.
+       (SCM, SCM_PACK, SCM_UNPACK):  Define according to whether
+       SCM_STRICT_TYPING or SCM_VOIDP_TEST are defined.
+       (SCM_EQ_P):  Defined as a macro equivalent for eq?.
+
+2000-03-25  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * tags.h (SCM_POINTERS_MUNGED):  Removed.
+
+       * gc.c (scm_gc_sweep, init_heap_seg):  Removed use of
+       SCM_POINTERS_MUNGED, thus fixing some illegal casts to SCM.
+
+2000-03-24  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * pairs.h (SCM_CELL_OBJECT, SCM_CELL_OBJECT_[0-3],
+       SCM_SET_CELL_OBJECT, SCM_SET_CELL_OBJECT_[0-3], SCM_CELL_TYPE,
+       SCM_SET_CELL_TYPE):  Added a set of low level macros for accessing
+       cell entries.
+       (SCM_CELL_WORD_[0-3]): Renamed from the SCM_CELL_WORD[0-3].
+
+       * procs.h, procs.c:  Instead of SCM_{SET_}?CELL_WORD[12], use the
+       newly introduced SCM_{SET_}?CELL_OBJECT_[12] macros.
+
+2000-03-23  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * tags.h: Disabled definition of SCM_VOIDP_TEST.
+
+       Defining SCM as void * introduces problems which haven't been
+       handled yet.  Developers who work with these issues can enable it
+       in their working copies.
+
+       Disabling this definition exposes a set of newly introduced and
+       older misuses of types which causes warning messages during
+       compilation.  We'll fix this successively.
+
+       * gc.c (scm_mark_locations): Changed * (SCM **) X --> * (SCM *) X
+       in order to obtain a value of type SCM.
+       (scm_cellp): Updated with new changes to scm_mark_locations.
+
+       * continuations.h (SCM_SETJMPBUF): Cast second arg into SCM.
+
+       * continuations.c (scm_make_cont): Removed cast of size_t into
+       long.
+
+       * symbols.h (SCM_SETCHARS): Cast second arg into SCM.
+
+2000-03-22  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * numbers.h (SCM_SETNUMDIGS):  Use SCM_BIGSIZEFIELD macro for
+       shifting, not constant.  Thanks to Dale P. Smith.
+
+       * numbers.c (scm_sum, scm_difference):  Don't test a SCM value
+       for being less than zero.  Decode it to a C value first.  Again,
+       thank you Dale.
+
+2000-03-22  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * numbers.h, ramap.c, struct.h, vectors.h:  Don't use SCM2PTR for
+       non scheme values.  If raw data is stored in SCM variables, it has
+       to be accessed using SCM_UNPACK until a better solution is found.
+
+2000-03-22  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * tags.h (SCM_ECONSP, SCM_NECONSP): More corrections of
+       pointer-arithmetic induced by the SCM_PACK/UNPACK change.
+
+       * print.c (scm_iprin1): SCM_PACK/UNPACK corrections.
+
+       * gc.c (scm_gc_sweep): SCM_PACK/UNPACK corrections.
+
+       * eval.c (SCM_CEVAL, scm_unmemocar): SCM_PACK/UNPACK corrections.
+
+       * dynwind.c (scm_swap_bindings): SCM_PACK/UNPACK corrections.
+
+       * async.c, __scm.h: Removed lots of the old async click logic.  It
+       is possible to reinsert it by defining GUILE_OLD_ASYNC_CLICK in
+       __scm.h.  Let's try this out and dump the old code after the
+       threads reorganization.
+       (set-tick-rate, set-switch-rate): Conditionally removed.
+
+2000-03-21  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * gc.c (scm_gc_mark): Bugfix 1: The recent SCM_PACK/UNPACK change
+       made SCM values into pointers.  This turned an arithmetic
+       computation of the address of the vcell into a pointer-arithmetic
+       one, thereby screwing up marking of structs.
+       Bugfix 2: Removed incompletely introduced loop variable `j' used
+       when protecting the tail array of a struct.
+
+2000-03-21  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * struct.h (SCM_STRUCT_DATA):  Don't cast SCM values to pointers.
+
+2000-03-21  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * symbols.h, symbols.c (scm_strhash):  Declare the string
+       parameter as constant, since it is not modified.
+
+       * symbols.c (scm_intern_obarray_soft,
+       scm_sysintern0_no_module_lookup):  Can now pass constant strings
+       to scm_strhash without need for casting.
+
+2000-03-21  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * vectors.h (SCM_VELTS, SCM_VELTS_AS_STACKITEMS):  Don't cast SCM
+       values to pointers.  Use SCM2PTR instead.
+
+2000-03-21  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * async.c (scm_set_tick_rate, scm_set_switch_rate):  Don't unpack
+       results of SCM_INUM.
+
+2000-03-21  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * init.c (scm_boot_guile_1): Renamed GUILE_GC_TRIGGER_1 -->
+       GUILE_MIN_YIELD_1, GUILE_GC_TRIGGER_2 --> GUILE_MIN_YIELD_2.
+       GUILE_MIN_YIELD_X now take *positive* fractions of heap size.
+
+       * gc.c, gc.h (SCM_MIN_YIELD_1, SCM_MIN_YIELD_2,
+       min_yield_fraction, min_yield, adjust_min_yield): Renamed from
+       SCM_GC_TRIGGER_1, SCM_GC_TRIGGER_2, gc_trigger_fraction,
+       gc_trigger, adjust_gc_trigger.
+
+       * gc.c (alloc_some_heap): Further improvement of minimal heap size
+       prediction.
+       (SCM_MAX): New macro.
+       (scm_freelist_t): New field: collected_1. Previous amount of
+       collected cells.
+       (gc_sweep_freelist_finish): Trigger based on two last values of
+       freelist->collected to avoid unnecessary allocation due to
+       temporary peaks.
+       (SCM_INIT_HEAP_SIZE_1, SCM_GC_TRIGGER_1, SCM_GC_TRIGGER_2):
+       Adjusted to 45000 cells, 40% and 40%.  Gives quick startup
+       without extra heap allocation.
+
+2000-03-20  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * numbers.h (SCM_MAKINUM):  The parameter to SCM_MAKINUM should
+       already be a C value.  No need to unpack it.
+
+       * numbers.c (scm_long_long2num):  Cast the parameter to scm_bits_t
+       if we know it fits into an inum.
+
+       * ramap.c (ramap_rp):  An scm_tc7_[ui]vect object does point to a
+       field of long values.  In contrast, SCM_VELTS accesses a field of
+       SCM values.
+
 2000-03-20  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
 
        * gc.c (scm_gc_stats): Inserted explanation of local_scm_mtrigger
        etc.
+       (scm_gc_yield_1): New variable: Holds previous yield.  Used to
+       make better judgements.
+       (gc_sweep_freelist_finish): Inserted explanation of use of
+       gc_trigger.
 
        * print.h, stacks.h, options.c, options.h: Changed C++
        commentaries to C.
 
 2000-03-18  Michael Livshin  <mlivshin@bigfoot.com>
 
-       * tags.h: (SCM_DOUBLE_CELLP, SCM_NDOUBLE_CELLP): new macros.
+       * tags.h: (SCM_DOUBLE_CELLP, SCM_NDOUBLE_CELLP): new macros (bad
+       names, anyone got any better ones?)
 
        * gc.h: (typedef struct scm_freelist_t) remove from here.
 
-       * gc.c: (CELL_UP, CELL_DN) make these macros take additional
+       * gc.c: (CELL_UP, CELL_DN) made these macros take additional
        parameter (the span).
        (CLUSTER_SIZE_IN_BYTES, ALIGNMENT_SLACK) new macros.
-       (typedef struct scm_freelist_t) move here from gc.h, it had no
+       (typedef struct scm_freelist_t) moved here from gc.h, it had no
        business being externally visible.
        (typedef struct scm_heap_seg_data_t) renamed from
        scm_heap_seg_data, to be style-compliant.
        (scm_mark_locations) if the possible pointer points to a
-       multy-cell, check that it's properly aligned.
-       (init_heap_seg) alighn multy-cells properly, work with the
-       assumption that the segment size divides cleanly by cluster size
-       (so that there's no spill).
+       double-cell, check that it's properly aligned.
+       (init_heap_seg) align double-cells properly, work with the
+       assumption that the segment size divides cleanly by cluster size.
        (round_to_cluster_size) new function.
        (alloc_some_heap, make_initial_segment) use round_to_cluster_size
        to satisfy the new init_heap_seg invariant.