From: Matthew Flatt <>
Date: Thu, 6 Mar 2003 15:55:20 -0700
Subject: [plt-scheme] 203.5

The exp-tagged code in CVS for MrEd and MzScheme is now version 203.5.

IMPORTANT: `make-custom-input-port’ and `make-custom-output-port’ have
   changed. If you supply #f as the first argument in a call to
   `make-custom-input-port’, just delete the first argument and
   everything will be fine. If you supply #f as the first argument to
   `make-custom-output-port’, just leave it alone. Otherwise, see below
   for more details, and see the documentation for full details.


 * Added `make-wrapped-waitable’, `make-guard-waitable’, and
   `make-nack-waitable’ a la Concurrent ML.

 * Added `waitables->waitable-set’, which is like `choose’ in
   Concurrent ML.

 * Changed `make-custom-input-port’ to drop the initial waitable
   argument. Instead, the reading and peeking functions should return a
   waitable when they would otherwise return 0. (Returning 0 is still
   ok, but leads to busy waiting.)

   Previously, if the waitable supplied as the first argument to
   `make-custom-input-port’ was a semaphore, then the system would
   re-post the semaphore after a successful wait. Now, however, the
   system may or may not wait on the waitable returned by a reading or
   peeking function, and it takes no special action on success.

 * Changed `make-custom-output-port’ so that the first argument is #f
   or a procedure to return a waitable (instead of #f or a waitable).
   The waitable may or may not be used by the system, and no special
   action is taken on success (in particular, if the waitable is a
   semaphore, it is not re-posted).

 * Added `make-semaphore-peek’, which can be helpful in implementing
   custom ports.

 * Changed `make-struct-type-property’ to accept a guard procedure for
   the property.

 * Changed `make-struct-type’ to accept a list of immutable field

 * Changed `struct-type-info’ to return 8 values instead of 6. The new
   information enumerates immutable fields and distinguishes the
   init-field count from the auto-field count.

 * Changed the handling of the "proc-spec" argument to
   `make-struct-type’. If it is an integer, the value must be <
   init-field-k. Overriding is disallowed (for consistency with
   user-defined properties).

 * Added `prop:waitable’ for creating waitable structure types.

 * Mac OS X: tab-panel% now draws a border around its content by

 * Added ’no-border style to tab-panel%.

 * Added group-box-panel%.

 * Windows: radio-box% buttons no long have an automatic border around
   the button set, and the label now follows the requested positioning
   of control labels (set in the parent). To get the border back, use a

 * Added `eventspace-handler-thread’.

 * Added `vertical-inset’ and `horizontal-inset’ methods to

 * Changed text-field% to have margins of 2 (now matches the
   documentation), and the reduced space between the edit-box border
   and the editable text.

 * Windows XP: switched to XP-style controls (comctl32 version 6).