* libguile/posix.h:
* libguile/posix.c (scm_c_atfork): New interface.
(scm_fork): Wrap fork calls in atfork pre/post invocations, and
finally a GC_call_with_alloc_lock. It's an attempt to grab the
interesting mutexes in Guile.
* libguile/weak-set.c (make_weak_set):
* libguile/weak-table.c (make_weak_table): Use atfork mechanism to lock
and unlock weak sets and weak tables during a fork(), in such a way
that does not prevent those tables from being gc'd.
* libguile/weak-set.c:
* libguile/weak-set.h: New files, implementing weak sets, for use in the
symbol table and port set. Eventually we will be able to remove weak
pairs.
* libguile.h:
* libguile/Makefile.am: Add new files.
* libguile/evalext.c:
* libguile/gc.c:
* libguile/init.c:
* libguile/print.c:
* libguile/tags.h: Add support for the new types.