[racket-dev] Release Announcement for v5.0.1

From: Eli Barzilay (eli at barzilay.org)
Date: Tue Jul 27 23:17:59 EDT 2010

The release announcement sketch that I have so far is below.  Please
send edits or (changes in order) if you see anything.

Still needed:

    * Any public (and documented) syntax/parse & macro debugger
    * macro-debugger/emit?
    * GUI for rackunit?

Racket version 5.0.1 is now available from


* 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/foriegn' 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 `reaco 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 is 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 `generator' from `racket/generator' is requires 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.