+2003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
+
+ * threads.c (scm_timed_wait_condition_variable): Support timed
+ waiting also for simple condition variables.
+
+ * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
+ of calling the procedure change-object-class.
+
+2003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
+
+ * ramap.c (scm_ramapc): Typo in error message.
+
+2003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
+
+ * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
+ slots with instance allocation.
+
+ * goops.c, goops.h (scm_class_extended_generic_with_setter): New
+ class.
+ (scm_compute_applicable_methods): Use scm_generic_function_methods.
+
+ * goops.c (scm_generic_function_methods): Support extended
+ generic functions.
+
+2002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
+
+ * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
+ Thanks to Neil for pointing this out!
+
+2002-12-29 Neil Jerram <neil@ossau.uklinux.net>
+
+ * lang.h: Remove declarations matching definitions removed from
+ lang.c (just below).
+
+2002-12-28 Neil Jerram <neil@ossau.uklinux.net>
+
+ * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
+ scm_m_while, scm_nil_eq): Remove definitions that were superfluous
+ and already commented out.
+
+ * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
+ scm_lreadparen): Support reading vectors with Elisp syntax if
+ SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
+ is not currently defined, and there isn't even a configure switch
+ to enable it yet.)
+
+2002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
+
+ * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
+ builds work.
+ (EXTRA_DIST): Added version.h.in.
+
+2002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
+
+ This change makes it possible for one thread to do lazy sweeping
+ while other threads are running. Now only the mark phase need to
+ have all threads asleep. We should look further into this issue.
+ Presently, I've put the locking of scm_i_sweep_mutex at
+ "conservative" places due to my current lack of knowledge about
+ the garbage collector. Please feel free to restrict these regions
+ further to allow for maximal parallelism!
+
+ * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
+
+ * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
+ scm_gc_register_collectable_memory): Substitute locking of
+ scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
+ (scm_igc): Lock sweep mutex here instead of in callers; Calls to
+ scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
+ the single-thread section (which now only contains the mark
+ phase).
+ (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
+ Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
+
+ * threads.c (gc_section_mutex): Removed.
+
+2002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
+
+ * threads.c (create_thread): Clear parent field in root state in
+ order not to unnecessarily remember dead threads.
+
+ * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
+ (scm_trampoline_1, scm_trampoline_2): Use them.
+
+2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
+
+ Partial introduction of real plugin interface.
+
+ * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
+ (EXTRA_DIST): Added threads-plugin.c.
+
+ * threads-plugin.h, threads-plugin.c: New files.
+
+ * threads.h: #include "libguile/threads-plugin.h".
+
+ * threads.c: #include "libguile/threads-plugin.c".
+
+ * pthread-threads.c: Temporarily remove debugging functions.
+
+ * threads.c, threads.h (scm_yield): Added back.
+
+2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
+
+ * threads.c (really_launch): Detach before unlocking
+ thread_admin_mutex in order not to risk being joined.
+ (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
+ thread_admin_mutex locked during GC.
+
+ * pthread-threads.c, pthread-threads.h: Improvements to debugging
+ functions.
+
+2002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
+
+ * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
+ support for debugging mutex operations.
+
+ * threads.c (scm_thread): Removed filed joining_threads.
+ (thread_print): Print thread number as well as address of thread
+ structure.
+ (scm_join_thread): Bugfix.
+ (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
+ scm_timed_wait_condition_variable, scm_signal_condition_variable,
+ scm_broadcast_condition_variable): Use the low-level API.
+ (scm_all_threads): Return copy of thread list (to prevent
+ unintended destruction).
+ (scm_threads_prehistory): Initialize heap_mutex of fake thread.
+
+ * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
+ pthread "native" recursive mutex support.
+
+2002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
+
+ * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
+ Simply lock a thread C API recursive mutex.
+ (SCM_NONREC_CRITICAL_SECTION_START,
+ SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
+ SCM_REC_CRITICAL_SECTION_END): Removed.
+
+ * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
+ direct calls to scm_rec_mutex_lock / unlock around the three calls
+ to scm_m_expand_body.
+
+ * eval.c, eval.h (promise_free): New function.
+ (scm_force): Rewritten; Now thread-safe; Removed
+ SCM_DEFER/ALLOW_INTS.
+
+ * pthread-threads.h: Added partially implemented plugin interface
+ for recursive mutexes. These are, for now, only intended to be
+ used internally within the Guile implementation.
+
+ * pthread-threads.c: New file.
+
+ * threads.c: Conditionally #include "pthread-threads.c".
+
+ * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
+ thread-safe;
+
+ * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
+ SCM_GLOBAL_REC_MUTEX): New macros.
+
+ * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
+ macros---use mutexes instead.
+
+ * tags.h (SCM_IM_FUTURE): New tag.
+
+ * eval.c (scm_m_future): New primitive macro.
+ (SCM_CEVAL): Support futures.
+ (unmemocopy): Support unmemoization of futures.
+
+ * print.c (scm_isymnames): Name of future isym.
+
+ * version.c: Unmade some changes to my private copy that got
+ committed by mistake.
+
+2002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
+
+ * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
+ 2002-12-10.
+
+ * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
+
+ * gc.c (scm_gc_sweep): Call it here instead, which is a more
+ logical place.
+
+ * threads.c (create_thread): Remember root object until the handle
+ of the new thread is on all_threads list.
+
+ * root.c (scm_make_root): Moved copying of fluids until after
+ creation of root handle so that the fluids are GC protected. Also
+ removed the critical section.
+