+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