*** empty log message ***
[bpt/guile.git] / libguile / ChangeLog
index edb998e..24662c6 100644 (file)
@@ -1,3 +1,450 @@
+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.h (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-20  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * tags.h (SCM2PTR, PTR2SCM):  Use SCM_PACK / SCM_UNPACK correctly.
+
+       * numbers.h (SCM_INUMP, SCM_MAKINUM, SCM_INUM0, SCM_COMPLEX_REAL,
+       SCM_COMPLEX_IMAG, SCM_NUMP, SCM_BDIGITS):  Use SCM_PACK /
+       SCM_UNPACK / SCM2PTR correctly.
+
+2000-03-20  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * gc.c (adjust_gc_trigger): Improved documentation.
+       (alloc_some_heap): Since gc_trigger is used against
+       freelist->collected, this is the value which should be used to
+       predict minimum growth.
+
+2000-03-20  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * eval.h:  Fix mixup of packed/unpacked SCM values.  (Thanks
+       Thien-Thi Nguyen for the patch.)
+
+2000-03-20  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * numbers.c (scm_ash):  Fixed typing problems with the second
+       parameter and added some documentation.  (Thanks Thien-Thi Nguyen
+       for indicating the problem.)
+
+2000-03-19  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * gc.c, gc.h (scm_gc_yield): New variable.
+       (adjust_gc_trigger): Use scm_gc_yield.
+       (alloc_some_heap): Use scm_gc_yield instead of
+       scm_gc_cells_collected.
+
+       * coop-threads.c: Addd #include "root.h", #include "strings.h".
+
+       * debug.c: Added #include "root.h".  (Thanks to Thien-Thi Nguyen.)
+
+       * gc.c (scm_gc_for_newcell, adjust_gc_trigger): Improved GC
+       trigger adjustmeant: Take yield (freed cells) for all freelists
+       into account.
+       (SCM_INIT_HEAP_SIZE_1, SCM_GC_TRIGGER_1, SCM_GC_TRIGGER_2): Tuned
+       to 50000 cell heap with 45% trigger.
+       (scm_gc_cells_collected): Reintroduced.
+       (SCM_HEAP_SIZE): New macro.
+       (scm_gc_sweep): Reintroduced correct computation of
+       scm_cells_allocated.
+       (scm_freelist_t): Corrected commentary for field `cluster_size':
+       Clustersize counts objects, not cells;  New member
+       `clusters_allocated'.
+
+2000-03-19  Michael Livshin  <mlivshin@bigfoot.com>
+
+       * *.[hc]: add Emacs magic at the end of file, to ensure GNU
+       indentation style.
+
+2000-03-19  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * threads.h: Added #include "libguile/throw.h".  (Thanks to
+       Thien-Thi Nguyen.)
+
+2000-03-18  Michael Livshin  <mlivshin@bigfoot.com>
+
+       * tags.h: (SCM_DOUBLE_CELLP, SCM_NDOUBLE_CELLP): new macros.
+
+       * gc.h: (typedef struct scm_freelist_t) remove from here.
+
+       * gc.c: (CELL_UP, CELL_DN) make 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
+       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).
+       (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.
+
+2000-03-18  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * _scm.h:  Don't include async.h everywhere...
+
+       * eq.c eval.c iselect.c: ... only include it here.
+
+2000-03-18  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * _scm.h:  Don't include root.h everywhere...
+
+       * async.c continuations.c eq.c eval.c evalext.c feature.c gc.c
+       gdbint.c gsubr.c ioext.c keywords.c lang.c load.c macros.c
+       numbers.c objprop.c ports.c print.c procprop.c ramap.c read.c
+       srcprop.c stackchk.c stacks.c strports.c symbols.c unif.c
+       variable.c vectors.c vports.c: ... only include it here.
+
+2000-03-17  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * _scm.h:  Don't include strings.h everywhere...
+
+       * backtrace.c dynl.c error.c feature.c filesys.c fports.c gc.c
+       gdbint.c ioext.c load.c net_db.c numbers.c objects.c options.c
+       ports.c posix.c print.c procs.c random.c read.c regex-posix.c
+       simpos.c socket.c stacks.c stime.c strop.c strports.c struct.c
+       symbols.c unif.c vectors.c version.c vports.c: ... only include it
+       here.
+
+2000-03-17  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * _scm.h:  Don't include ports.h everywhere...
+
+       * arbiters.c backtrace.c debug.c dynl.c dynwind.c eval.c feature.c
+       fluids.c gc.c gdbint.c guardians.c hash.c keywords.c mallocs.c
+       numbers.c objects.c print.c read.c root.c smob.c srcprop.c
+       stackchk.c strports.c struct.c throw.c variable.c:  ... only
+       include it here.
+
+2000-03-17  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * _scm.h:  Don't include vectors.h everywhere...
+
+       * eq.c eval.c filesys.c gc.c gsubr.c guardians.c hash.c hashtab.c
+       keywords.c net_db.c numbers.c objects.c posix.c print.c procprop.c
+       procs.c ramap.c random.c read.c scmsigs.c socket.c sort.c stime.c
+       strports.c symbols.c unif.c vports.c weaks.c:  ... only include it
+       here.
+
+2000-03-17  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * genio.h:  removed.  (Only content was '/* delete me */'.)
+
+       * Makefile.am arbiters.c backtrace.c debug.c dynl.c dynwind.c
+       error.c filesys.c fluids.c gc.c gsubr.c guardians.c keywords.c
+       libguile.h mallocs.c numbers.c print.c random.c read.c root.c
+       srcprop.c stackchk.c struct.c threads.c throw.c variable.c:
+       Removed reference to genio.h
+
+2000-03-17  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * gc.c, gc.h: Cleanup of the change of 2000-03-15.
+       Cluster sizes are now independent of GC trigger values.
+       GUILE_GC_TRIGGER_n can now specify a relative trigger value:
+       A negative integer gives fraction of total heap size in percent.
+       (SCM_GC_TRIGGER_1, SCM_GC_TRIGGER_2): Default values set to -40.
+
+       * init.c (scm_boot_guile_1): Introduced new variable
+       GUILE_MAX_SEGMENT_SIZE; New environment variable names:
+       GUILE_INIT_SEGMENT_SIZE_1, GUILE_GC_TRIGGER_1,
+       GUILE_INIT_SEGMENT_SIZE_2, GUILE_GC_TRIGGER_2
+
+2000-03-16  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * __scm.h (GC_FREE_SEGMENTS): Disable this until we have made
+       freeing of segment work with the new GC scheme.  (Thanks to
+       Michael Livshin.)  Oops, also happened to make GUILE_NEW_GC_SCHEME
+       the default, but I'll let this change stay in CVS Guile since this
+       code is not expected to contain serious bugs.
+
+2000-03-16  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * gc.c, gc.h (scm_map_free_list): Define also if GUILE_DEBUG is
+       defined.
+       (scm_free_list_length): New procedure (GUILE_DEBUG).
+       Fixed a small but serious bug introduced by the previous change.
+
+       * gc.c (scm_gc_sweep): Moved variable n_objects to inner sweep
+       loop and declare as register.
+
+       * gc.c (scm_gc_sweep): Sigh... forgot to clear private freelists
+       after GC.
+
+Wed Mar 15 08:27:04 2000  Greg J. Badros  <gjb@cs.washington.edu>
+
+       * fluids.c: Docstring patch from Keisuke Nishida.  Some
+       reindentation, too, and a couple formals renamed.  Should
+       fluid-set! return UNSPECIFIED instead of a value?
+
+Wed Mar 15 08:24:58 2000  Greg J. Badros  <gjb@cs.washington.edu>
+
+       * Makefile.am: Separate out DOT_X_FILES and DOT_DOC_FILES, and
+       generate the latter from the concrete listing of the former.  Then
+       make guile-procedures.txt depend on DOT_DOC_FILES instead of
+       *.doc, so that rebuilding it works.
+
+Wed Mar 15 08:12:14 2000  Greg J. Badros  <gjb@cs.washington.edu>
+
+       * libguile.h: Include libguile/validate.h.  Thanks Keisuke Nishida!
+
+       * guile-snarf.awk.in: Replace docstring line-ending \n" and \n\n"
+       with nothing and \n, respectively. Thanks Keisuke Nishida for
+       noticing this problem.
+
+2000-03-15  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * __scm.h (GUILE_NEW_GC_SCHEME): Define this if you want to test a
+       new way of allocating heap.  It makes Guile fast, but still
+       contains bugs.
+
+       * gc.c, gc.h, pairs.h, init.c: Implementation of a new way of
+       allocating heap.  The basic idea is to trigger GC every Nth
+       allocated cell and grow heap when free list runs out.  The scheme
+       has been extended so that GC isn't triggered until all remaining
+       cells are used.  The implementation is also prepared for
+       development in the direction of POSIX threads.
+
+       * gc.c (SCM_EXPHEAP): In order to grow by a factor of 1.5,
+       SCM_EXPHEAP should return half of the heap size.
+
+2000-03-14  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       The following change to init.c is only enabled if Guile was
+       configured with --enable-guile-debug.
+
+       * init.c (scm_i_getenv_int): New function.
+       (scm_boot_guile_1): Use the environment variables
+       GUILE_INIT_HEAP_SIZE, GUILE_INIT_HEAP_SIZE2 to select heap size if
+       they exist.  (This may be replaced by a Scheme level mechanism in
+       the future.)
+
+       * objprop.c (s_scm_set_object_property_x): Use scm_assq instead of
+       scm_assoc.  (Thanks to Keisuke Nishida.)
+
+2000-03-14  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * eval.c, lang.c, lang.h (scm_lisp_nil, scm_lisp_t): Renamed from
+       scm_nil, scm_t.  (Thanks to Keisuke Nishida.)
+
+2000-03-14  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * init.c (scm_boot_guile_1): Use same initial segment size for
+       1-word and 2-word segments.  Having the smaller size causes Guile
+       to GC too often.  Obviously something needs to be done to allow
+       for a smaller 2-word segment without this to happen.  (The amount
+       of heap for each type should be automatically adapted to the
+       application somehow.)
+
+       [Almost all of these changes should be documented in the NEWS
+       file.]
+
+       * gc.h (scm_freelist_t): New type.
+
+       * pairs.h (SCM_NEWCELL, SCM_NEWCELL2): Use new style freelists.
+
+       * gc.c (SCM_INIT_HEAP_SIZE): Changed from 32768 --> 40000 so that
+       all of Guile basics fits into one segment and there suitable room
+       for work.
+       (SCM_EXPHEAP): Now takes an argument.  Grow by a factor of 1.5
+       instead of 2.
+       (scm_freelist, scm_freelist2): Now of type scm_freelist_t.
+       Freelists now contains information about object span, cells
+       collected and amount of cells in heap segments belonging to the
+       list.
+       (scm_heap_size, scm_gc_cells_collected): Removed.
+
+       * init.c (scm_boot_guile_1): Make 2-word segment 8K (512 cells).
+
+       * Makefile.am (libguile_la_LDFLAGS): Bumped library version
+       number.
+
+       * __scm.h eq.c, eval.c, gc.c, gc.h, gh_data, hash.c, numbers.c,
+       numbers.h, objects.c, ramap.c, random.c, unif.c, unif.h: Extensive
+       rewrite of handling of real and complex numbers.
+       (SCM_FLOATS, SCM_SINGLES): These #ifdef conditionals have been
+       removed along with the support for floats.  (Float vectors are
+       still supported.)
+
+       * tags.h (scm_tcs_bignums): Removed.
+       (scm_tc16_bigpos, scm_tc16_bigneg): Replaced by scm_tc16_big.
+       Use SCM_BIGSIGN(x) to test for sign!
+       (scm_tc16_big): The new bignum type.
+       (SCM_REAL_PART, SCM_IMAG_PART): Removed.
+
+       * numbers.h (SCM_BIGSIGN): Sign moved to bit 16.
+       (scm_makdbl): Deprecated.
+       (SCM_NEWREAL, SCM_NEWCOMPLEX): New macros.
+       (SCM_SINGP): Deprecated.
+       (SCM_FLO): Removed.
+       (SCM_INEXP, SCM_CPLXP): Deprecated.
+       (SCM_INEXACTP, SCM_COMPLEXP): New macros.
+       (SCM_COMPLEX_REAL, SCM_COMPLEX_IMAG): Renamed from
+       SCM_REAL, SCM_IMAG (and now only valid for complex numbers).
+       (SCM_REAL, SCM_IMAG): New, *deprecated*, selectors which work both
+       for doubles and complex numbers.
+       (SCM_REAL_VALUE): New selector for doubles.
+       (scm_double_t, scm_complex_t): New types.
+       (scm_dbl): Removed.
+
+       * numbers.c (scm_floprint, scm_floequal): Removed.
+       (scm_print_real, scm_print_complex, scm_real_equalp,
+       scm_complex_equalp): New functions.
+
+       * unif.c (scm_makflo): Removed.
+
+       * smob.h (SCM_SMOB_PREDICATE): New macro.
+       (SCM_NEWSMOB2, SCM_RETURN_NEWSMOB2, SCM_NEWSMOB3,
+       SCM_RETURN_NEWSMOB3): New macros.
+
+1999-11-21  Michael Livshin  <mlivshin@bigfoot.com>
+
+       The following changes implement primitive support for double cells
+       (i.e. four-word cells) and change the representation of some
+       things to multi-cells instead of cons+malloc.  (Applied and
+       modified by mdj.)
+
+       * pairs.h (SCM_NEWCELL2): double-cell variants of SCM_NEWCELL.
+       (SCM_CELL_WORD, SCM_CELL_WORDLOC, SCM_SET_CELL_WORD): primitive
+       multi-cell access macros (used by the ones below).
+       (SCM_CELL_WORD[0-3], SCM_SET_CELL_WORD[0-3]): multi-cell access
+       macros.
+
+       * gc.c (scm_freelist2): multi-cell freelists.
+       (inner_map_free_list): map_free_list, parameterized on ncells.
+       "nn cells in segment mm" was misleading for ncells > 1; changed to
+       "objects".  still print cells too, though.
+       (scm_map_free_list): rewritten using inner_map_free_list.
+       (scm_check_freelist): get freelist as parameter, since now we have
+       more than one.
+       (scm_debug_newcell2): multi-cell variants of
+       scm_debug_newcell.
+       (scm_gc_for_newcell): take ncells and freelist pointer as
+       parameters.
+       (scm_gc_mark): add case for tc7_pws (procedures with setters are
+       now double cells).
+       (scm_gc_sweep): don't free the float data, since it's not malloced
+       anymore.
+       (init_heap_seg): didn't understand what n_new_objects stood for,
+       so changed to n_new_cells.
+       (make_initial_segment): new function, makes an initial segment
+       according to given ncells.
+       (scm_init_storage): call make_initial_segment, for ncells={1,2,3}.
+
+       * numbers.c (scm_makdbl): no malloc'ing needed, so the
+       {DEFER,ALLOW}_INTS thing removed.
+
+       * numbers.h (struct scm_dbl): changed to represent a double cell,
+       with the number in the second half.
+
+       * dynwind.c: changed the wind-guards representation to double
+       cell.
+
+       * procs.c, procs.h: changed the procedure-with-setter representation
+       to double cell.
+
+       * async.c, async.h: made async representation a double cell.
+
+       * dynl.c: made dynamic_obj representation a double cell.
+
 2000-03-13  Gary Houston  <ghouston@arglist.com>
 
        * ports.c (flush_void_port): renamed to flush_port_default.
        that we can't use autoconf for this.  Autoconf itself relies on
        the existence of `sed' somewhere on your path.)  (Thanks to Dirk
        Herrman.)
-       
+
 2000-03-13  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
 
        * Makefile.am (libguile_la_SOURCES): Moved iselect.c here from
@@ -97,10 +544,10 @@ Sun Mar 12 13:26:30 2000  Greg J. Badros  <gjb@cs.washington.edu>
        * struct.c, coop-threads.c: SCM_ASSCM/ASWORD fixes.
 
 2000-03-12  Marius Vollmer  <mvo@zagadka.ping.de>
-       
+
        * init.c (scm_standard_stream_to_port): Check whether the file
        descriptor is valid and substitute "/dev/null" when not.
-       
+
 2000-03-12  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
 
        * coop-defs.h (struct timespec): Conditionally defined.
@@ -116,14 +563,14 @@ Sun Mar 12 13:26:30 2000  Greg J. Badros  <gjb@cs.washington.edu>
        code.  It moves things to better places, makes arguments more
        consistent with the POSIX API (which is used in GNOME's glib), and
        adds new functionality.
-       
+
        * readline.c (scm_init_readline): Added new arg to scm_init_mutex.
 
        * coop-defs.h (scm_mutex_trylock): New macro: alias for
        coop_mutex_trylock.
        (scm_cond_init): Changed definition to
        coop_new_condition_variable_init.
-       
+
        * coop.c: #include <errno.h>
        (coop_timeout_qinsert): Moved here from iselect.c
        (coop_new_mutex_init, coop_new_condition_variable_init): New
@@ -167,7 +614,7 @@ Sun Mar 12 13:26:30 2000  Greg J. Badros  <gjb@cs.washington.edu>
 
 Thu Mar  9 11:33:25 2000  Greg J. Badros  <gjb@cs.washington.edu>
 
-       * vectors.h (SCM_VELTS_AS_STACKITEMS): Added this macro to help in 
+       * vectors.h (SCM_VELTS_AS_STACKITEMS): Added this macro to help in
        eliminating some warnings.
 
        * unif.c, strports.c, print.c, options.c: Fix some warnings on
@@ -183,7 +630,7 @@ Thu Mar  9 11:33:25 2000  Greg J. Badros  <gjb@cs.washington.edu>
        storing tags and immediates (now a long int).  Introduced
        SCM_ASWORD and SCM_ASSCM for conversion. Fixed various dubious
        code in the process: arbiter.c (use macros), unif.c (scm_array_p),
-       
+
 Wed Mar  8 10:15:59 2000  Greg J. Badros  <gjb@cs.washington.edu>
 
        * numbers.c:  Use SCM_VALIDATE_LONG_COPY, and longs, not ints, in
@@ -226,7 +673,7 @@ Thu Mar  2 15:13:25 2000  Greg J. Badros  <gjb@cs.washington.edu>
 
 Thu Mar  2 12:38:30 2000  Greg J. Badros  <gjb@cs.washington.edu>
 
-       * list.c: Moved append docs to append! Thanks Dirk Hermann.  Also, 
+       * list.c: Moved append docs to append! Thanks Dirk Hermann.  Also,
        added append docs from R4RS.
 
        * strings.c: Docstring typo fix, + eliminate unneeded IMP tests.
@@ -234,7 +681,7 @@ Thu Mar  2 12:38:30 2000  Greg J. Badros  <gjb@cs.washington.edu>
 
        * chars.h: Provide SCM_CHARP, SCM_CHAR, SCM_MAKE_CHAR and
        deprecate SCM_ICHRP, SCM_ICHR, SCM_MAKICHR.  Thanks Dirk Hermann!
+
        * *.h, *.c: Use SCM_CHARP, SCM_CHAR, SCM_MAKE_CHAR throughout.
        Drop use of SCM_P for function prototypes... assume an ANSI C
        compiler.  Thanks Dirk Hermann!
@@ -249,7 +696,7 @@ Sat Feb 19 12:20:12 2000  Greg J. Badros  <gjb@cs.washington.edu>
 Sun Feb 13 19:11:42 2000  Greg J. Badros  <gjb@cs.washington.edu>
 
        * arbiters.c, eq.c, gc.c, guardians.c, list.c, ports.c, print.c,
-       regex-posix.c, scmsigs.c, stime.c, strings.c, variable.c, stime.c, 
+       regex-posix.c, scmsigs.c, stime.c, strings.c, variable.c, stime.c,
        strings.c, variable.c:  Added lots of documentation, cleaned up
        some existing documentation.  Occasionally changed formal params
        to match docs.  Also folded an #ifdef into the inners of a
@@ -309,7 +756,7 @@ Sun Feb  6 20:26:21 2000  Greg J. Badros  <gjb@cs.washington.edu>
 
        * strings.h: don't use SCM_P.  don't include <string.h>.
        * error.c, gh_data.c, ports.c, script.c, strop.c: include <string.h>.
-       
+
        * strings.c (scm_string_ref): make the 2nd argument compulsory.
        previously it defaulted to zero for no good reason that I can see.
        use a local variable for SCM_INUM (k).  replace
@@ -335,7 +782,7 @@ Sun Feb  6 20:26:21 2000  Greg J. Badros  <gjb@cs.washington.edu>
        "select" tests port buffers for the ability to provide input
        or accept output.  Previously only the underlying file descriptors
        were checked.  Rewrote the docstring.
+
 Thu Jan 27 10:14:25 2000  Greg J. Badros  <gjb@cs.washington.edu>
 
        * vectors.c, symbols.c, strorder.c: Documentation cut and pasted
@@ -357,13 +804,13 @@ Wed Jan 26 17:33:52 2000  Greg J. Badros  <gjb@cs.washington.edu>
 
 Wed Jan 26 10:02:11 2000  Greg J. Badros  <gjb@cs.washington.edu>
 
-       * tag.c:  Added doc for `tag', but mark as deprecated since Mikael 
+       * tag.c:  Added doc for `tag', but mark as deprecated since Mikael
        suggests removing tag.c altogether (and using a new `class-of'
        instead).
 
        * strings.c:  Added documentation from Gregg A. Reynolds.  Edited
        a bit by me to use FOO instead of @var{foo} and to have the
-       summary come before preconditions on input.  Also dropped trailing 
+       summary come before preconditions on input.  Also dropped trailing
        (rnrs) note.
 
        * gsubr.c: Do not use SCM_DEFINE for `gsubr-apply'. Register the
@@ -385,7 +832,7 @@ Tue Jan 25 17:15:47 2000  Greg J. Badros  <gjb@cs.washington.edu>
        * eq.c: Added docs for eq?, eqv? equal? abridged from R4RS.
 
        * boolean.c: Added docs for `not', `boolean?' (by hand).
-       
+
 Tue Jan 25 13:28:56 2000  Greg J. Badros  <gjb@cs.washington.edu>
 
        * random.c: Added documentation, from SLIB page:
@@ -399,7 +846,7 @@ Mon Jan 24 17:50:20 2000  Greg J. Badros  <gjb@cs.washington.edu>
 
 2000-01-23  Gary Houston  <ghouston@arglist.com>
 
-       * filesys.c (scm_chown): omit port/fdes support if HAVE_FCHOWN is 
+       * filesys.c (scm_chown): omit port/fdes support if HAVE_FCHOWN is
        not defined (thanks to Richard Y. Kim).
 
 Thu Jan 20 13:00:38 2000  Greg J. Badros  <gjb@cs.washington.edu>
@@ -446,7 +893,7 @@ Tue Jan 18 13:21:08 2000  Mikael Djurfeldt  <mdj@r11n07-s.pdc.kth.se>
           stacks.c, stime.c, strings.c, strop.c, strports.c, struct.c,
           symbols.c, throw.c, unif.c, vectors.c, version.c, vports.c,
           weaks.c: Converted docstrings to ANSI C format.
-       
+
        * filesys.c (scm_chmod), simpos.c (scm_system), version
        (scm_version), vports (scm_make_soft_port): Escape " occuring
        inside docstring.
@@ -482,7 +929,7 @@ Tue Jan 11 18:24:18 2000  Greg J. Badros  <gjb@cs.washington.edu>
        * guile-doc-snarf.in: Use new $fullfilename for running
        guile-func-name-check, and put "$fullfilename" and "$filename" in
        quotes at uses to make sure re-splitting on whitespace does not
-       occur (so filenames w/ embedded whitespace would work okay, though 
+       occur (so filenames w/ embedded whitespace would work okay, though
        I sure hope we never have to deal with that! :-) ).  Thanks to
        Mikael for pointing out the source_dir != build_dir was broken.
 
@@ -560,7 +1007,7 @@ Tue Jan 11 13:44:07 2000  Greg J. Badros  <gjb@cs.washington.edu>
        * ramap.c: Fix #if 0'd out code to be syntactically acceptable to
        guile-func-name-check.
 
-       * guile-doc-snarf.in: Run guile-func-name-check on the file before 
+       * guile-doc-snarf.in: Run guile-func-name-check on the file before
        doing the snarf.
 
 Tue Jan 11 11:31:10 2000  Greg J. Badros  <gjb@cs.washington.edu>
@@ -585,7 +1032,7 @@ Tue Jan 11 10:41:46 2000  Greg J. Badros  <gjb@cs.washington.edu>
 
        * print.h, print.c (scm_simple_format): Added `simple-format'
        primitive.  It's the old scm_display_error, with ARGS now a rest
-       parameter, and the destination first instead of last (and a couple 
+       parameter, and the destination first instead of last (and a couple
        new capabilities inspired by `format' -- #t as destination means
        current-output-port, #f means return the formatted text as a
        string.
@@ -606,7 +1053,7 @@ Tue Jan 11 10:41:46 2000  Greg J. Badros  <gjb@cs.washington.edu>
        * dynl.c: Use ANSI prototypes.
        (sysdep_dynl_link): Use lt_dlopenext instead of lt_dlopen.
        * scmconfig.h.in: Do not change, as it is automatically generated.
-       
+
     1999-07-25  Thomas Tanner  <tanner@ffii.org>
 
            * dynl-dl.c, dynl-dld.c, dynl-shl.c, dynl-vms.c: deleted
@@ -643,12 +1090,12 @@ Tue Jan 11 10:41:46 2000  Greg J. Badros  <gjb@cs.washington.edu>
        scm_lookupcar1: throw an error with key 'unbound-variable instead
        of 'misc-error when an unbound variable is encountered.
 
-       * filesys.c (scm_mkdir, scm_rmdir, scm_getcwd, scm_select, 
+       * filesys.c (scm_mkdir, scm_rmdir, scm_getcwd, scm_select,
        scm_symlink, scm_readlink, scm_lstat),
        posix.c (scm_setpgid, scm_setsid, scm_ctermid, scm_tcgetpgrp,
        scm_tcsetpgrp, scm_uname, scm_setlocale, scm_mknod, scm_nice,
        scm_sync),
-       simpos.c (scm_system), 
+       simpos.c (scm_system),
        stime.c (scm_times, scm_strptime):
        move the HAVE_XXX feature tests out of the procedure bodies.
        don't use SCM_SYSMISSING.
@@ -672,9 +1119,9 @@ Fri Jan  7 15:50:46 2000  Greg J. Badros  <gjb@cs.washington.edu>
        * scm_validate.h (SCM_OUT_OF_RANGE): Use scm_out_of_range_pos to
        report the position of the argument.
 
-       * error.h, error.c (scm_out_of_range_pos):  Added this function to 
+       * error.h, error.c (scm_out_of_range_pos):  Added this function to
        take extra "pos" argument, the position number of the errant
-       argument. 
+       argument.
 
        * debug.c: Use SCM_OUT_OF_RANGE instead of scm_out_of_range.
 
@@ -713,7 +1160,7 @@ Thu Jan  6 11:22:53 2000  Greg J. Badros  <gjb@cs.washington.edu>
 
 Thu Jan  6 11:21:49 2000  Greg J. Badros  <gjb@cs.washington.edu>
 
-       * alist.c: Do not report mismatch errors on some uses of `tmp' (do 
+       * alist.c: Do not report mismatch errors on some uses of `tmp' (do
        this by using SCM_ARG2 instead of `2' in the SCM_VALIDATE_CONS
        macro call.
 
@@ -776,7 +1223,7 @@ Wed Jan  5 10:50:39 2000  Greg J. Badros  <gjb@cs.washington.edu>
        formal in the current argument snarfing check.
 
        * snarf.h: Give new definition of SCM_ASSERT when in
-       snarfing mode to output a lexically-identifiable sequence that the 
+       snarfing mode to output a lexically-identifiable sequence that the
        guile-snarf.awk script uses to verify argument/position matching.
 
        * ramap.c: Remove extraneous #undef FUNC_NAME.
@@ -784,7 +1231,7 @@ Wed Jan  5 10:50:39 2000  Greg J. Badros  <gjb@cs.washington.edu>
 Wed Jan  5 08:36:38 2000  Greg J. Badros  <gjb@cs.washington.edu>
 
        * guile-doc-snarf.awk.in: Removed -- guile-snarf.awk.in is the
-       current version of the same functionality; it writes the .x output 
+       current version of the same functionality; it writes the .x output
        to stdout instead of directly into the file.
 
 Wed Jan  5 08:15:04 2000  Greg J. Badros  <gjb@cs.washington.edu>
@@ -816,7 +1263,7 @@ Tue Jan  4 14:21:35 2000  Greg J. Badros  <gjb@cs.washington.edu>
 Mon Jan  3 08:30:02 2000  Greg Harvey  <Greg.Harvey@thezone.net> (applied --01/03/00 gjb)
 
        * gc.c (scm_debug_newcell): Added SCM_SETCAR of the newly
-       allocated cell. 
+       allocated cell.
 
        * pairs.h: Added a comment about the need for the SCM_SETCAR in
        SCM_NEWCELL macro.