* Added Jost Boekemeier's implementation of environments to guile.
[bpt/guile.git] / libguile / ChangeLog
index 220f544..3eac523 100644 (file)
@@ -1,3 +1,871 @@
+2000-08-25  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * Makefile.am:  Added all necessary environments.* files.
+
+       * init.c:  Include environments.h.
+
+       (scm_boot_guile_1):  Initialize the environments.
+
+       * environments.[ch]:  Added.  Most of the credit for these files
+       goes to Jost Boekemeier.
+
+2000-08-25  Mikael Djurfeldt  <mdj@linnaeus.mit.edu>
+
+       * procprop.c: #include "libguile/smob.h"; handle applicable smobs.
+
+2000-08-24  Keisuke Nishida  <kxn30@po.cwru.edu>
+
+       * smob.h (scm_smob_descriptor): Added `apply' and `gsubr_type'.
+       * smob.c (scm_make_smob_type): Initialize `apply' and `gsubr_type'.
+       (scm_set_smob_apply): New function.
+       (scm_smob_apply_0, scm_smob_apply_1, scm_smob_apply_2,
+       scm_smob_apply_3): New functions.
+       * eval.c (SCM_CEVAL, SCM_APPLY): Added dispatch for applicable smobs.
+       * procs.c (scm_procedure_p): Check applicable smobs.
+
+2000-08-24  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * Makefile.am (BUILT_SOURCES): Experimentally added scmconfig.h
+       also here.  (This is supposed to make sure that scmconfig.h is
+       built before all sources in order to prevent that everything has
+       to be rebuilt again.  Hope it works---I'm just guessing. :)
+
+       * fluids.c (scm_fluid_set_x): Return SCM_UNSPECIFIED.
+
+2000-08-23  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * gc.c (scm_gc_mark): Don't use GUILE_DEBUG flag to compile in
+       extra tests.  (GUILE_DEBUG is only supposed to make extra
+       debugging functions available.)
+
+2000-08-21  Michael Livshin  <mlivshin@bigfoot.com>
+
+       * gc.h (SCM_GC_CARD_N_CELLS): change to be a nice non-confusing
+       constant.
+
+2000-08-19  Michael Livshin  <mlivshin@bigfoot.com>
+
+       * gc.c (scm_gc_sweep): added a `continue' statement that have
+       fallen through the cracks in the merge.  thanks to Shuji Narazaki!
+
+       * gc.h: removed some stuff that broke compilation for people and
+       wasn't actually needed anyway.
+
+2000-08-18  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * filesys.c (scm_fcntl): Docstring fix - missing newlines inserted.
+
+       * net_db.c (scm_gethost, scm_getnet, scm_getproto, scm_sethost,
+       scm_setnet, setproto, setserv): Argument names changed to match
+       doc string.
+
+       * feature.c (scm_program_arguments): New docstring.
+
+       * simpos.c (scm_getenv): Reflow docstring.
+
+       * eq.c (scm_eq_p, scm_eqv_p, scm_equal_p): Add texinfo markup to
+       docstrings.
+
+       * chars.c (scm_char*): Docstring fixes - texinfo markup.
+
+2000-08-18  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * boolean.c (scm_not, scm_boolean_p): Docstring fixes - add
+       texinfo markup and remove trailing newlines.
+
+2000-08-17  Michael Livshin  <mlivshin@bigfoot.com>
+
+       this changes the Guile GC to use cards (aka "chunklets").
+       (most of the ideas and some of the code are by Greg Harvey, though
+       the code is probably unrecognizable now.  the original chunklet
+       proposal, way back, is by Dale Jordan).
+
+       * tags.h: (SCM_GCTYPE16, SCM_GCCDR, SCM_GC[8]MARKP,
+       SCM_SETGC[8]MARK, SCM_CLRGC[8]MARK): moved from here into gc.h.
+       some (most) of these are probably going to be deprecated.
+
+       * gc.h (SCM_MARKEDP): simplified, there are no different mark bit
+       locations anymore.
+       (SCM_GC_CARD_*, SCM_C_BVEC_*): lots of new macros to deal with
+       cards and bvecs (bit-vectors).
+
+       * gc.c: (scm_default_init_heap_size_*): defined to take cards into
+       account, but keeping more or less the same values as previously.
+       added some simple helper macros.
+       (CLUSTER_SIZE_IN_BYTES, ALIGNMENT_SLACK): defined to take cards
+       into account.
+       (BVEC_*, scm_mark_space_t, current_mark_space, mark_space_ptr,
+       current_mark_space_offset, mark_space_head, get_bvec,
+       clear_mark_space): new functions and supporting variables, types
+       and macros that implement mark space management.
+       (scm_igc): clear the mark space (all of it) before beginning the
+       mark phase.
+       (scm_gc_mark): changed the tests for rogue cells, much simplified
+       throughout (no different mark bit locations to worry about now).
+       (scm_mark_locations): don't consider card header cells.
+       (scm_cellp): ditto.
+       (scm_gc_sweep): simplified.
+       (init_heap_seg): changed to take cards into account.
+
+2000-08-16  Michael Livshin  <mlivshin@bigfoot.com>
+
+       * stime.c (scm_c_get_internal_run_time): new function, same as
+       scm_get_internal_run_time but returns a long.  it's used by the GC
+       for timekeeping, since with scm_get_internal_run_time there is a
+       (extremely theoretical) possibility of consing.
+       (scm_get_internal_run_time): redefined in terms of
+       scm_c_get_internal_run_time.
+
+       * stime.h: added prototype for scm_c_get_internal_run_time.
+
+       * gc.c (scm_gc_stats): add more obscure stats, such as: mark time,
+       sweep time, total marked cells, total swept cells, and number of
+       times GC was invoked.
+       (gc_start_stats): renamed from scm_gc_start, made static, taught
+       to init the new stats.
+       (gc_end_stats): renamed from scm_gc_end, made static, taught to
+       calculate the new stats.
+       (scm_igc): don't call gc_start_stats unless we are sure that we
+       are indeed going to collect.  also, added some timekeeping between
+       the mark and sweep phases.
+       (scm_gc_sweep): count number of cells we sweep as we go.
+
+       * gc.h: removed prototypes for scm_gc_{start,end}.
+
+2000-08-13  Mikael Djurfeldt  <mdj@linnaeus.mit.edu>
+
+       * alist.c (scm_assq, scm_assv, scm_assoc): Report argument type
+       error for the alist rather than the sublist where the type
+       mismatch is discovered.
+
+2000-08-13  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * root.c (s_scm_call_with_dynamic_root): Docstring fix - rogue
+       newline.
+
+2000-08-12  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * numbers.c (scm_ash): Docstring fix - missing newlines.
+
+       * ports.c (scm_port_filename): Docstring fix - missing newline.
+
+       * strports.c (scm_eval_string): Docstring fix - missing newline.
+
+       * vports.c (s_scm_make_soft_port): Docstring updated so that
+       example is correct.
+
+       * strop.c: Docstring fixes - quotation marks and backslashes
+       needed quoting.
+
+       * numbers.c (s_scm_logand): Docstring fix - "@end lisp" inserted.
+
+2000-08-11  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * macros.c: Remove surplus newlines from end of docstrings.
+
+       * list.c (scm_list_tail): Add @deffnx line to docstring for
+       list-cdr-ref.
+
+       * keywords.c: Docstring improvements in conjunction with new
+       reference manual doc on keywords.
+
+       * error.c (scm_error_scm): Fix texinfo syntax error in
+       docstring.  (@code(~S) should be @code{~S}.)
+
+       * dynl.c: Remove surplus newlines from end of docstrings.
+
+2000-08-11  Mikael Djurfeldt  <mdj@linnaeus.mit.edu>
+
+       * eval.c (scm_eval): Backward incompatible change: Now takes an
+       environment specifier as second arg.  `eval' hereby becomes R5RS
+       compatible.
+       (scm_i_eval_x, scm_i_eval): New functions (replace
+       scm_eval_3).
+       (scm_eval2, scm_eval_3): Deprecated.
+       (scm_top_level_lookup_closure_var): Deprecated.
+
+       * eval.h: #include "struct.h".
+
+       * evalext.c (scm_definedp): Have to work before module system is
+       booted.
+
+       * modules.h (SCM_MODULEP, SCM_VALIDATE_MODULE,
+       SCM_MODULE_OBARRAY, SCM_MODULE_USES, SCM_MODULE_BINDER,
+       SCM_MODULE_EVAL_CLOSURE): New macros.
+       (scm_module_index_obarray, scm_module_index_uses,
+       scm_module_index_binder, scm_module_index_eval_closure): New
+       constants; #include "validate.h".
+
+       * modules.c (scm_module_tag, scm_module_system_booted_p): New
+       globals.
+       (scm_post_boot_init_modules): Initialize scm_module_tag.
+       (scm_interaction_environment): New primitive.
+
+       * symbols.c (scm_can_use_top_level_lookup_closure_var): Removed.
+       #include "modules.h".
+
+       * strports.c (scm_eval_string): Evaluate in
+       scm_interaction_environment ().
+
+       * script.c (scm_shell): Pass scm_the_root_module () as second arg
+       to new scm_eval_x.
+
+       * load.c (load): Use `scm_selected_module' to compute second arg
+       to new scm_i_eval_x; Don't call it if module system hasn't booted.
+       (scm_read_and_eval_x): Deprecated.
+       #include "modules.h".
+
+       * debug.c (scm_local_eval): Use scm_i_eval and scm_i_eval_x.
+       (scm_start_stack): Use scm_i_eval.
+
+       * strports.c: #include "modules.h".
+
+       * print.c (scm_simple_format): Be case-insensitive for ~A and ~S
+       directives.
+
+2000-08-09  Mikael Djurfeldt  <mdj@linnaeus.mit.edu>
+
+       The following changes are intended to ensure that struct instances
+       are freed before their vtables.  It's optimized for the most
+       common case, which is freeing of struct instances.
+
+       * gc.c (scm_gc_mark, scm_gc_sweep): Remove vcell = 1 magic.
+       (scm_structs_to_free): New variable.
+       (scm_gc_sweep): Hook up structs to free on the scm_structs_to_free
+       chain.
+
+       * struct.h (SCM_STRUCT_GC_CHAIN, SCM_SET_STRUCT_GC_CHAIN): New
+       macros.
+       (scm_structs_to_free, scm_struct_prehistory): Declare.
+
+       * struct.c (scm_make_struct, scm_make_vtable_vtable): Structs
+       handles are now double cells; Initialize SCM_STRUCT_GC_CHAIN to
+       0.
+       (scm_struct_gc_init, scm_free_structs): New GC C hooks.
+       (scm_struct_prehistory): Install them.
+
+       * init.c (scm_boot_guile_1): Call scm_struct_prehistory.
+
+2000-08-06  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * read.c (scm_flush_ws): Include filename in error message when it
+       is not `#f'.
+
+2000-08-05  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * iselect.c: Include <unistd.h>.  Thanks to Bertrand Petit!
+
+2000-08-02  Mikael Djurfeldt  <mdj@linnaeus.mit.edu>
+
+       * struct.c (scm_make_struct_layout, scm_make_struct,
+       scm_make_vtable_vtable): Updated documentation.
+
+       * print.c (scm_simple_format): Bugfix: Coerce port before using
+       it.
+
+2000-07-31  Gary Houston  <ghouston@arglist.com>
+
+       * net_db.c: declare h_errno only if HAVE_H_ERRNO is not defined
+       (thanks to Richard Kim for the bug report).
+
+2000-07-30  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * alist.c (scm_assq_remove_x, scm_assv_remove_x,
+       scm_assoc_remove_x): Use scm_delq1_x instead of scm_delq_x, since
+       using the latter is pointless.
+
+2000-07-26  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * gc.c (scm_gc_sweep):  Renamed local variable from 'free' to
+       'free_struct_data' to avoid confusion with stdlib's 'free'.
+
+2000-07-26  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * vectors.c (scm_make_vector):  Fix the initialization order of
+       the vector such that the type cell is initialized last.
+
+2000-07-26  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * struct.[ch] (scm_struct_init):  Made static.  Fixed not to rely
+       on the struct cell to be fully initialized.
+
+       * struct.c (scm_make_struct, scm_make_vtable_vtable):  Fix the
+       initialization order of the struct such that the type cell is
+       initialized last.
+
+2000-07-25  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * alist.c (scm_assq_remove_x, scm_assv_remove_x,
+       scm_assoc_remove_x): Remove only the first cell with a matching
+       key, not all.
+
+2000-07-24  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * stime.c (scm_strftime): Recognize a return value of zero from
+       strftime as buffer overflow and take care to detect a valid zero
+       length result regardless.  Thanks to David Barts!
+
+2000-07-23  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * alist.c (scm_assq_remove_x, scm_assv_remove_x,
+       scm_assoc_remove_x): Remove all cells whose key is eq, eqv, or
+       equal (respectively) to the argument key, not all cells that are
+       eq, eqv, or equal to the first cell with the argument key.  Thanks
+       to Neil Jerram!
+
+2000-07-18  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * gc.h (SCM_FREE_CELL_CDR, SCM_SET_FREE_CELL_CDR), hooks.c
+       (make_hook), modules.c (OBARRAY, USES, BINDER):  Pack and unpack
+       SCM values appropriately.
+
+       * modules.c (scm_standard_eval_closure):  Don't pass an inum to
+       scm_makcclo, but rather a long value.
+
+2000-07-18  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       read.c (scm_lreadrecparen), srcprop.c (scm_set_source_property_x):
+       SCM_SETCDR and SCM_WHASHSET macros don't deliver a return value.
+       Thanks to Han-Wen Nienhuys for the bug report.
+
+2000-07-18  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * root.[ch] (scm_call_catching_errors):  Deprecated.
+
+       * root.c (scm_init_root):  Initialize the root smob type using the
+       standard initialization functions.
+
+2000-07-17  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * eval.c (unmemocopy): Don't rely on V being a list of at least
+       one element.  Thanks to Bill Schottstaedt!
+
+2000-07-15  Michael Livshin  <mlivshin@bigfoot.com>
+
+       * gc.c (scm_done_free): new.
+       expanded comments about scm_done_malloc.
+
+       * gc.h: added prototype for scm_done_free
+
+2000-07-13  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * gc.h (scm_take_stdin):  Removed.
+
+       * gc.h (SCM_VALIDATE_CELL):  Delegate cell checks to function
+       scm_assert_cell_valid to allow extensions to the checking
+       functionality without need to recompile everything.
+
+       * gc.[ch] (scm_assert_cell_valid, scm_set_debug_cell_accesses_x):
+       Added as conditionally compiled functions for the case that
+       SCM_DEBUG_CELL_ACCESSES is enabled.
+
+       * gc.c (debug_cells_p):  Added to indicate whether compile-time
+       included cell access debugging is run-time enabled.
+
+       * gc.[ch] (scm_gc_running_p):  Added to indicate that scm_igc is
+       being executed.  Intended to be used instead of scm_gc_heap_lock
+       at most places.
+
+       * error.c (scm_error), gdbint.c (SCM_GC_P):  Use scm_gc_running_p
+       instead of scm_gc_heap_lock.
+
+       * gc.c (scm_igc):  Set scm_gc_running_p to true while running.
+
+       * gc.c (scm_mark_locations):  Don't mark free cells.
+
+       * weaks.c (scm_scan_weak_vectors):  Use SCM_FREE_CELL_P instead of
+       SCM_FREEP.
+
+2000-07-13  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * gc.c (scm_mark_locations):  Minimized some variable scopes and
+       simplified the code a bit.
+
+2000-07-10  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * gc.h (SCM_SET_FREE_CELL_TYPE, SCM_SET_FREE_CELL_CDR,
+       SCM_FREE_CELL_P, SCM_FREE_CELL_CDR):  Added since free cells
+       should not be accessed via SCM_C[AD]R.  Further, using dedicated
+       macros to access free cells allows all other cell accessing macros
+       to treat acesses to free cells as errors, thus enabling better
+       error checks for cell accesses.  SCM_FREE_CELL_P is supposed to
+       replace SCM_FREEP some time.
+
+       * gc.h (SCM_NEWCELL, SCM_NEWCELL2), gc.c (map_free_list,
+       free_list_length, scm_check_freelist, scm_debug_newcell,
+       scm_debug_newcell2, freelist_length, scm_gc_for_newcell,
+       scm_gc_mark, scm_gc_sweep, init_heap_seg):  Only use the dedicated
+       cell accessors when accessing free cells.
+
+2000-07-10  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * gc.h (SCM_CELL_WORD, SCM_CELL_OBJECT):  Treat the referenced
+       object as const in order to make the compiler warn about code like
+       SCM_CELL_WORD (x, n) = y.  Instead, SCM_SET_CELL_WORD (x, n, y)
+       should be used.
+
+       (SCM_CELL_WORD_LOC, SCM_CARLOC, SCM_CDRLOC):  Return the address
+       as an address to a non-const object, since these macros are used
+       to allow direct write access to objects.
+
+2000-07-07  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * hashtab.c (scm_hash_fn_create_handle_x):  Signal an error if the
+       given hash table has no slots.
+
+2000-07-06  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * gc.c (policy_on_error):  Added in order to allow alloc_some_heap
+       to react to malloc failures in a context dependent way.
+
+       (scm_check_freelist):  No need to flush streams before abort().
+
+       (scm_gc_for_newcell):  Try to allocate new memory in three phases:
+       grow heap if preferred, if still no memory available collect
+       garbage, if still no memory available grow heap.
+
+       (heap_segment_table_size):  Added to always reflect the actual
+       size of the heap segment table, because scm_n_heap_segs may differ
+       from the heap segment table size.
+
+       (alloc_some_heap):  In case of malloc failure, react according to
+       the new policy_on_error parameter (either return to caller or
+       abort immediately).  Further, keep heap_segment_table_size up to
+       date.
+
+       (scm_init_storage):  Initialize heap_segment_table_size.
+
+2000-07-06  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * gh.h:  Don't include <stdio.h>.  Thanks to Han-Wen Nienhuys for
+       the hint.
+
+2000-06-30  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * __scm.h (SCM_OUTOFRANGE, SCM_NALLOC, SCM_HUP_SIGNAL,
+       SCM_INT_SIGNAL, SCM_FPE_SIGNAL, SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL,
+       SCM_ALRM_SIGNAL, SCM_GC_SIGNAL, SCM_TICK_SIGNAL, SCM_SIG_ORD,
+       SCM_ORD_SIG, SCM_NUM_SIGS):  Re-introduce these as deprecated
+       symbols.
+
+       * error.c (scm_wta):  Re-introduce dispatching for SCM_OUTOFRANGE
+       and SCM_NALLOC, but as a deprecated feature.
+
+2000-06-30  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * debug.c: Added #include fluids.h.
+
+       * numbers.c (scm_gr_p, scm_leq_p, scm_geq_p): Turned into
+       primitive generics.  (Thanks to Nicolas Neuss.)
+
+2000-06-30  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * gc.c (alloc_some_heap):  Use scm_memory_error to indicate a
+       failed attempt to get additional memory from the system.
+
+       (scm_gc_for_newcell):  Changed the control structure to make the
+       behaviour explicit for the case that gc is not able to free any
+       cells.
+
+2000-06-30  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * __scm.h (SCM_OUTOFRANGE):  Removed.
+
+       * error.c (scm_wta):  Removed sick dispatch code for range
+       errors.  (More sick dispatches still to be removed.)
+
+       * hashtab.c (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x,
+       scm_hash_fn_remove_x):  Eliminate redundant test for if unsigned
+       value is non-negative.  Use scm_out_of_range to signal range
+       errors.
+
+       * hooks.c (make_hook), unif.c (scm_aind):  Use scm_out_of_range to
+       signal range errors.
+
+       * list.c (scm_list_ref, scm_list_set_x, scm_list_cdr_set_x):  Fix
+       error reporting (now uses original input parameter to report wrong
+       type argument errors).  Use SCM_OUT_OF_RANGE to report range
+       errors and SCM_WRONG_TYPE_ARG to report type errors.
+
+       * strings.c (scm_substring):  Make range checks for negative
+       values explicit (former behaviour relied on an implicit
+       conversion from signed to unsigned).  Don't use SCM_ASSERT for
+       range checks.
+
+       * unif.c (scm_aind, scm_transpose_array, scm_bit_set_star_x,
+       scm_bit_count_star):  Use scm_out_of_range to signal range
+       errors.
+
+       * unif.c (scm_transpose_array, scm_bit_position), vectors.c
+       (scm_vector_ref, scm_vector_set_x, scm_vector_move_left_x,
+       scm_vector_move_right_x):  Use SCM_ASSERT_RANGE to check ranges.
+
+2000-06-30  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * validate.h (SCM_VALIDATE_INUM_MIN_COPY,
+       SCM_VALIDATE_INUM_MIN_DEF_COPY, SCM_VALIDATE_INUM_RANGE_COPY):
+       Perform all range checks based on the input value.  The former way
+       of using the value that is assigned to the target variable fails
+       if the assignment to the target variable itself can change the
+       value because of type conversion.
+
+       (SCM_ASSERT_RANGE):  Use scm_out_of_range to signal range errors.
+
+2000-06-30  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * gc.c (scm_gc_for_newcell): Behave gracefully also if scm_igc
+       doesn't yield any new cells.  In theory this could happen if all
+       cells allocated with NEWCELL are either in use or conservatively
+       marked and all cluster spine cells are conservatively marked.
+       (Thanks to Dirk.)
+
+2000-06-29  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * __scm.h (SCM_NALLOC):  Removed.
+
+       * error.c (scm_wta):  Removed sick dispatch code for memory
+       errors.  (More sick dispatches still to be removed.)
+
+       * numbers.c (scm_mkbig, scm_adjbig), ports.c (scm_make_port_type),
+       random.c (scm_i_copy_rstate, scm_c_make_rstate), smob.c
+       (scm_make_smob_type), srcprop.c (scm_make_srcprops), vectors.c
+       (scm_vector_set_length_x):  Now using scm_memory_error to signal
+       memory errors.
+
+2000-06-29  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * __scm.h:  Removed some commented code and fixed some comments.
+
+       (SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL, SCM_BUS_SIGNAL,
+       SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL, SCM_TICK_SIGNAL,
+       SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):  Removed.
+
+       * async.c:  Removed some commented code.
+
+2000-06-29  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * gc.c (scm_gc_mark, scm_gc_sweep, scm_must_malloc,
+       scm_must_realloc, scm_must_free, alloc_some_heap):  Use the
+       appropriate error signalling function.
+
+2000-06-29  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * root.h (scm_first_type):  Removed.
+
+2000-06-29  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * gc.c (MIN_GC_YIELD):  Removed.
+
+2000-06-28  Michael Livshin  <mlivshin@bigfoot.com>
+
+       * gc.c (scm_gc_for_newcell): don't try to do GC if it's blocked,
+       allocate instead.
+
+2000-06-28  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * async.c (scm_gc_async, scm_gc_vcell, scm_sys_gc_async_thunk):
+       Moved to gc.c.
+
+       (scm_init_async):  Moved initialization for scm_gc_async and
+       scm_gc_vcell to gc.c.  Moved initialization of scm_asyncs here
+       from gc.c.
+
+       * async.h (scm_gc_async):  Not globally visible any more.
+
+       * gc.c (scm_gc_stats):  Made callable even from within regions
+       where gc is blocked.
+
+       (scm_gc_end):  Eliminate the hardcoding of the marking of the
+       scm_gc_async from the gc core.
+
+       (scm_init_storage):  Don't initialize the scm_asyncs list here.
+       This is now done in asyncs.c.
+
+       (scm_gc_vcell):  Moved here from async.c.
+
+       (gc_async):  Renamed from scm_gc_async, moved here from async.c
+       and made static.
+
+       (gc_async_thunk):  Renamed from scm_sys_gc_async_thunk and moved
+       here from async.c.
+
+       (mark_gc_async):  New hook function for scm_after_gc_c_hook.
+
+       (scm_init_gc):  Added initialization of scm_gc_vcell and
+       gc_async.  Further, add mark_gc_async to scm_after_gc_c_hook.
+
+       * init.c (scm_boot_guile_1):  scm_init_gc requires asyncs to be
+       initialized.
+
+2000-06-28  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * gc.c (scm_igc):  Removed commented code that once was intended
+       to unprotect struct types with no instances.
+
+       * root.h (scm_type_obj_list):  Removed.
+
+2000-06-27  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * async.c (scm_init_async):  Switch to standard way of smob
+       initialization.
+
+2000-06-21  Michael Livshin  <mlivshin@bigfoot.com>
+
+       * guile-doc-snarf.in: use cut instead of sed, that's much much
+       faster.  also, don't call basename more than needed.  and, to gain
+       a couple of microseconds more, don't call cat needlessly.  (thanks
+       to Brad Knotwell).
+
+2000-06-21  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * guile-snarf.awk.in, guile-snarf.in, snarf.h:  Rename SCM__I to
+       SCM_SNARF_INIT_START, SCM__D to SCM_SNARF_DOC_START, SCM__S to
+       SCM_SNARF_DOCSTRING_START and SCM__E to SCM_SNARF_DOCSTRING_END.
+
+2000-06-21  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * eval.c, eval.h (scm_top_level_lookup_closure_var): Added.
+       #include "libguile/fluids.h".
+
+       * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): New macro which replaces
+       SCM_CDR (scm_top_level_lookup_closure_var) everywhere.
+
+       * root.h (scm_top_level_lookup_closure_var,
+       scm_system_transformer): Removed.  (It's no sense in having the
+       *variable* be a "fluid".)
+
+       * root.c (mark_root): Removed marking of
+       s->top_level_lookup_closure_var and s->system_transformer.
+
+       * modules.c (scm_selected_module): the_module is now a fluid.
+
+2000-06-20  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * gc.h, tags.h: Be kind to compilers which must see hash signs in
+       column 0.  (Thanks to Ian Grant.)
+
+       * numbers.h: Put #ifdef HAVE_LONG_LONGS around declarations using
+       the long_long type.  (Thanks to Bernard Urban.)
+
+2000-06-20  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * gc.c, gc.h (scm_default_init_heap_size_1,
+       scm_default_min_yield_1, scm_default_init_heap_size_2,
+       scm_default_min_yield_2, scm_default_max_segment_size): New global
+       variables.  Can be customized by the application before booting
+       Guile.  (We might want to be able to control these parameters
+       dynamically through the "options interface" in the future, but
+       note that that is additional functionality.  Here we're giving
+       default values which the environment variables can override.)
+
+       * list.c (scm_cons_star): Updated comment.
+
+       * smob.h: Changed comments for scm_make_smob_type and
+       scm_make_smob_type_mfpe, warning that the latter might be
+       deprecated in a future release.
+
+2000-06-19  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * list.[ch] (scm_cons_star/cons*):  Renamed from
+       scm_list_star/list*.
+
+       * list.[ch] (scm_list_star/list*):  Provided as a deprecated alias
+       for scm_cons_star/cons*.
+
+       * gc.c (scm_protect_object):  Updated comment.
+
+       * numbers.h (SCM_NEWREAL, SCM_NEWCOMPLEX):  Removed.
+
+       * tags.h (SCM_UNPACK_CAR, SCM_NDOUBLE_CELLP):  Removed.
+
+2000-06-19  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * init.c, init.h (scm_initialized_p): Renamed from `initialized'
+       and made global.
+
+       * gdbint.c (gdb_print): Print warning instead of calling scm_write
+       if Guile isn't yet initialized.
+
+       * print.c (scm_current_pstate, scm_make_print_state): Simplified
+       tests, using the assumption that Guile has been initialized.
+
+Sun Jun 18 14:45:21 2000  Greg J. Badros  <gjb@cs.washington.edu>
+
+       * print.c (s_scm_current_pstate): Do not segfault when the
+       print_state_pool is unitialized in `current-pstate', and better
+       verify its state before altering it in scm_make_print_state().
+
+2000-06-18  Michael Livshin  <mlivshin@bigfoot.com>
+
+       * scmsigs.c (s_scm_sigaction): guard the SIGIOT case with an
+       #ifdef -- it's missing on at least one platform.  (thanks to
+       Jan Nieuwenhuizen).
+
+2000-06-16  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * list.c (list*):  Added documentation from common-list.scm.
+
+2000-06-15  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * gc.c (scm_unprotect_object):  The reference count is guaranteed
+       to be a positive number.
+
+2000-06-15  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * eval.c: Updated comment above scm_map.
+
+2000-06-14  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * gc.c (scm_protect_object): Avoid looking up the object handle
+       twice.
+       (scm_unprotect_object): Abort if scm_unprotect_object is called on
+       an unprotected object.
+
+2000-06-14  Michael Livshin  <mlivshin@bigfoot.com>
+
+       * gc.c (scm_unprotect_object): fix a nasty typo bug (thanks to
+       Dirk Herrmann).
+
+2000-06-14  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * socket.c (scm_getsockopt): Changed type for `optlen' from int to
+       size_t.
+       (scm_accept, scm_getsockname, scm_getpeername, scm_recvfrom):
+       Ditto for `tmp_size'.
+       (scm_addr_buffer_size): Changed type from int to size_t.
+
+       * random.c: #include <string.h>.  (Needed by memcpy.)
+
+       * guile-snarf.awk.in: Replace the dot_doc_file arg with "-",
+       indicating stdin, instead of "" and don't reset ARGC.  This is a
+       workaround for `nawk' in AIX 4.3 on RS6000 but, as far as I know,
+       it is correct, and perhaps even better.
+
+2000-06-14  Gary Houston  <ghouston@arglist.com>
+
+       * scmsigs.c (scm_init_scmsigs): if HAVE_SIGINTERRUPT is not
+       defined, add SA_RESTART to the sigaction flags correctly
+       (thanks to Dale P. Smith).
+
+2000-06-13  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * strings.c: #include <string.h>. (Thanks to Bill Schottstaedt.)
+
+       * net_db.c (scm_resolv_error): Only use macro NETDB_INTERNAL if
+       defined. It isn't on sgi irix 5.3.  (Thanks to Bill Schottstaedt.)
+
+       * Makefile.am (.c.doc): Pipe output (the .x contents) to /dev/null.
+
+2000-06-13  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * fports.c (scm_setvbuf): Use `free' instead of `scm_must_free'
+       since read and write buffers are allocated by `malloc'.
+
+       * Makefile.am: Removed old test code.
+
+       * gh_test_c.c, gh_test_repl.c: Removed.
+
+2000-06-12  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * iselect.c (SCM_NLONGBITS): Add workaround for the Sun 4.2
+       compiler.
+
+       * inet_aton.c (inet_aton): Cast init value for `cp'.
+
+       * ramap.c (s_scm_array_fill_x): Cast `ve' properly in case
+       `scm_tc7_uvect'.
+
+       * symbols.c (scm_intern_obarray_soft,
+       scm_sysintern0_no_module_lookup): Cast `name' to unsigned char ptr
+       in calls to scm_strhash.
+
+       * strports.c (st_resize_port): Substituted SCM_UCHARS for
+       SCM_CHARS.
+       (st_write): Cast argument to strncpy to char ptr.
+       (scm_mkstrport): Substituted SCM_ROUCHARS for SCM_ROCHARS.
+       (scm_strport_to_string): Cast argument to scm_makfromstr to char
+       ptr.
+
+       * ports.c (scm_ungetc): Cast value to unsigned char ptr before
+       storing in putback_buf.
+       (scm_unread_string): Substituted SCM_ROCHARS for SCM_ROUCHARS.
+
+       * ioext.c (s_scm_read_line): Cast result of call to
+       scm_do_read_line to unsigned char ptr.
+
+       * gdbint.c (SEND_STRING): Cast argument to char pointer.
+
+       * fports.c (fport_flush): Declare `ptr' as unsigned char (was
+       char).
+
+       * Makefile.am (DOT_DOC_FILES): List doc-files explicitly.  (We
+       shouldn't use Make rules which aren't supported by most Make
+       programs.)
+       (OMIT_DEPENDENCIES): Defined to "libguile.h ltdl.h".  (We don't
+       want these dependencies recorded, since they would get bogus
+       relative paths; libguile.h is only used in gh.h and guile.c.)
+       (EXTRA_DOT_X_FILES, EXTRA_DOT_DOC_FILES): New variables.
+       (guile-procedures.txt): Depend on EXTRA_DOT_DOC_FILES.
+       (modinclude_HEADERS): Removed kw.h.
+
+       * guile-snarf.in: Change regexp "^SCM__I" --> "^ *SCM__I".
+       (The preprocessor might insert spaces before the identifier.)
+
+       * snarf.h (SCM_SNARF_HERE, SCM_SNARF_INIT, SCM_SNARF_DOCS):
+       Renamed from SCM_HERE, SCM_INIT, SCM_DOCS.
+
+       * smob.h (scm_smobfuns): Removed deprecated type.
+
+       * smob.c, smob.h (scm_newsmob): Removed deprecated function.
+       (Replaced by `scm_make_smob_type'.)
+
+       * keywords.c (scm_tc16_kw): Removed deprecated type.
+       (Replaced by scm_tc16_keyword.)
+
+       * kw.h: Removed deprecated header file.
+
+       * evalext.c (serial-map): Removed deprected alias for scm_map.
+       (Has been replaced by `map-in-order'.)
+
+       * ramap.c (serial-array-copy!, serial-array-map!): Removed
+       depracted aliases.  (Replaced by `array-copy-in-order!' and
+       `array-map-in-order'.)
+
+2000-06-11  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * gc.h (SCM_VALIDATE_CELL): Rewritten.
+       (SCM_CELL_WORD, SCM_CELL_OBJECT, SCM_SET_CELL_WORD,
+       SCM_SET_CELL_OBJECT): Use new version of SCM_VALIDATE_CELL.
+       (Thanks to Han-Wen Nienhuys.)
+
+2000-06-10  Michael Livshin  <mlivshin@bigfoot.com>
+
+       * guile-doc-snarf.in: don't pipe the CPP output right into sed --
+       write it to the temp file first and check the CPP return code.
+       (I introduced this bug earlier, and this probably caused people
+       with non-GNU C preprocessors to get empty *.x files and not to
+       have the build fail right away...).
+
+       * scmsigs.c (s_scm_sigaction): guard the SIGSYS case with an ifdef
+       -- at least my libc5-based Linux system doesn't define SIGSYS.
+
+2000-06-08  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
+
+       * snarf.h, guile-snarf.awk.in, guile-snarf.in: Replaced snarf
+       markers with identifiers (SCM__I, SCM__D, SCM__S, SCM__E).
+       (Thanks to Bernard Urban.)
+
+2000-06-06  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * modules.c (scm_system_module_env_p): Fixed detection of system
+       modules.
+
+2000-06-06  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * scmsigs.c (scm_sigaction): Silently ignore setting handlers for
+       `program error signals' because they can't currently be handled by
+       Scheme code.
+
 2000-06-05  Dirk Herrmann  <D.Herrmann@tu-bs.de>
 
        * procs.h (SCM_SET_SUBRF):  Added.
        that a chain of Scheme level procedures has been evaluated for
        every top-level symbol lookup during the first pass through the
        code.
-       
+
        The following is a kludge which I suggested four years ago, and
        which I've repeatedly suggested since.  Personally, I've never
        been bothered by Guile's slow loading speed, so I thought I would
        But since the new environments will be included first in
        Guile-1.5, I thought it would make people happy to get the kludge
        into 1.4.
-       
+
        * modules.c: Added #include "libguile/vectors.h";
        Added #include "libguile/hashtab.h";
        Added #include "libguile/struct.h";
        * filesys.h (SCM_OPDIRP), fluids.h (SCM_FLUIDP, SCM_FLUID_NUM),
        fports.h (SCM_OPFPORTP, SCM_OPINFPORTP, SCM_OPOUTFPORTP), hooks.h
        (SCM_HOOK_ARITY), keywords.h (SCM_KEYWORDP, SCM_KEYWORDSYM),
-       numbers.h (SCM_NUMP, SCM_BIGSIGN, SCM_BDIGITS, SCM_NUMDIGS): 
+       numbers.h (SCM_NUMP, SCM_BIGSIGN, SCM_BDIGITS, SCM_NUMDIGS):
        Replace SCM_UNPACK_CAR appropriately.  Don't access cells via
        SCM_{SET}?C[AD]R unless they are known to be cons cells.
 
        cookies anyway.  in the long term, it would be nice not to depend
        on AWK for anything.)
 
-       * gc.h (SCM_[SET_]CELL_{WORD,OBJECT}, SCM_VALIDATE_CELL): reverted 
+       * gc.h (SCM_[SET_]CELL_{WORD,OBJECT}, SCM_VALIDATE_CELL): reverted
        the previous change to this macros, after deciding to torture the
        snarfer instead.
 
        * hashtab.c (scm_hash_fn_create_handle_x): add missing
        SCM_REALLOW_INTS before return.  I really wonder about the
        possible interactions between hashtables, threads & GC.  it
-       doesn't look healthy at all. 
+       doesn't look healthy at all.
 
 2000-05-20  Dirk Herrmann  <D.Herrmann@tu-bs.de>
 
 
        * stacks.c (scm_make_stack), stacks.h (scm_make_stack), throw.c
        (ss_handler, handler_message):  Make first mandatory rest argument
-       of scm_make_stack into a standard mandatory argument.  
+       of scm_make_stack into a standard mandatory argument.
 
        * unif.c (scm_transpose_array, scm_enclose_array,
        scm_array_in_bounds_p), unif.h (scm_transpose_array,
        comparisons of SCM values with integer constants.
 
        * number.c (scm_logtest):  Removed some redundant SCM_{N}?IMP
-       tests. 
+       tests.
 
 2000-04-28  Dirk Herrmann  <D.Herrmann@tu-bs.de>
 
 
        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.
        the new code is not less clear.)
 
        * gc.c (scm_must_malloc, scm_must_realloc, scm_must_free): Added
-       calls to malloc debugging functions. 
+       calls to malloc debugging functions.
 
        * init.c (scm_boot_guile_1): Added calls to debug-malloc init
        functions.
 
        * numbers.c (scm_adjbig): Ditto.
 
+Tue Apr 18 08:22:41 2000  Greg J. Badros  <gjb@cs.washington.edu>
+
+       * validate.h: Do not cast to (unsigned) in SCM_VALIDATE_INUM_RANGE
+       when testing high-end of the range.  Mikael Djurfeldt noticed this
+       anomaly -- thanks Mikael!
+
 2000-04-18  Dirk Herrmann  <D.Herrmann@tu-bs.de>
 
        * unif.c (l2ra):  Don't eliminate the call to scm_array_set_x
        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. 
+       * symbols.c (scm_symbol_hash):  Unpack to access SCM raw data.
 
 2000-04-12  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