(Writing): Add write, revise display.
[bpt/guile.git] / NEWS
diff --git a/NEWS b/NEWS
index 047ab88..56f2ff4 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -77,6 +77,41 @@ portable way.
 The default is now "coop-pthread", unless your platform doesn't have
 pthreads, in which case "null" threads are used.
 
+** New module (ice-9 serialize):
+
+(serialize FORM1 ...) and (parallelize FORM1 ...) are useful when
+you don't trust the thread safety of most of your program, but
+where you have some section(s) of code which you consider can run
+in parallel to other sections.
+
+They "flag" (with dynamic extent) sections of code to be of
+"serial" or "parallel" nature and have the single effect of
+preventing a serial section from being run in parallel with any
+serial section (including itself).
+
+Both serialize and parallelize can be nested.  If so, the
+inner-most construct is in effect.
+
+NOTE 1: A serial section can run in parallel with a parallel
+section.
+
+NOTE 2: If a serial section S is "interrupted" by a parallel
+section P in the following manner: S = S1 P S2, S2 is not
+guaranteed to be resumed by the same thread that previously
+executed S1.
+
+WARNING: Spawning new threads within a serial section have
+undefined effects.  It is OK, though, to spawn threads in unflagged
+sections of code where neither serialize or parallelize is in
+effect.
+
+A typical usage is when Guile is used as scripting language in some
+application doing heavy computations.  If each thread is
+encapsulated with a serialize form, you can then put a parallelize
+form around the code performing the heavy computations (typically a
+C code primitive), enabling the computations to run in parallel
+while the scripting code runs single-threadedly.
+
 ** Guile now includes its own version of libltdl.
 
 We now use a modified version of libltdl that allows us to make
@@ -814,6 +849,11 @@ 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.
 
+** New function scm_c_port_for_each.
+
+This function is like scm_port_for_each but takes a pointer to a C
+function as the callback instead of a SCM value.
+
 ** 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,
@@ -824,22 +864,12 @@ scm_debug_newcell2, 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,
 *top-level-lookup-closure*, scm_top_level_lookup_closure_var,
-scm_system_transformer, scm_eval_3, scm_eval2, SCM_SETAND_CAR,
-SCM_SETOR_CAR, SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
-SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16, SCM_GCCDR,
-scm_remember, scm_protect_object, scm_unprotect_object,
-root_module_lookup_closure, scm_sym_app, scm_sym_modules,
-module_prefix, make_modules_in_var, beautify_user_module_x_var,
-try_module_autoload_var, scm_module_full_name, scm_the_root_module,
-scm_make_module, scm_ensure_user_module, scm_load_scheme_module,
-scm_port, scm_ptob_descriptor, scm_port_rw_active,
-scm_close_all_ports_except, scm_rstate, scm_rng, scm_i_rstate,
-SCM_SLOPPY_STRINGP, SCM_RWSTRINGP, SCM_STRING_UCHARS,
-SCM_STRING_CHARS, scm_read_only_string_p, scm_makstr, scm_makfromstr,
-scm_make_shared_substring, scm_tc7_substring, SCM_SLOPPY_CONSP,
-SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol, scm_tcs_symbols,
-sym_huh, scm_variable_set_name_hint, scm_builtin_variable,
-SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP,
+scm_system_transformer, scm_eval_3, scm_eval2,
+root_module_lookup_closure, SCM_SLOPPY_STRINGP, SCM_RWSTRINGP,
+SCM_STRING_UCHARS, SCM_STRING_CHARS, scm_read_only_string_p,
+scm_makstr, scm_makfromstr, scm_make_shared_substring,
+scm_tc7_substring, sym_huh, scm_variable_set_name_hint,
+scm_builtin_variable, SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP,
 scm_internal_with_fluids, scm_make_gsubr, scm_make_gsubr_with_generic,
 scm_create_hook, list*, SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3,
 SCM_LIST4, SCM_LIST5, SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9,