March 2009
----------
Updated by JM to PLT 4.1.5 and PLaneT distribution
PLAI-4.1.3 (6 December 2008)
----------------------------
+ The GC languages are now compatible with PLT Scheme 4.1.3.
+ plai/mutator supports halt-on-errors and print-only-errors.
+ Defining a global as an alias for a primitive now works correctly.
Previously, a mutator containing a definition such as (define car first) would
signal a contract violation.
+ A mutator with just allocator-setup and no expression no longer signals a
syntax error.
+ When installed for --all-users, scribble docs should be in the plai
directory and not the manual directory.
+ Allocations made in init-allocator are now displayed in the heap
visualization.
+ Error reporting for type-case and define-type has improved.
+ Importing was not broken in the previous release. Documentation clarified
with an example.
+ Documentation for gc:set-first! and gc:set-rest! was missing; it's now
present.
PLAI-4.1.1 (28 October 2008)
----------------------------
+ plai/gc-test.ss and plai/plai-test.ss removed. They are part of the
173tourney (test-fest) distribution.
+ Fixed a bug in the GC Mutator languages that manifested itself as missing
roots in (get-root-set). For example, in the previous release, the following program does not signal an error:
(allocator-setup "mark-and-sweep.ss" 3) ; assume that 5 occupies 3 locations
(5 (lambda (x) x))
Known Issues:
+ A mutator with just an allocator-setup line and no other expressions signals
an error.
+ import-gc does not work in all contexts.
PLAI-4.1 (August 2008)
----------------------
+ plai/gc-test is analogous to plai/plai-test, but for the GC languages.
+ The 'alternate-collector' parameter in plai/private/command-line may be set
to override the collector specified in 'allocator-setup' in Mutator Scheme.
Note that this parameter is examined during macro expansion. Set it using
'begin-for-syntax' before requiring the mutator.
+ The '--plai-gc-no-custom-imports' commmand line argument has been removed.
The 'gc-disable-import-gc?' parameter in plai/private/command-line may be used
to achieve the same effect for 'import-gc' but not 'import-primitive'.
+ The 'error' function in the PLAI language now has the same signature as
'error' in scheme/base.
+ In Mutator Scheme, define works in the interactions pane.
+ Mutator Scheme no longer provides letrec, named let and letrec-values. These
expressions were broken in earlier versions of PLAI.
+ Mutator Scheme includes 'begin'.
+ In Mutator Scheme, primitive expression that expand to use quote are
properly annotated. (Bug introduced in PLAI-4.)
+ In Mutator Scheme, else-branches are available for cond and case. (Bug
introduced in PLAI-4.)
+ The 'Stop' button in plai/web works better.
+ test/exn, test and other testing macros produce more helpful errors when
reporting on exceptions. When either fails because an exception is raised
that is not explicitly signalled by the user, they both print
(exception )
where is the message of the exception that was signalled.
For example,
(test (/ 1 0) "system exception")
> (exception (/ 1 0) "/: division by zero" "at line 1")
+ When test fails because *any* exception is raised, it prints (exception ...)
as above.
+ When test/exn fails because an exception with a mismatched error message is
signalled, it prints (bad ...) as in previous versions of PLAI.
+ plai/plai-test.ss is a script for running solutions against an external
test file.
+ plai/private/command-line defines various parameters that affect PLAI
(largely tests). Some of these parameters aren't available without requiring
this module.
PLAI-4 (July 2008)
------------------
+ PLAI software has been updated for PLT Scheme 4.0.
+ The PLAI Restricted / PLAI Pretty Big distinction has been removed. There is
now a single PLAI Scheme language, which extends `#lang scheme' with
`define-type', `type-case' and the testing procedures.
+ PLAI languages are also available as module languages. Use `#lang plai',
`#lang plai/collector' and `#lang plai/mutator'.
+ PLAI exceptions are subtypes of exn:fail instead of exn.
+ In the GC Mutator language, when expressions are evaluated in the REPL, the
value is printed in addition to the address of the value.
+ In the GC Mutator language, circular data structures print correctly in the
REPL.
+ The GC Mutator language includes support for testing. See `test/value=?'
and `test/location=?'.
+ The testing framework no longer provides the print-tests parameter. See
`halt-on-errors' and `print-only-errors' instead. The arguments
`--plai-halt-on-errors' and `--plai-print-only-errors' may be specified
on the command line as well.
+ The testing framework no longer provides procedural (*/proc) testing forms.
+ The GC Mutator language dynamically loads MrEd when it's available. Hence,
it may be executed on the command-line.
+ In the GC Mutator language, if the heap size specified exceeds 200 locations,
the heap visualization is not displayed.
+ The heap-offset notion has been removed from the GC languages. Heaps now
begin at address 0 only. `allocator-setup' has been affected and
`heap-offset' has been removed.
+ Testing forms print the supplied expressions, instead of their values. For
example, (test (+ 2 3) 5) prints (good (+ 2 3) 5) instead of (good 5 5).
+ GC Mutator allows arbitrary procedures to be imported from the collector
and from #lang scheme. See `import-gc' and `import-primitives'. These
forms may be disabled on the command line with the switch
`--plai-gc-no-custom-imports'.
+ A 'web application' language level has been added to ease experiments with
the PLT Web Server.
PLAI-v371/372 (January 2008)
----------------------------
+ Fixed `type-case' to report the correct error location when an element of a
field list is not an identifier.
(type-case WAE expr
[num (10) 5]
...) => expected an identifier at 10
+ `define-type' gives a more helpful error messages if it isn't given any
arguments.
+ PLAI Pretty Big Scheme is now derived from plt-pretty-big-text. This allows
you to run the language in MzScheme.
+ The testing framework defines the parameter `plai-ignore-exn-strings.' When
set to true, exception strings passed to test/exn, test/regexp, etc. are
treated as the empty string. The default value of this parameter is false.
+ The testing framework defines the variable `plai-all-test-results.' This
variable is a list of test results (i.e. (good ...), (bad ...),
(exception ...)).
+ cons? and empty? signal an error if they are not provided with a `list?'
+ cons requires its second argument to be a list.
+ PLAI Restricted Scheme now provides `when' and `unless'.
+ Modules (i.e. files) written in PLAI Pretty Big and PLAI Restricted now
automatically (provide (all-defined)).
+ plai-ignore-exn-strings and plai-all-test-results; see doc.txt for details.
+ The collector-lang now provides all-from (lib "list.ss") and (lib "etc.ss").