From: Matthew Flatt <>
Date: Fri, 10 Aug 2001 15:52:36 -0600 (MDT)
Subject: 199.20

The v200-tagged code in CVS for MzScheme and MrEd is now version 199.20.


 * Added `tcp-connect/enable-break’ and `tcp-accept/enable-break’.

 * Added `object-wait-multiple’ and `object-wait-multiple/enable-break’.
   The new procedures accept a timeout (possibly #f) and one or more
   arguments for waiting. They block until the timeout expires, in
   which case #f is returned, or until one of the objects becomes
   unblocked, in which case an unblocked object is returned. If a
   semaphore is returned, then its internal count has been decremented
   by the wait.

   The waitable objects, including their corresponding blocking
   states, are as follows:

     type of object   blocking state
     --------------   ----------------------
     semaphore        internal count is zero
     thread           running
     subprocess       running
     TCP listener     nothing to accept
     will executor    no wills to execute
     input port:      no characters ready

   The `semaphore-wait’, `semaphore-wait/enable-break’, `thread-wait’,
   and `subprocess-wait’ procedures are all technically redundant, but
   it seems worthwhile to keep them for error checking and code

 * Removed `semaphore-wait-multiple’ from the "" MzLib

 * Added `letrec-syntaxes+values’, and changed the expansion of
   internal defines to use the new form so that a sequence of internal
   `define’ and `define-syntax’ defininitions creates a single,
   mutually recursive scope (as in Chez).

 * Fixed `write’ on symbols with uppercase characters to quote the
   characters (unless `read-case-sentitive’ is set to #t).

 * Changed the `datum->syntax-object’ interface for position lists.
   Added a fourth optional argument to `datum->syntax-errors’ for
   copying properties.

 * Fixed reader error messages to use `error-print-source-location’
   and GNU-style source locations.

 * Unix, Windows: fixed bug in `sleep’ when asked to sleep for a large
   number of seconds.

 * Inside MzScheme: changed type of third argument for
   scheme_block_until() from void* to Scheme_Object*.

 * Inside MzScheme: added scheme_add_waitable() and
   scheme_add_waitable_through_sema() for extending the set of objects
   supported by `object-wait-multiple’.

The MzScheme, MzLib, MrEd, mzc, and Inside MzScheme doc bundles have
been updated.