The release announcement draft that I have so far is below. Please mail me new items and/or edits. ----------------------------------------------------------------------
Racket v6.1 raises an exception when a local variable is used before its definition, instead of producing an #<undefined> value. (Thanks to Claire Alvis.) Since programs are rarely intended to produce #<undefined>, raising an exception provides earlier and better feedback to programmer. Module-level variables have always triggered an exception when used too early, and this change makes local bindings --- including fields within a class --- behave the same. This is a backward-incompatible change to Racket. Aside from exposing a few bugs, the change mainly affects programs that include (define undefined (letrec ([x x]) x)) to obtain the #<undefined> value. There is now no #<undefined> value in the old sense, but the `racket/undefined` library (which was introduced in the previous release) provides `undefined` for use in place of the pattern above when an "undefined" value is still needed. ---- * Plumbers generalize the flush-on-exit capability of primitive output ports to enable arbitrary flushing actions and to give programmers control over the timing of flushes (i.e., a composable `atexit`). New functions include `current-plumber`, `plumber-add-flush!`, and `plumber-flush-all`. * contracts: the contract system's random testing facility has been strengthened so that it can easily find simple mistakes in contracted data structure implementations (e.g. an accidental reverse of a conditional in a heap invariant check). * redex: the semantics of mis-match patterns (variables followed by _!_) inside ellipses has changed in a backwards incompatible way; they semantics is now much clearer and now potentially even useful. This change simplifies the patterns' semantics and increases the usefulness of these patterns. * check-random is an addition to the preferred unit testing framework in the teaching languages. It enables the testing of students' functions that use random-number generation. (Thanks to David Van Horn (UMaryland) for proposing this idea.) * Upgraded and normalized versions of graphics libraries and dependencies (Pango, Cairo, GLib, etc.) that are bundled with Racket on Windows and Mac OS X. For example, FreeType support is consistently enabled. * The Typed Racket standard library includes contracted exports from the Racket standard library, such as racket/format's formatting combinators. * Typed Racket now supports asynchronous channels using the `typed/racket/async-channel' library. * The openssl library supports forward secrecy via DHE and ECDHE cipher suites (thanks to Edward Lee) and Server Name Indication (thanks to Jay Kominek). ---------------------------------------------------------------------- _________________________ Racket Developers list: http://lists.racket-lang.org/dev