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

From: Eli Barzilay (eli at barzilay.org)
Date: Fri Jul 30 05:27:49 EDT 2010

This is the final list, please see if you have any more changes --
specifically, the order is pretty much random.

* Changes (as part of 5.0) in the `racket' language compared to the
  `scheme' language include 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, and a
  reorganization of `scheme/foreign' into `ffi/unsafe' and
  associated libraries.

* 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, and `ffi/unsafe' provides an asychronous-call mechanism
  to deal with foreign threads.

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

* A new "." modifier for format string directives (e.g., "~.s" and
  "~.a") limits the respective output to (error-print-width)
  characters.  New printout functions: `eprintf' and `displayln'.

* 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.

* Typed Racket now provides a type-based optimizer that is activated
  when the code starts with `#:optimize'.  It can improve the
  performance of many operations such as list, vector and struct
  accesses and is especially useful for floating-point intensive
  programs (which can get faster by a factor of 3).  This feature is
  still being developed, and it will become the default behavior in
  the near future.

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

* Racklog: Prolog-style logic programming in Racket, adapted from
  Dorai Sitaram's Schelog package, is also included, available as a
  `#lang racklog' too.

* `openssl/sha1' provides a SHA1 hash function.

* `web-server/formlets' 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.

* A GUI test runner has been added to RackUnit under `rackunit/gui'.

* `generator' from `racket/generator' is required to have this form:
  (generator () body ...), due to a planned extension where a
  generator will accept arguments.

* 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.