From: Matthew Flatt <>
Date: Sun, 21 Apr 2002 10:45:18 -0600 (MDT)
Subject: 200alpha17

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

This version changes `make-input-port’ and `make-output-port’, as
promised. The new procedures are called `make-custom-input-port’ and
`make-custom-output-port’ (mainly to help identify code that needs to
be comverted).

The new interface for `make-custom-input-port’ and
`make-custom-output-port’ is roughly what I posted last week. See the
MzScheme manual for lots of details.

Other changes:

 * `object-wait-multiple’ works on all input and output ports.

 * Added `read-string-avail!*’ and `write-string-avail*’, which are
   completely non-blocking versions of the starless routines. The new
   procedures are useful only to programs that want to schedule their
   own tasks instead of using MzScheme threads.

 * Added `peek-string’, `peek-string-avail!’, `peek-string-avail!*’,
   and `peek-string-avail!/enable-break’. Compared to the reading
   counterparts, each of these takes a skip count, so you can skip over
   N characters and then peek at M characters.

 * Added `shell-execute’, which is a poor-Windows-man’s analogue to
  `send-event’. It works in Windows, only.

 * Inside MzScheme: changed scheme_make_input_port, scheme_make_output_port,
   added scheme_get_string, scheme_put_string.

Beware: The port changes required significant restructing in the
underlying code. I’ve tested the changes thoroughly, but there’s a
greater-than-usual likelihood of new I/O bugs in this release.