[racket-dev] Release Announcement for v5.2

From: Eli Barzilay (eli at barzilay.org)
Date: Wed Nov 2 11:06:41 EDT 2011

The release announcement sketch is finally ready, apologies for the
delay.  It should be close to being a final version, and I'll probably
proceed with the release tonight -- so if there are any issues with
it, please reply soon.
Racket version 5.2 is now available from


Release highlights:

* A new XREPL collection provides convenient commands for uses of
  plain racket.  It is particularly convenient for people who prefer
  console-based work and alternative editors.  See also the new
  chapter on command-line tools and other editors at the end of the
  Racket Guide.

* The new db library offers a high-level, functional interface to
  popular relational database systems, including PostgreSQL, MySQL,
  and SQLite, as well as other systems via ODBC.

* The `plot' collection has been completely re-implemented in
  Racket, and offers more functionality.  Some old code that uses
  `plot' will continue working, and some will need to use the
  `plot/compat' library.

* DrRacket uses more conventional key bindings: `C-t' creates a new
  tab, `C-w' closes the current one, and `C-r' runs the definitions.
  On Mac OS X, the Command key is used.  See "Defining Custom
  Shortcuts" in the DrRacket manual for an example that uses the old
  key bindings.

* The new `raco link' command registers a directory as a collection,
  which allows the collection directory to reside outside the
  "collects" tree and without changing the PLTCOLLECTS environment

* Support for `begin-for-syntax' has been generalized; modules may
  now define and export both value bindings and syntax bindings
  (macros) at phase 1 and higher.

* Typed Racket:
  - Typed Racket provides static performance debugging support to
    show which code gets optimized and point out code that does not.
    Use the "Performance Report" button.
  - More intuitive types in printouts in the REPL and in error
    messages.  Use `:query-result-type' to explore types, or
    `:print-type' for a full printout.
  - Function definitions with optional arguments now work.

* Redex now supports specifying (and testing and automatically
  typesetting) judgment forms including type systems and SOS-style
  operational semantics.

* Fixed several GUI problems.

* Internal-definition expansion has changed to use `let*' semantics
  for sequences that contain no back references.  This change
  removes a performance penalty for using internal definitions
  instead of `let' in common cases, and it only changes the meaning
  of programs that capture continuations in internal definitions.
  Internal definitions are now considered preferable in style to

Additional items:

* DrRacket comes with an experimental, on-line check syntax
  function.  By default, it is turned off.  To turn it on, right
  click on the red circle in the buttom right corner of the DrRacket
  window.  Warning: turning this on makes DrRacket less stable.

* The `racket/gui' library (and Slideshow) provides more support for
  multiple-screen displays.

* DrRacket remembers whether an opened file used LF or CRLF line
  endings, and will continue using the same.  When creating a new
  file, a preference determines how it is saved.

* `net/url' can now follow HTTP redirections.

* The LNCS and JFP class files are no longer distributed with
  Racket.  Instead, they are downloaded on demand.

* The Algol language implementation is now available as other
  languages, use `#lang algol60' for Algol code.

* The Racket-to-C compiler (as accessed via `raco ctool' or `mzc')
  has been removed; Racket's JIT has long provided better
  performance, and the FFI provides better access to C libraries.

* Contracts can be applied to exports with the new `contract-out'
  form within `provide', instead of a separate `provide/contract'
  form.  (The new `contract-out' form is implemented as a new kind
  of "provide pre-transformer".)

* The `date*' structure type is an extension of `date' with
  `nanosecond' and `time-zone-name' fields.

* New looping constructs: `for/sum' and `for/product'.

* Direct calls to keyword-accepting functions are now optimized to
  eliminate the overhead of keywords.  In addition, the compiler
  detects and logs warnings for keyword-argument mismatches.

* The `typed-scheme' collection was renamed to `typed-racket'.

* The libfit interface is available from `plot/deprecated/fit', and
  will be removed in the near future.

* The Unix installer has been re-done, and it is now more robust.

* The built-in reader and printer support for Honu is removed.
  (This functionality is re-implemented Racket.)

Feedback Welcome,
          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                    http://barzilay.org/                   Maze is Life!

Posted on the dev mailing list.