March 21, 2006

ANN: PLT Scheme 301.11

Posted in Computers, Programming, Scheme at 12:23 pm by pmatos

Yes, there was no 301.10 as Matthew pointed out in his announcement:

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

(Version 301.10 never made it out of my development branch.)

IMPORTANT: since the new `compiler-enforce-module-constants’ parameter
defaults to #t, module re-definition is effectively prohibited by
default. Also, in a namespace produced by `module->namespace’, a
variable can’t be redefined or `set!’ed unless the original module
`set!’ed the variable (or the variable wasn’t defined at all). If you
use `module->namespace’ and/or module re-definition for debugging, then
set `compiler-enforce-module-constants’ to #f.

Changes:

* The bytecode compiler now inlines some functions bound by `let’,
`letrec’, or a module-level `define’. The conditions for inlining
are typical (e.g., the function has to be “small”). Currently,
module-level definitions are inlined only within the same module.

* By default, a variable defined in a module top-level is immutable,
unless the module (in expanded form) contains a `set!’ on the
variable.

The only way to `set!’ such variables before was to use
`module->namespace’, or to redefine the module. Now, those don’t
work either, unless the `compiler-enforce-module-constants’
parameter is set to #f before compiling the module.

If `compiler-enforce-module-constants’ is set to #f, then module
bindings are not inlined, and the JIT must generate certain run-time
checks that are otherwise unnecessary.

* Changed `file-position’ so that eof as a second argument moves to
the end of a file/string port.

* Added `procedure-closure-contents-eq?’, which is useful for certain
caching operations (e.g., in the implementation of lazy contracts).

Matthew

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: