* Eliminate some calls to scm_wta.
[bpt/guile.git] / libguile / ChangeLog
index 8b13ca6..83d8634 100644 (file)
+2001-03-04  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * continuations.c (continuation_apply), eval.c (scm_m_lambda,
+       scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
+       (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
+       (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
+       options.c (scm_options), ports.c (scm_remove_from_port_table),
+       ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
+       scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
+       script_get_backslash, script_read_arg), unif.c (scm_cvref):  Don't
+       call function scm_wta, call scm_misc_error or scm_wrong_type_arg
+       instead.
+
+2001-03-04  Mikael Djurfeldt  <mdj@linnaeus.mit.edu>
+
+       * goops.c (scm_sys_pre_expand_closure_x): New procedure.
+
+2001-03-04  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * eval.c (scm_s_duplicate_bindings): New error message.
+       (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
+
+2001-03-03  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * eval.h (SCM_EVALIM2): New macro.  Use it when a
+       immediate, literal constant should be evaluated.
+       * eval.c (scm_s_duplicate_formals): New error message string.
+       (scm_c_improper_memq): New function.
+       (scm_m_lambda): Check for duplicate arguments.
+       (scm_ceval, scm_deval): When executing a body: only cons a new
+       toplevel environment frame when it is different from the
+       existing one; use EVALCAR instead of SIDEVAL so that we can properly
+       check for empty combinations; use SCM_EVALIM2 for the same reason
+       in the non-toplevel loop.
+       (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
+       New labels with the meaning of their non-"nontoplevel" partners,
+       but they are used when it is known that the body is not evaluated at
+       top-level.
+       (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
+       reporting for empty combinations.
+
+2001-03-02  Keisuke Nishida  <kxn30@po.cwru.edu>
+
+       * Remove dump facilities.
+       * dump.c, dump.h: Removed.
+       * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
+       * init.c: Remove #include "libguile/dump.h".
+       (scm_init_guile_1): Remove scm_init_dump.
+       * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
+       (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
+       * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
+       (scm_set_smob_dump, scm_set_smob_undump): Removed.
+
+       * keywords.c: Remove #include "libguile/dump.h".
+       (keyword_dump, keyword_undump): Removed.
+       (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
+
+2001-03-02  Martin Grabmueller  <mgrabmue@cs.tu-berlin.de>
+
+       * vectors.c (s_scm_vector_p, list->vector, scm_vector)
+       (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
+       (scm_vector_fill_x), strorder.c (scm_string_equal_p)
+       (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
+       (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
+       (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
+       (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
+       to @code{} as the texinfo manual recommends, converted the
+       examples to use a @lisp{}-environment.
+
+       * strports.c (scm_eval_string): Cleaned up the docstring.
+
+       * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
+       markup.
+
+       * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
+       (scm_number_to_string, scm_string_to_number, scm_number_p)
+       (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
+       (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
+       (scm_ash): Added texinfo markup and removed obsolete @refill.
+       (scm_gr_p): Corrected comment.
+       (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
+       docstring) comments.
+       (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
+       (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
+       (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
+       (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
+       (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
+       ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
+       (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
+       (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
+
+2001-02-28  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * __scm.h (SCM_ASSERT_TYPE):  Add missing macro parameter.
+       (Obviously nobody compiles with SCM_RECKLESS defined...)
+
+       * validate.h (SCM_ASSERT_RANGE):  Use the argument number.
+
+2001-02-23  Mikael Djurfeldt  <mdj@linnaeus.mit.edu>
+
+       * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
+
+       * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
+
+2001-02-24  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
+       scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
+       since use of `z' suggests that the arguments may be complex.
+
+       * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
+       typos.
+
+2001-02-23  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * dump.c (scm_binary_write, scm_binary_read), eval.c
+       (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
+       scm_guardian_greedy_p, scm_make_guardian), fports.c
+       (scm_file_port_p): Minor docstring fixes.
+
+2001-02-22  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
+
+       * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
+       scm_i_eval.
+       (make_class_from_template): Do not bother to set the current
+       module around the call to DEFVAR, scm_eval takes care of that.
+       (scm_init_goops): Make scm_module_goops and
+       scm_goops_lookup_closure permanent objects.
+       
+       * eval.c (scm_ceval, scm_deval): When evaluating expressions on
+       top level, create a fresh top-level environment for each
+       expression instead of mutating the exisint frame.  This is
+       important when that frame is closed over.
+
+       * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
+       SCM_DIGSPERLONG instead of DIGSPERLONG.
+
+2001-02-21  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * eval.c (scm_ceval, scm_deval): Check for wrong number of args
+       before applying arrow procedure in `cond' and before applying
+       receiver procedure in call-with-current-continuation.
+       (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
+       macro.  The argument is expanded more than one time.
+
+       * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
+       SCM_BIGDIG instead of BIGDIG.  Thanks to Steven G. Johnson!
+
+2001-02-20  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
+       notice and license.
+
+2001-02-17  Martin Grabmueller  <mgrabmue@cs.tu-berlin.de>
+
+       * variable.c (scm_make_variable, scm_make_undefined_variable)
+       (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
+       (scm_variable_bound_p), values.c (scm_values)
+       (scm_call_with_values), unif.c (scm_bit_count)
+       (scm_bit_set_star_x), symbols.c (scm_gentemp)
+       (scm_gensym), strings.c (scm_string_p, scm_make_string)
+       (scm_read_only_string_p, scm_string_length, scm_string_ref)
+       (scm_string_set_x, scm_substring, scm_string_append), stime.c
+       (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
+       (scm_copy_random_state, scm_random), print.c (scm_newline)
+       (scm_write_char, scm_simple_format), debug-malloc.c
+       (scm_malloc_stats), environments.c (scm_environment_p)
+       (scm_environment_bound_p, scm_environment_ref)
+       (scm_environment_fold, scm_environment_define)
+       (scm_environment_undefine, scm_environment_set_x)
+       (scm_environment_cell, scm_environment_observe)
+       (scm_environment_observe_weak, scm_environment_unobserve)
+       (scm_make_eval_environment, scm_eval_environment_p)
+       (scm_eval_environment_set_local_x, scm_eval_environment_local)
+       (scm_eval_environment_imported)
+       (scm_eval_environment_set_imported_x, scm_make_import_environment)
+       (scm_import_environment_p, scm_import_environment_imports)
+       (scm_import_environment_set_imports_x, scm_make_export_environment)
+       (scm_export_environment_p, scm_export_environment_private)
+       (scm_export_environment_set_private_x)
+       (scm_export_environment_signature)
+       (scm_export_environment_set_signature_x, scm_leaf_environment_p):
+       Added texinfo markup.
+
+       * ports.c (scm_drain_input): Lowercased argument to @var.
+       (scm_current_input_port, scm_current_output_port): Filled in
+       missing explanation.
+       (scm_current_load_port, scm_set_current_output_port)
+       (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
+       Added texinfo markup.
+
+       * arbiters.c (scm_make_arbiter, scm_try_arbiter)
+       (scm_release_arbiter): Added texinfo markup to docstrings.
+       Changed `Returns' to `Return'.
+       (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
+
+2001-02-16  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
+       by doubling them to `@@'.
+
+2001-02-16  Martin Grabmueller  <mgrabmue@cs.tu-berlin.de>
+
+       * numbers.c (scm_lognot), random.c (scm_random,
+       scm_random_normal, scm_random_solid_sphere_x,
+       scm_random_hollow_sphere_x, scm_random_normal_vector_x,
+       scm_random_exp), dynwind.c
+       (scm_dynamic_wind): Removed unnecessary "" from docstrings.
+       
+       * goops.c (scm_sys_initialize_object, scm_instance_p,
+       scm_class_name, scm_class_precedence_list, scm_class_slots,
+       scm_class_environment, scm_generic_function_name,
+       scm_generic_function_methods, scm_method_generic_function,
+       scm_method_specializers, scm_method_procedure, scm_make_unbound,
+       scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
+       scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
+       scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
+       scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
+       scm_class_direct_supers, scm_class_direct_slots,
+       scm_class_direct_subclasses, scm_class_direct_methods,
+       scm_accessor_method_slot_definition, scm_sys_goops_loaded),
+       debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
+       scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
+       scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
+       scm_memoized_environment, scm_procedure_name,
+       scm_procedure_source, scm_procedure_environment, scm_debug_hang),
+       objects.c
+       (scm_class_of, scm_entity_p, scm_operator_p,
+       scm_set_object_procedure_x, scm_object_procedure,
+       scm_make_class_object), hooks.c (scm_make_hook_with_name,
+       scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
+       scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
+       scm_hook_to_list), lang.c
+       (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
+       numbers.c (scm_sys_expt, scm_sys_atan2), print.c
+       (scm_print_options, scm_port_with_print_state,
+       scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
+       scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
+       scm_make_procedure_with_setter, scm_procedure), throw.c
+       (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
+       (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
+       scm_stack_ref, scm_stack_length, scm_frame_p,
+       scm_last_stack_frame, scm_frame_number, scm_frame_source,
+       scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
+       scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
+       scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
+       (scm_dirname, scm_basename), dynwind.c
+       (scm_wind_chain), read.c (scm_read_options, scm_read,
+       scm_read_hash_extend), gc.c
+       (scm_unhash_name), eval.c (scm_eval_options_interface,
+       scm_evaluator_traps, s_scm_nconc2last), backtrace.c
+       (scm_display_error, scm_set_print_params_x,
+       scm_display_application, scm_display_backtrace, scm_backtrace),
+       async.c (scm_async, scm_system_async, scm_async_mark,
+       scm_system_async_mark, scm_run_asyncs, scm_noop,
+       scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
+       scm_mask_signals): Added docstrings.
+
+2001-02-15  Keisuke Nishida  <kxn30@po.cwru.edu>
+
+       * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
+       address of car/cdr.  (Thanks to Dirk Herrmann)
+       Use scm_sizet to obtain the length of strings.
+       (Thanks to Matthias Koeppe)
+
+2001-02-15  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * symbols.c (scm_mem2symbol): Put a empty statement after the
+       next_symbol label.  This is mandated by ANSI, appearantly.
+
+2001-02-13  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
+
+       * gc_os_dep.c: Do not include <linux/version.h>.  It makes no
+       sense to compile for a specific kernel version.  Do not include
+       <asm/signal.h> while defining __KERNEL__.  This hack should no
+       longer be needed and caused problems.
+
+2001-02-13  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
+       SCM_CEVAL when evaluating subforms of `begin' forms.  SCM_CEVAL
+       can not deal with immediates.
+
+2001-02-12  Keisuke Nishida  <kxn30@po.cwru.edu>
+
+       * list.c (scm_list_copy): Validate the first argument.
+
+2001-02-11  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       Fix evaluator so that top-level expressions are correctly
+       evaluated with respect to the module system.
+       
+       * modules.h. modules.c (scm_current_module_lookup_closure): New
+       function.
+
+       * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
+       prototypes.
+       (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
+       names to better reflect their meaning.
+
+       * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
+       evaluated at top-level and synronize lookup closure before
+       executing every subform.
+       (scm_primitve_eval_x, scm_primitive_eval): New functions.
+       (scm_eval_x, scm_eval): Reimplement in terms of
+       scm_primitive_eval_x and scm_primitive_eval, respectively.
+       
+2001-02-09  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * macros.c (scm_macro_name, scm_macro_transformer): Use
+       SCM_SMOB_DATA instead of SCM_CDR.  Provided by Martin Grabmueller.
+       Thanks!
+
+2001-02-10  Keisuke Nishida  <kxn30@po.cwru.edu>
+
+       * dump.c (scm_store_bytes): Store data size before data.
+       (scm_restore_bytes): Restore data size.  Takes a pointer to size.
+       * dump.h (scm_restore_bytes): Updated.
+
+2001-02-09  Keisuke Nishida  <kxn30@po.cwru.edu>
+
+       * dump.c: Use double cells for update schedule.
+
+2001-02-08  Keisuke Nishida  <kxn30@po.cwru.edu>
+
+       * ports.c (scm_unread_char): Take an optional argument.
+
+2001-02-08  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
+
+       * modules.h (scm_selected_module, scm_current_module): Renamed
+       scm_selected_module to scm_current_module to synchronize Scheme
+       and C names.
+       (scm_select_module, scm_set_current_module): Likewise.  Changed
+       all uses.
+       
+       * ports.c (scm_port_for_each): Make a snapshot of the port table
+       before iterating over it.  The table might change while the user
+       code is running.  With the snapshot, the user can depend on the
+       fact that each port that existed at the start of the iteration is
+       encountered exactly once.  (ice-9 popen) depends on this.
+
+2001-02-08  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * strings.h (SCM_STRING_MAX_LENGTH):  New macro.
+
+       * strings.c (scm_makstr, scm_take_str, scm_make_string):  Added
+       range checking for the size parameter.  Thanks to Martin
+       Grabmueller for the hint.
+
+       (scm_makstr):  Reordered string initialization to make interrupt
+       deferring unnecessary.
+
+       * vectors.c (scm_make_vector):  Fixed range checking.
+
+2001-02-08  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * vectors.h (SCM_VECTOR_MAX_LENGTH):  New macro.
+
+       * vectors.c (scm_make_vector, scm_c_make_vector):  Improved the
+       checking of the size parameter for type correctness and valid
+       range.  Thanks to Rob Browning for reporting the problem.  Instead
+       of deferring interrupts, scm_remember_upto_here_1 is used.
+
+2001-02-05  Keisuke Nishida  <kxn30@po.cwru.edu>
+
+       * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
+       (scm_dump_cell_update): Removed.
+       (scm_dump_update): Renamed from scm_dump_object_update.
+       (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
+       a pointer instead of returning a value.
+       * keywords.c (keyword_undump): Updated.
+
+2001-02-05  Keisuke Nishida  <kxn30@po.cwru.edu>
+
+       * dump.c, dump.h: Modified a lot.
+       (SCM_DUMP_COOKIE): Version 0.1
+       (scm_dump_mark): Removed.
+       (scm_restore_cell_object, scm_store_cell_object): New functions.
+
+       * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
+       dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
+       New slots: dump, undump.
+       * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
+       Updated.
+
+       * keywords.c (keyword_dump): Renamed from keyword_dealloc.
+       (keyword_undump): Renamed from keyword_alloc.
+       (scm_init_keywords): Set keyword_dump and keyword_undump.
+
+2001-02-03  Michael Livshin  <mlivshin@bigfoot.com>
+
+       * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
+       the deprecated SCM_DOUBLE_CELLP.
+
+       * tags.h (SCM_DOUBLE_CELLP): deprecated.
+
+2001-02-02  Keisuke Nishida  <kxn30@po.cwru.edu>
+
+       * dump.c, dump.h: New files.
+       * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
+       * init.c: #include "libguile/dump.h".
+       (scm_init_guile_1): Call scm_init_dump.
+       * smob.h (scm_smob_descriptor): New slots: dump_mark,
+       dump_dealloc, dump_store, undump_alloc, undump_restore,
+       undump_init.
+       * smob.c (scm_make_smob_type): Init the new slots.
+       (scm_set_smob_dump, scm_set_smob_undump): New functions.
+       * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
+
+       * keywords.c: #include "libguile/dump.h".
+       (keyword_dealloc, keyword_alloc): New functions.
+       (scm_init_keywords): Set smob_dump and smob_undump.
+
+2001-02-01  Keisuke Nishida  <kxn30@po.cwru.edu>
+
+       * vectors.c (scm_c_make_vector): New function.
+       * vectors.h (scm_c_make_vector): Declared.
+       * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
+       (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
+       gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
+       (scm_make_method_cache, scm_i_vector2list,
+       scm_compute_applicable_methods, scm_sys_method_more_specific_p),
+       init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
+       scm_getproto, scm_return_entry), posix.c (scm_getgroups,
+       scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
+       grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
+       (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
+       stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
+       (scm_vector, scm_make_vector): Use scm_c_make_vector.
+
+       * hashtab.c (scm_c_make_hash_table): New function.
+       * hashtab.h (scm_c_make_hash_table): Declared.
+       * environments.c (scm_make_leaf_environment,
+       scm_make_eval_environment), gc.c (scm_init_storage),
+       keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
+       Use scm_c_make_hash_table.
+
+2001-01-31  Mikael Djurfeldt  <mdj@linnaeus.mit.edu>
+
+       * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
+
+2001-01-29  Martin Grabmueller  <mgrabmue@cs.tu-berlin.de>
+
+       * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
+       end of docstring.
+
+       * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
+       scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
+       (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
+       scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
+       srcprop.c (scm_source_properties, scm_set_source_properties_x,
+       scm_source_property, scm_set_source_property_x), sort.c
+       (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
+       scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
+       scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
+       docstrings.
+
+2001-01-29  Mikael Djurfeldt  <mdj@linnaeus.mit.edu>
+
+       * eval.c (SCM_APPLY): Check that primitives which take 1 arg
+       really get that arg.
+
+2001-01-26  Keisuke Nishida  <kxn30@po.cwru.edu>
+
+       * goops.c (s_scm_get_keyword): Bug fix.
+
+2001-01-26  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       The following patch was sent by Martin Grabmueller.  It makes sure
+       that in case of parameter errors the correct function name is
+       shown, and that parameter types are only checked once.
+
+       * strop.c (string_copy, string_upcase_x, string_downcase_x,
+       string_capitalize_x):  New functions.  Each one performs the core
+       functionality of the corresponding scm_* function.
+
+       (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
+       scm_string_downcase_x, scm_string_downcase,
+       scm_string_capitalize_x, scm_string_capitalize):  Reduced to
+       parameter checking wrappers of the above functions.
+
+2001-01-26  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * continuations.c, dynl.c, keywords.c, load.c:  Include
+       strings.h.  Thanks to Bill Schottstaedt for the bug report.
+
+2001-01-25  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * backtrace.c (display_header):  Make sure that line and column
+       information is shown independent of whether the port the code was
+       read from had an associated filename.  Thanks to Martin
+       Grabmueller for providing this patch.
+
+2001-01-25  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * fports.[ch] (scm_file_port_p):  New primitive.
+
+2001-01-25  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
+       These are now defined in fports.c, strports.c and vports.c.
+
+       * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
+       vports.c (scm_tc16_sfport): Made variables (were macros defined in
+       tags.h).
+
+       fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
+       (scm_make_sfptob):  Made static.  These return a type code now.
+
+       fports.c (scm_init_fports), strports.c (scm_init_strports),
+       vports.c (scm_init_vports):  Create the corresponding port types.
+
+       * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
+       SCM_OPOUTFPORTP):  Redefined in terms of scm_tc16_fport.
+
+       * init.c (scm_init_guile_1):  Make sure strports are initialized
+       before gdbint.
+
+       * ports.[ch] (scm_make_port_type):  Changed the return type to
+       scm_bits_t.
+
+       * ports.c (scm_ports_prehistory):  Don't create any port types
+       here.
+
+       * posix.c (scm_ttyname):  Use SCM_FPORTP instead of comparing
+       against scm_tc16_fport directly.
+
+2001-01-25  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * srcprop.c (scm_set_source_property_x):  Fix to handle
+       (set-source-property! <obj> 'copy <datum>) correctly.
+
+2001-01-24  Gary Houston  <ghouston@arglist.com>
+
+       * filesys.c (scm_link): docstring fix.
+       * fports.h (scm_setfileno): obsolete declaration removed.
+       * posix.c: bogus popen declaration removed.
+
+       * rdelim.c: new file, split from ioext.c.
+       * rdelim.h: new file, split from ioext.h
+       * Makefile.am: add rdelim.c and related files.
+       * init.c: call scm_init_rdelim.  include rdelim.h.
+
+2001-01-24  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       This patch was sent by Martin Grabmueller and makes sure that
+       parameter errors are reported correctly by the lexicographic
+       ordering predicates.
+
+       * strorder.c (string_less_p, string_ci_less_p):  New functions.
+
+       (scm_string_less_p, scm_string_ci_less_p):  Extracted the core
+       functionality into string_less_p, string_ci_less_p respectively.
+       The remaining code is just a wrapper to do the parameter
+       checking.
+
+       (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p):  Check the
+       parameters and call string_less_p instead of scm_string_less_p.
+
+       (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
+       Check the parameters and call string_less_ci_p instead of
+       scm_string_ci_less_p.
+
+2001-01-24  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       This patch modifies scm_display_error to perform parameter
+       checking.  Thanks to Neil Jerram for the bug report.
+
+       * backtrace.[ch] (scm_i_display_error):  New function.
+
+       * backtrace.c (scm_display_error):  Added parameter check and
+       extracted the core functionality into function
+       scm_i_display_error.
+
+       * throw.c (handler_message):  Call scm_i_display_error to display
+       the error message.
+
+2001-01-23  Mikael Djurfeldt  <mdj@linnaeus.mit.edu>
+
+       * eval.c (SCM_APPLY): Added # args check for application of
+       procedures with arity 3.  (Thanks to Anders Holst.)
+
+2001-01-24  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P):  Added.
+
+       (SCM_OPDIRP):  Deprecated.
+
+       * filesys.c (scm_opendir):  Use SCM_DIR_FLAG_OPEN instead of
+       SCM_OPN.
+
+       (scm_readdir, scm_rewinddir):  Don't use SCM_VALIDATE_OPDIR.
+       Instead, give an explicit error message in case the directory is
+       closed.
+
+       (scm_closedir, scm_dir_print):  Rewritten to use SCM_DIR_OPEN_P
+       instead of SCM_OPENP and SCM_CLOSEDP.
+
+       * validate.h (SCM_VALIDATE_OPDIR):  Deprecated.
+
+2001-01-22  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * eval.c (inner_eval, scm_eval):  Move all real functionality into
+       inner_eval.  Avoid to copy the expression twice by inlining some
+       code from scm_i_eval.
+
+2001-01-19  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * eval.c (scm_m_case):  The 'else' clause of a 'case' statement
+       now has to be the last clause, as required by R5RS.  Thanks to
+       Martin Grabmueller for the patch.
+
+2001-01-18  Gary Houston  <ghouston@arglist.com>
+
+       * ioext.c: further simplify scm_read_string_x_partial by defining
+       a macro SCM_EBLOCK.
+
+2001-01-18  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * gh_data.c (gh_ints2scm):  Simplified using SCM_FIXABLE.
+
+2001-01-18  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * __scm.h:  Added comment about architecture and compiler
+       properties that are required by guile.
+
+       (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
+       SCM_MOST_NEGATIVE_FIXNUM):  Moved to numbers.h.
+
+       (SCM_CHAR_BIT, SCM_LONG_BIT):  Moved here from numbers.h.
+
+       * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT):  Moved to __scm.h.
+
+       (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
+       SCM_MOST_NEGATIVE_FIXNUM):  Moved here from __scm.h.
+
+2001-01-17  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * __scm.h (SCM_FIXNUM_BIT):  Added.  The name is chosen in analogy
+       to the names in limits.h.
+
+       * numbers.c (abs_most_negative_fixnum):  Added.
+
+       (scm_quotient, scm_remainder):  Fixed the fixnum-min / (abs
+       fixnum-min) special case.
+
+       (scm_big_and):  Fix for negative first parameter.
+
+       (scm_bit_extract):  Fix for fixnum paramters.
+       Thanks to Rob Browning for the bug report.
+
+       (scm_init_numbers):  Initialize abs_most_negative_fixnum.
+
+2001-01-16  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * symbols.c (scm_symbol_bound_p):  Fixed comment.
+       Thanks to Chris Cramer.
+
+2001-01-15  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * smob.[ch] (scm_make_smob_type):  Return type is scm_bits_t now.
+       Thanks to Bill Schottstaedt.
+
+2001-01-11  Michael Livshin  <mlivshin@bigfoot.com>
+
+       from Matthias Köppe:
+       
+       * objects.h (SCM_SET_ENTITY_SETTER): new macro.  SCM_ENTITY_SETTER
+       casts its result, so doesn't yield an lvalue per ANSI C.
+
+       * goops.c (s_scm_sys_set_object_setter_x): use
+       SCM_SET_ENTITY_SETTER.
+       (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
+
+       * gc.h (SCM_GC_SET_CARD_BVEC): new macro.  SCM_GC_CARD_BVEC casts
+       its result, so doesn't yield an lvalue per ANSI C.
+       (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
+       (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
+       SCM_GC_SET_CARD_FLAGS.
+       (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
+
+       * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
+
+2001-01-08  Gary Houston  <ghouston@arglist.com>
+
+       * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
+       * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
+       socket.c (scm_recvfrom): use the new macro, plus minor docstring
+       changes.
+       * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
+       for fdes.  if current input port is used, check that it's a file
+       port.
+
+2001-01-06  Gary Houston  <ghouston@arglist.com>
+
+       * ioext.c (scm_read_string_x_partial): new procedure, implements
+       read-string!/partial.
+       * ports.c (scm_take_from_input_buffers): new procedure used by
+       scm_read_string_x_partial.
+       (scm_drain_input): use scm_take_from_input_buffers.
+
+2001-01-06  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * validate.h (SCM_VALIDATE_NUMBER): New.
+
+2001-01-03  Michael Livshin  <mlivshin@bigfoot.com>
+
+       * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
+       SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
+       SET_DESTROYED): new defines/macros.
+       (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
+       (add_to_live_list): takes a `guardian_t *' now, not SCM.
+       (guardian_print): print more info.
+       (guardian_apply): check if the guardian is destroyed, and throw an
+       error if so.  take one more optional argument `throw_p'.
+       (scm_guard): depending on the value of `throw_p', return a boolean
+       result.
+       (scm_get_one_zombie): remove redundant property test.
+       (guardian_t): represent the various (currently 3, I hope nothing
+       more gets added) boolean fields as bit flags.
+       (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
+       (scm_destroy_guardian_x): new procedure.
+
+       * guardians.h: added prototypes for `scm_guardian_greedy_p' and
+       `scm_guardian_destroyed_p'.  changed prototype for `scm_guard'.
+
+2001-01-01  Gary Houston  <ghouston@arglist.com>
+
+       * fports.c (fport_write): bugfix: handle short writes for
+       unbuffered ports too.  optimize the buffered case by minimizing
+       the number of write/flush calls.
+       (write_all): new helper procedure.
+
+2000-12-30  Michael Livshin  <mlivshin@bigfoot.com>
+
+       * guardians.c (guardian_print): for sharing guardians, print that
+       they are sharing.
+       (scm_guard, scm_get_one_zombie): place the critical section
+       barriers more correctly.
+
+       * weaks.c (scm_scan_weak_vectors): move the calculation of the
+       `weak_keys' and `weak_values' flags out of the inner loop.
+
+2000-12-29  Michael Livshin  <mlivshin@bigfoot.com>
+
+       * guardians.c: (greedily_guarded_prop): deleted.
+       (greedily_guarded_whash): new variable.  a doubly-weak hash table
+       used to keep the "greedily guarded" object property.  the previous
+       implementation (via primitive object properties) was incorrect due
+       to its only-the-key-is-weak semantics.
+       (scm_guard, get_one_zombie, scm_init_guardians): use/init
+       `greedily_guarded_whash'.
+
+2000-12-28  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * eval.c (check_map_args), gh_data.c (gh_set_substr,
+       gh_scm2newstr, gh_get_substr, gh_symbol2newstr), print.c
+       (scm_iprin1):  Use scm_remember_upto_here_1 instead of
+       scm_remember.
+
+       * gc.[ch] (scm_remember_upto_here_1, scm_remember_upto_here_2,
+       scm_remember_upto_here):  New functions.
+
+       (scm_remember):  Deprecated.
+
+2000-12-28  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * continuations.c (scm_make_continuation):  Make variable cont
+       volatile to let the compiler know that it won't be clobbered by
+       longjmp.  (It wouldn't be anyway, but for some reason the compiler
+       is not able to see that.)
+
+2000-12-28  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       This patch re-introduces the unused member "properties" of
+       struct scm_subr_entry as requested by Mikael Djurfeldt.
+
+       * procs.h (scm_subr_entry):  Re-introduced member "properties".
+
+       (SCM_SUBR_PROPS):  Un-deprecated.
+
+       * procs.c (scm_make_subr_opt, scm_mark_subr_table):  Struct
+       scm_subr_entry has a member "properties" again.
+
+2000-12-28  Michael Livshin  <mlivshin@bigfoot.com>
+
+       * guardians.c (mark_dependencies_in_tconc): new function.
+       (mark_dependencies): bug fix.  mark the dependencies of the known
+       zombies, too.  duh.
+
+2000-12-24  Michael Livshin  <mlivshin@bigfoot.com>
+
+       * gc.c: (scm_gc_mark_dependencies): use SCM_EQ_P for SCMs, not
+       '=='.  also, return after calling `scm_gc_mark'.
+
+2000-12-24  Michael Livshin  <mlivshin@bigfoot.com>
+
+       * gc.c: (scm_gc_mark_dependencies): new function.  like
+       `scm_gc_mark', but doesn't mark the argument itself.  defined
+       using an arrangement similar to that in eval.c: `scm_gc_mark' and
+       `scm_gc_mark_dependencies' are derived from the same "template"
+       by ugly preprocessor magic.
+
+       * gc.h: added prototype for `scm_gc_mark_dependencies'.
+
+       * init.c (scm_init_guile_1): call the renamed
+       `scm_init_guardians'.
+
+       * guardians.h: changed prototypes for `scm_make_guardian' and
+       `scm_init_guardians'.
+
+       * guardians.c (guardian_t): added new fields `greedy_p' and
+       `listed_p'.
+       (GUARDIAN_P): predicate that says whether its argument is a
+       guardian.
+       (GUARDIAN_GREEDY_P, GUARDIAN_LISTED_P): new predicates.
+       (greedy_guardians, sharing_guardians): new variables.  hold the
+       greedy and sharing live guardian lists, respectively.
+       (first_live_guardian, current_link_field): removed.
+       (greedily_guarded_prop): new variable.  holds the "is greedily
+       guarded" object property.
+       (self_centered_zombies): new variable.  stores guarded objects
+       that are parts of cycles.
+       (add_to_live_list): new function, introduced to decouple marking a
+       guardian and adding it to the live list.
+       (guardian_mark): call `add_to_live_list'.
+       (guardian_print): print whether the guardian is greedy or not.
+       also change "live" and "zombie" to "reachable" and "unreachable"
+       respectively, to be less confusing.
+       (scm_guard): if the guardian is greedy, test whether the object is
+       already greedily marked.  throw an error if so.
+       (scm_get_one_zombie): if the guardian is greedy, remove the
+       "greedily guarded" property from the object.
+       (scm_make_guardian): add a new optional boolean argument which
+       says whether the guardian is greedy or sharing.
+       (guardian_gc_init): init the new live lists.
+       (mark_dependencies): new function.
+       (mark_and_zombify): new function.
+       (guardian_zombify): reworked to support the new guardian
+       semantics.  move some logic to `mark_dependencies' and
+       `mark_and_zombify'.
+       (whine_about_self_centered_zombies): new function.  installed in
+       the `after-gc-hook' to complain about guarded objects which are
+       parts of cycles.
+       (scm_init_guardians): init the new stuff.  renamed from
+       `scm_init_guardian'.
+
+2000-12-23  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * procs.h (scm_subr_entry):  Removed unused struct member
+       "properties".
+
+       (SCM_SUBR_PROPS):  Deprecated.
+
+       * procs.c (scm_make_subr_opt, scm_mark_subr_table):  Struct
+       scm_subr_entry does not have a member "properties" any more.
+
+2000-12-22  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * procs.h (scm_subr_entry):  Removed unused struct member
+       "documentation".
+
+       (SCM_SUBR_DOC):  Deprecated.
+
+       * procs.c (scm_make_subr_opt):  Eliminate use of scm_intern0 in
+       favor of scm_str2symbol.  Similarly, prefer scm_sysintern over
+       scm_sysintern0.
+
+       (scm_make_subr_opt, scm_mark_subr_table):  Struct scm_subr_entry
+       does not have a member "documentation" any more.
+
+2000-12-21  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * eval.c (restore_environment):  Make sure that changes to the
+       current environment will take effect when re-entering the dynamic
+       scope.
+
+2000-12-21  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * goops.h (SCM_PUREGENERICP):  Include the SCM_STRUCTP test.
+
+       * goops.c (scm_sys_invalidate_method_cache_x, scm_m_atdispatch,
+       scm_pure_generic_p):  The SCM_STRUCTP test is implied.
+
+2000-12-20  Gary Houston  <ghouston@arglist.com>
+
+       * continuations.c (continuation_apply): subtract the length of
+       continuation->dynenv, not the dynenv itself.  I broke it last
+       time I changed this file.  thanks to Bernard Urban.
+
+2000-12-16  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * goops.c (remove_duplicate_slots, maplist,
+       scm_sys_initialize_object, scm_sys_prep_layout_x,
+       scm_sys_inherit_magic_x, scm_instance_p,
+       scm_sys_set_object_setter_x, scm_sys_invalidate_method_cache_x,
+       scm_compute_applicable_methods, scm_m_atdispatch,
+       scm_pure_generic_p):  Remove redundant SCM_N?IMP tests.
+
+2000-12-16  Keisuke Nishida  <kxn30@po.cwru.edu>
+
+       * validate.h (SCM_WRONG_NUM_ARGS): New macro.
+       * goops.h: #include "libguile/validate.h"
+       (SCM_CLASSP, SCM_GENERICP, SCM_METHODP): Moved from goops.c with
+       prefix "SCM_".
+       (SCM_VALIDATE_INSTANCE, SCM_VALIDATE_ACCESSOR, SCM_VALIDATE_CLASS,
+       SCM_VALIDATE_GENERIC, SCM_VALIDATE_METHOD): New macros.
+       * goops.c (CLASSP, GENERICP, METHODP): Moved to goops.h with
+       prefix "SCM_".
+       (scm_sys_compute_slots, scm_sys_initialize_object,
+       scm_sys_prep_layout_x, s_sys_inherit_magic_x, scm_instance_p,
+       scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
+       scm_class_direct_subclasses, scm_class_direct_methods,
+       scm_class_precedence_list, scm_class_slots, scm_class_environment,
+       scm_generic_function_name, scm_generic_function_methods,
+       scm_method_generic_function, scm_method_specializers,
+       scm_method_procedure, scm_accessor_method_slot_definition,
+       scm_make_unbound, scm_unbound_p, scm_assert_bound,
+       scm_at_assert_bound_ref, scm_sys_fast_slot_ref,
+       scm_sys_fast_slot_set_x, scm_slot_ref_using_class,
+       scm_slot_set_using_class_x, scm_slot_bound_using_class_p,
+       scm_slot_exists_using_class_p, scm_slot_ref, scm_slot_set_x,
+       scm_slot_bound_p, scm_slots_exists_p, scm_sys_allocate_instance,
+       scm_sys_set_object_setter_x, scm_sys_modify_instance,
+       scm_sys_modify_class, scm_sys_invalidate_class,
+       scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
+       scm_enable_primitive_generic_x, scm_primitive_generic_generic,
+       scm_make, scm_find_method, scm_sys_method_more_specific_p,
+       scm_pure_generic_p, scm_sys_goops_loaded): Replaced SCM_PROC by
+       SCM_DEFINE.  Use validate macros defined above.
+       (scm_assert_bound, scm_at_assert_bound_ref, scm_sys_goops_loaded):
+       Declared as static functions.
+       (s_class_of, scm_class_of): Replaced SCM_PROC by SCM_DEFINE
+       in object.c.
+       * object.c (scm_class_of): Use SCM_DEFINE.
+
+2000-12-16  Keisuke Nishida  <kxn30@po.cwru.edu>
+
+       * symbols.h (scm_symbols_prehistory): Added prototype.
+
+2000-12-16  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * environments.[ch] (scm_system_environment):  New variable, will
+       replace scm_symhash soon.  We may decide for a better name and
+       also to split this up into a set of environments later.
+
+       (scm_environments_prehistory):  Initialize scm_system_environment.
+
+       * init.c (scm_init_guile_1):  scm_environments_prehistory requires
+       storage to be initialized.
+
+2000-12-15  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * eval.c (change_environment, inner_eval, restore_environment):
+       New functions.
+
+       (scm_eval):  Bring the global variable that holds the current
+       environment up to date when entering or leaving the scope of the
+       evaluated code.  Thanks to Matthias Koeppe for the bug report.
+
+2000-12-13  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * numbers.c (scm_init_numbers):  Re-introduced bindings for
+       most-positive-fixnum and most-negative-fixnum as requested by
+       Mikael Djurfeldt.
+
+2000-12-12  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       The variable scm_symbols is made static within symbols.c and
+       renamed to symbols.  The initialization of the symbols hash table
+       is done in function scm_symbols_prehistory.
+
+       * gc.c (scm_init_storage):  Don't initialize scm_symbols.  Don't
+       define most-positive-fixnum, most-negative-fixnum and
+       bignum-radix.
+
+       * init.c (scm_init_guile_1):  Call scm_symbols_prehistory.
+
+       * root.h (scm_symbols):  Not in scm_sys_protects any more.
+
+       * symbols.c (symbols):  Renamed from scm_symbols and made static.
+
+       (scm_mem2symbol):  scm_symbols is renamed to symbols.
+
+       * symbols.[ch] (scm_symbols_prehistory):  Added.
+
+2000-12-12  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * gc.c (scm_init_storage), root.h (scm_weak_symhash, scm_symbols):
+       Removed the former scm_weak_symhash hash table.  Added scm_symbols
+       hash table.
+
+       * stacks.c (get_applybody):  scm_sym2vcell may return #f.
+
+       * symbols.c (scm_mem2symbol):  This function is now responsible
+       for creating symbol objects and storing them in the global
+       scm_symbols hash table.
+
+       (scm_str2symbol):  Rewritten in terms of scm_mem2symbol.
+
+       (scm_sym2vcell):  For system bindings, there is now only one
+       obarray - scm_symhash.  If scm_sym2vcell is called to look up a
+       symbol that can't be found and shall not be created, #f is
+       returned.  Most callers of scm_sym2vcell have expected this
+       behaviour anyway.
+
+       (scm_intern_obarray_soft):  Removed reference to scm_weak_symhash
+       from comment.
+
+       (scm_intern_obarray_soft, scm_sysintern0_no_module_lookup):  These
+       functions are not responsible for symbol creation any more, only
+       for creation of bindings.
+
+       (scm_symbol_value0):  Don't use scm_intern_obarray_soft to create
+       a symbol object.
+
+       (scm_symbol_interned_p):  scm_weak_symhash is removed.
+
+       * symbols.[ch] (scm_builtin_weak_bindings):  Removed.  There are
+       no weak bindings any more.
+
+2000-12-12  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * hooks.c (scm_create_hook), script.c
+       (scm_compile_shell_switches), snarf.h (SCM_VCELL,
+       SCM_GLOBAL_VCELL, SCM_VCELL_INIT, SCM_GLOBAL_VCELL_INIT):  Create
+       a binding in one go (instead of first creating a vcell and then
+       setting its cdr).
+
+2000-12-12  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * hash.[ch] (scm_string_hash), symbols.[ch] (scm_string_hash):
+       Moved function scm_string_hash to hash.c.
+
 2000-12-11  Marius Vollmer  <mvo@zagadka.ping.de>
 
        * gc_os_dep.c (scm_get_stack_base) [MSWIN32]: Added detection of