From: Matthew Flatt <>
Subject: [plt-scheme] 369.4
Date: Fri, 12 Jan 2007 15:15:03 +0800

MzScheme and MrEd are now version 369.4 in the SVN repository trunk.

The main change is in MzScheme’s memory management. The 3m variant of
MzScheme, MrEd, DrScheme, etc. is now the default:

 * The executables formerly known as "MzScheme3m", "MrEd3m",
   "DrScheme3m", etc. (and which weren’t included in a standard
   distribution) are now called "MzScheme", "MrEd", "DrScheme", etc.

 * The executables formerly known as "MzScheme", "MrEd", "DrScheme",
   etc. are now "MzSchemeCGC", "MrEdCGC", "DrSchemeCGC", etc., and they
   aren’t included in a standard distribution.

Whether this is a small change or a big change depends on how you use
DrScheme. If you just write Scheme code, then all you should notice is
improved memory use, and maybe a change in run-time performance
(usually either a small negative change or a large positive change,
depending on how much allocation is involved). If you connect C code or
foreign libraries to PLT Scheme, then you may have to learn about
MzScheme’s memory-management variants; see "Inside PLT MzScheme".

For more information about "3m" versus "CGC" (the old default), see

It may takes us a few days to get nightly builds online with these
changes. The "Full" nightly build will include CGC binaries as well as
3m binaries.

When you build from source under Unix and Mac OS X, you can build CGC
binaries --- with a "cgc" suffix for executables --- with `make cgc’;
install with `make install-cgc’. Use `make both’ and `make install-both’
to build and install both variants.

Libraries keep their old names; only executable names change with this
version. If you really need the old organization (unsuffixed CGC
executables and optional, suffixed 3m executables), configure with
--enable-cgcdefault, but that’s a last resort.

When you run the 3m variant of mzc, then mzc now works in 3m mode by
default. Similarly, when you run the CGC veriant of mzc, then mzc works
in CGC mode by default. A new --cgc flag enables CGC mode even when
running the 3m variant of mzc, and the --3m flag works like always.

Executable-generating tools determine which suffix convention you’re
using automatically, at least if you’re using the standard one (no
suffix for 3m, "CGC" for CGC) or the old one ("3m" suffix for 3m, no
suffix for CGC). If you want a different suffix convention, you can
manually rename the MzScheme and MrEd executables and change
"" in the "config" collection, but I doubt that anyone will
ever try that.

Other changes:

 * Changed `system-type’ to accept ’gc and ’so-suffix flags. The result
   for the former is either ’3m or ’cgc.

 * Changed launcher, embedding, and compilation libraries to support
   ’cgc as a variant, and removed ’normal as a variant. The default is
   the result of `(system-type ’gc)’.

 * Changed `path->directory-path’, `simplify-path’, and `split-path’ to
   include a trailing path separator, even when the result would be a
   directory syntactically without it. For example,
   `(path->string (path->directory-path "."))’ produces "./".

 * Changed `simplify-path’ for Windows paths to replace "/" with "\\".

 * Changed `current-directory’ to apply `path->directory-path’ to a
   given path.