[racket-dev] Release Announcement for v5.0.1 -- final version

From: Eli Barzilay (eli at barzilay.org)
Date: Sun Aug 1 18:18:22 EDT 2010

Final version, after some edits and reorganization.

* Datalog is a lightweight deductive database system with Racket
  integration.  It is now available in the `datalog' collection and
  with `#lang datalog'.

* Racklog provides Prolog-style logic programming in Racket, adapted
  from Dorai Sitaram's Schelog package.  It is available in the
  `racklog' collection and now as `#lang racklog'.

* By default `make install' and `raco setup' compile collections in
  parallel on all available processors.  (Use `raco setup -j 1' to
  disable, if necessary.)

* Changes (as part of 5.0) in the `racket' language compared to the
  `scheme' language: constructor-style printing, a `struct'
  alternative to `define-struct' that fits more naturally with
  `match' and constructor-style printing, bytecode-dependency
  management via SHA-1 hashes instead of just timestamps (where the
  `openssl/sha1' library provides the SHA-1 hash function), a
  reorganization of `scheme/foreign' into `ffi/unsafe' and
  associated libraries, and new printing functions `eprintf' and
  `displayln'.  Also, a generator from `racket/generator' is
  required to have the form `(generator () body ...)', which
  supports a planned extension to let a generator accept arguments.

* Changes to the `racket' language (since 5.0): internal-definition
  positions allow mixing expressions with definitions, full
  continuations can escape past a continuation barrier, custodians
  can attempt to terminate subprocesses and subprocess groups (see
  `current-subprocess-custodian-mode', `subprocess-group-enabled'),
  the JIT supports additional unboxing flonum operations and unsafe
  variants, `ffi/unsafe' provides an asychronous-call mechanism to
  deal with foreign threads, a new "." modifier for format string
  directives (e.g., "~.s" and "~.a") limits the respective output to
  `(error-print-width)' characters.

* The core type system of Typed Racket has been substantially
  revised.  In particular, Typed Racket can now follow significantly
  more sophisticated reasoning about the relationships between
  predicates.  Additionally, Typed Racket now allows variable arity
  types in more places, allowing programmers to specify
  variable-arity lists.

* We are working on an optimizing version of Typed Racket that takes
  advantage of type information for certain classes of programs.
  This project is a work in progress.  For those interested, see the
  documentation for `#:optimized'.

* The `web-server/formlets' library adds a `formlet*' form that
  allows dynamic formlet construction, as opposed to `formlet' which
  requires syntactic Xexprs and static formlets.  Several new
  library formlets are added.

* The `syntax/parse' library has new support for matching literals
  at different phases using the `#:phase' argument for literals and
  literal sets.

* RackUnit now includes a GUI test runner as `rackunit/gui'.

* The Advanced Student Language now supports hash-table primitives,
  `define-datatype' for defining sets of related structs, and
  `match' for pattern matching.

* The `2htdp/image' library now includes `flip-vertical' and
  `flip-horizontal' operations that mirror images (vertically and
          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                    http://barzilay.org/                   Maze is Life!

Posted on the dev mailing list.