From: Matthew Flatt <>
Date: Sat, 21 Jun 2003 06:33:24 -0600
Subject: [plt-scheme] 204.6

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

The change for this version is improved OpenGL support: the ’gl flag is
no longer necessary for enabling OpenGL drawing to a canvas%, and
OpenGL can be used to render to an offscreen bitmap.

The `configure’ script and makefiles have also changed considerably,
but the difference should be barely noticeable. For --enable-shared
builds (--enable-shared is now the preferred name for --enable-dynlib),
the version number is embedded in the dynamic-library name.


 * Changed canvas% so that ’gl style is no longer needed
   to enable OpenGL drawing in the canvas.

 * Added a `get-gl-context’ method to dc<%>, which returns a
   gl-context<%> for canvas and bitmap DCs (#f otherwise).

   The new gl-context<%> provides `call-as-current’, `swap-buffers’,
   and `ok?’ methods.

   Only one GL context can be selected at a time (globally in MrEd),
   and the `call-as-current’ method blocks until it can obtain a lock
   that represents the current context. An uncooperative thread can
   starve other OpenGL-drawing threads by grabbing the lock and
   blocking (but killing such a thread releases the lock). Furthermore,
   except under Mac OS, a GL context is not protected from interference
   by unfriendly threads, which can issue OpenGL commands without
   setting the context.

   MrEd still provides no OpenGL support other than managing the
   drawing context. Use (lib "" "sgl") or another such extension
   to render images.

   See the documentation for more information.

 * Changed the `with-gl-context’ method of canvas% to use
   `call-as-current’ for its gl-context<%>. The difference from the old
   behavior is that context setting is serialized across all

 * Added `application-file-handler’, useful only under Mac OS.

 * The `configure’ script now properly handles environment variables
   such as CPPFLAGS and LDFLAGS (i.e., the ones listed with --help).

 * When configured to create shared libraries (via --enable-shared or
   its synonym, --enable-dynlib), the Makefiles generate
   libmzscheme-<version>.so, etc.

   Users of --enable-shared and the CVSed code should beware of
   accumulating old libraries (just like Mac OS X users of the CVSed

 * The `configure’ script uses the latest version of libtool.

   Upgrading was painful, and in the end it didn’t solve any problems
   for me. But maybe someone will benefit.