* coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
[bpt/guile.git] / NEWS
diff --git a/NEWS b/NEWS
index 5965d73..c50204c 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -8,6 +8,25 @@ Changes since the stable branch:
 
 * Changes to the distribution
 
+** There are two new thread implementation options: "null" and
+   "coop-pthreads".
+
+When you configure "--with-threads=null", you will get the usual
+threading API (call-with-new-thread, make-mutex, etc), but you can't
+actually create new threads.  Also, "--with-threads=no" is now
+equivalent to "--with-threads=null".  This means that the thread API
+is always present, although you might not be able to create new
+threads.
+
+When "coop" threading is not supported on your platform, you will get
+the "null" threads instead.
+
+The "coop-pthread" (or shorter: "copt") thread implementation will use
+portable POSIX threads but will restrict them so that only one thread
+can execute 'in Guile' at any one time.  This option will give you the
+same basic behavior as the "coop" option, but hopefully in a more
+portable way.
+
 ** Guile now includes its own version of libltdl.
 
 We now use a modified version of libltdl that allows us to make
@@ -27,6 +46,25 @@ debugging evaluator gives better error messages.
 
 * Changes to Scheme functions and syntax
 
+** Mutexes are now recursive.
+
+Locking a mutex that you have already locked will now succeed.  Every
+call to lock-mutex must be matched with a call to unlock-mutex.  Only
+the last call to unlock-mutex will actually unlock the mutex.
+
+** New function 'try-mutex'.
+
+This function will attempt to lock a mutex but will return immediately
+instead if blocking and indicate failure.
+
+** Waiting on a condition variable can have a timeout.
+
+The funtion 'wait-condition-variable' now takes a third, optional
+argument that specifies the point in time where the waiting should be
+aborted.
+
+** New function 'broadcast-condition-variable'.
+
 ** New functions 'all-threads' and 'current-thread'.
 
 ** Signals and system asyncs work better with threads.
@@ -153,6 +191,19 @@ Change your code to use either procedure->memoizing-macro or, probably better,
 to use r5rs macros.  Also, be aware that macro expansion will not be done
 during evaluation, but prior to evaluation.
 
+** Soft ports now allow a `char-ready?' procedure
+
+The vector argument to `make-soft-port' can now have a length of
+either 5 or 6.  (Previously the length had to be 5.)  The optional 6th
+element is interpreted as an `input-waiting' thunk -- i.e. a thunk
+that returns the number of characters that can be read immediately
+without the soft port blocking.
+
+** New debugging feature: breakpoints.
+
+Guile now has breakpoints.  For details see the `Debugging Features'
+chapter in the reference manual.
+
 * Changes to the C interface
 
 ** The value 'scm_mask_ints' is no longer writable.
@@ -200,6 +251,10 @@ the C variables that control garbage collection.  The environment
 variables GUILE_MAX_SEGMENT_SIZE, GUILE_INIT_SEGMENT_SIZE_2,
 GUILE_INIT_SEGMENT_SIZE_1, and GUILE_MIN_YIELD_2 should be used.
 
+** The function scm_definedp has been renamed to scm_defined_p
+
+The name scm_definedp is deprecated.
+
 ** The struct scm_cell has been renamed to scm_t_cell
 
 This is in accordance to Guile's naming scheme for types.  Note that
@@ -292,6 +347,17 @@ option to disable the checking has most probably not been used anyway.
 Full number of arguments checking of closures is mandatory now.  However, the
 option to disable the checking has most probably not been used anyway.
 
+** Deprecated configure flags USE_THREADS and GUILE_ISELECT
+
+Previously, when the C preprocessor macro USE_THREADS was defined,
+libguile included a thread API.  This API is now always included, even
+when threads are not really supported.  Thus, you don't need to test
+for USE_THREADS.
+
+Analogously, GUILE_ISELECT was defined when the function
+scm_internal_select was provided by Guile.  This function is now
+always defined, and GUILE_ISELECT with it.
+
 ** Removed definitions:  scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify, scm_m_0_ify, s_1_ify,
 scm_m_1_ify, scm_debug_newcell,        scm_debug_newcell2, scm_tc16_allocated,