From: Matthew Flatt <>
Date: Sat, 7 Apr 2001 20:59:18 -0600 (MDT)
Subject: 199.7

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


 * The `process’, `process*’, `process/ports’, `process*/ports’,
   `system’, and `system*’ procedures have been moved to a new MzLib
   library, "".

   MzScheme’s new built-in form is `subprocess’, which takes the same
   arguments as `process*/ports’. It returns four values: a subprocess
   value, an input port or false (the subprocess’s stdout, if one was
   created), an output port or false (the subprocess’s stdin), and an
   input port or false (the subprocess’s stderr). The new
   `subprocess-status’ procedure gets the status or return code of the
   subprocess, and `subprocess-pid’ gets its process id.

   The `process’, etc. procedures are implemented in terms of
   `subprocess’. Consequently, old bugs and gaps in support (especially
   for Windows) have been eliminated.

   The `execute’ and `execute*’ procedures were eliminated entirely.

   These changes are based on code from Eli Barzily.

 * Added a ’gl style flag to canvas%, for use with extensions that draw
   to the current OpenGL context. The canvas% class also has two new
   methods: `with-gl-context’ and `swap-gl-buffers’. The ’gl style is
   only supported in Windows for now.

   The OpenGl support is based on code from Greg Pettyjohn and the
   current wxWindows distribution.

 * Added an experimental "infix" conversion in the reader.

   Input of the form
      (left ...1  .  mid  .  right ...1)
   is read as
      (mid left ...1 right ...1)
   I.e., a pair of dots between a pair of parens triggers the reader’s
   "infix" conversion.

   For example, the input expression
      (99 . < . 100)
   produces #t.

      (1 2 3 . + . 4 5)
   produces 15, because the "infix" conversion requires a single
   element between the dots, but allows any positive number of elements
   to the left and right of the dots.

   Perhaps unfortunately, the input expression
      ((x) . lambda . x)
   produces the identity function, because the infix conversion is
   performed by the reader.

 * Added a `struct’ form for `provide’.

 * Added `fluid-let-syntax’.

 * Normalized source location reporting (for reader errors, syntax
   errors, and procedure names), and added source-location info to the
   reader exceptions.

 * Changed the C hash-table interface; documentation to appear.

Temporary MzScheme and MzLib documentation is in the usual place: