[racket-dev] Release Announcement for v5.2, second call

From: Eli Barzilay (eli at barzilay.org)
Date: Wed Nov 2 17:24:09 EDT 2011

All edits are in this version.

Release highlights:

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

* A new XREPL collection provides convenient commands for a plain
  racket REPL.  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 `plot' collection has been reimplemented in Racket.  It now
  offers PDF output, log axes, histograms, and more.  Some code that
  uses `plot' will still work, and some will need light porting.
  The `plot/compat' module offers expedient backward compatibility.

* 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 in DrRacket.
  - 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.
  - Typed Racket now supports defining function with optional
    arguments using the same syntax as Racket.

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

* Fixed several GUI problems, including problems on Ubuntu 11.10
  (GTK+ 3) and 64-bit Mac OS X.

* 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 a plain
  language using `#lang algol60'.

* 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 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 in Racket.)
          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                    http://barzilay.org/                   Maze is Life!

Posted on the dev mailing list.