[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

PLT Scheme development directions



Our medium-term development plan is falling into place. Here's an
update.

Version 103 is probably the end of the line for the current PLT
architecture, just as version 53 was the last of its kind. Visibly
radical changes are ahead. If you read this mailing list, your current
code probably won't work in the next official release of PLT Scheme.
But when you port it to the new version, it'll work better.

Of course, we'll build on our current infrastructure, as usual, and the
vast majority of academic DrScheme users won't notice much difference
(just fewer problems).

We're currently working on the following two items:

 * Syntax (macros, program loading, compilation)

   MzScheme's lack of modular support for syntactic extension has
   become a bottleneck in building new libraries and experimenting with
   new language constructs. The situation with incompatible "debugging"
   and "non-debugging" languages (both clumsy) has become intolerable.

   To address this problem, we're looking at a new module
   language/layer that gracefully handles macros (real macros --- not
   defmacro) and other first-order entities (e.g., unit signatures).
   The new syntax framework will be powerful enough to express
   DrScheme's teaching languages, but accessible enough for everyday
   Schemers. A compilation manager built around the module system will
   let us to get rid of `require-library', `begin-elaboration-time',
   and all the other related hacks.

   Naturally, we'll take this opprtunity to clean up and rearrange
   libraries. We may also modify the class system.

 * Memory management

   Although the current conservative garbage collector (CGC) works well
   enough for many programs (especially in the short run or for small
   programs) it isn't scaling well overall. Some programs grow too
   large too quickly. Some leak when they shouldn't, due to GC
   imprecision. And some programs should grow and then shrink, letting
   the OS have memory back when its no longer needed.

   As most of you know, MzScheme/MrEd "2k" has been in development for
   nearly a year, now. The 2ks implement conventional, generational,
   precise garbage collection (PGC), while still building on all the
   existing C-based infrastructure behind regular MzScheme and MrEd
   (except for the GC, of course).

   As of 103.3, the 2ks seem fairly stable under Unix, and their
   performance is starting to be reasonable (10-20% slower than plain
   MzScheme/MrEd on x86, 40-50% slower on processors with a sigificant
   number of registers). After the Windows port is ready (it's off to a
   good start), we'll start the transition from CGC to PGC as the
   default.

   The CGC and PGC versions of PLT Scheme will coexist for the
   forseeable future, since CGC has its role in embedding and extending
   applications. But C-based extensions for a wide audience will need
   to be PGC-friendly in the long run.

The intended time scale for these items is 3-4 months. If all goes
well, your code should break in early February. :)

When the above two changes are in place, we'll move on to a third item:

 * Core size and configurability

   With a new module system in place, we'll be ready to break up
   MzScheme and MrEd as the currently exist. They'll be replaced with a
   smaller PLT Scheme core; parts of MzScheme parts and all of MrEd
   will be dynamically-loadable modules for this core. (The unit and
   class systems will most likely be moved out of the core earlier, as
   part of the syntax revisions.)

   The core reorganization should provide a smaller footprint for
   embedding applications, and it should also allow users to more
   easily build on the core in different directions (different GUI
   libraries, more multimedia support, etc.).

The target date for this item is late spring, pending success on the
first two items.

Meanwhile, in parallel to the above three items:

 * Debugging

   The Stpper improvements over the last couple of DrScheme releases
   were actually part of an aggressive debugger development plan. The
   skeleton of a conventional debugger for DrScheme is now in place and
   progressing.

103 will stick around for those of you who need it. We'll consider
supporting patches to 103 if there's enough demand (but there's never
been much demand for patches to old versions before).

Matthew