From: Eli Barzilay <>
Subject: [plt-scheme] PLT Scheme v350
Date: Mon, 19 Jun 2006 01:33:56 -0400

PLT Scheme version 350 is now available from

Compared to version 301 (the previous stable release), much has
changed in the underlying infrastructure of PLT Scheme, but relatively
little has changed in the supported languages and libraries.


 * New installation process and filesystem layout: the Mac OS X
   installation is drag-and-drop, the Unix installation matches FHS
   conventions (if you want), and the Windows installation does not
   write to the system folder (except to update the registry).  In
   particular, it’s now possible to create a fully functional PLT
   Scheme installation on a CD-ROM or a USB memory stick.

   Along with this change, tools to create executables -- including
   DrScheme’s "Create Executables..." menu item -- can produce
   self-contained packages (i.e., with all needed DLLs, frameworks,
   and shared libraries).

 * ProfessorJ now supports a unit testing mechanism. It extends Java
   with a "check ... expect" expression for writing test cases, and it
   automatically evaluates Example classes and test methods,
   summarizing the results in a window.

   ProfessorJ also includes a new wizard for generating class and
   union declarations.

   The draw library has changed to accommodate multiple worlds (see
   docs), and a new idraw library supports imperative drawing and

 * MzScheme includes a just-in-time (JIT) compiler from byte code to
   native code on x86, x86_64, and PowerPC platforms.  The JIT is
   enabled by default.

   Performance improvements due to the JIT vary; the following timings
   on a 2GHz MacBook provide some idea of the spectrum:

     Shootout benchmarks (
                           No JIT          JIT       No-JIT/JIT
       nsieve-bits 7         7.5 sec      0.8 sec       9.4
       fannkuch 9            8.6          2.0           4.3
       fasta 500000          8.5          3.1           2.7
       regex-dna 5000000    10.5         10.3           1.0

     tex2page on the mzscheme manual:
                           No JIT          JIT       No-JIT/JIT
                            37.6 sec     10.2 sec       3.7

     mzc -c
                           No JIT          JIT       No-JIT/JIT
                            19.4 sec     13.7 sec       1.4

 * MzScheme’s default exception handler now shows stack-trace
   information.  This stack-trace information is less precise than
   from the "errortrace" tool, but it’s often good enough, and it’s
   always available.

 * DrScheme now treats open square-bracket `[’ keyboard input
   specially.  In most contexts, an open parenthesis `(’ is inserted,
   instead -- but `[’ is left alone in certain contexts, such as the
   start of a `let’ binding or a `cond’ clause.

   The intent is that you can type unshifted `[’ and `]’ characters
   and get code that looks as if you had typed `(’ and `)’ with less
   wear and tear on your hands.  Use Ctl-[ in any context to get `[’,
   or change the preference to disable special treatment of `[’.

For more details, follow the "Release" and then "Release Notes" links
in Help Desk, or see
A complete history of changes is at:

          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                         Maze is Life!