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").