BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News Racket 6.1 Released

Racket 6.1 Released

Leia em Português

This item in japanese

PLT Design has released version 6.1 of Racket, its general purpose, multi-paradigm programming language belonging to the Lisp/Scheme family. Racket 6.1 introduces a new way of handling local recursive variable definitions and several other language features.

The major innovation added to Racket v6.1, says Ryan Culpepper on racket-lang.org, is the way local recursive variable definitions are handled. Previously to 6.1, variables were initialized with an #undefined value. Now, variables are not initialized anymore and Racket raises an exception when trying to access a variable before its definition. This change aims at providing early and improved feedback to developers about improper use of variables and should not alter a program's semantics, since programs are rarely intended to produce #undefined, says Ryan. In addition to that, the new behavior is consistent with the existing convention about module-level variables, which already used to raise an exception when used before definition.

The new local variable definition behavior is not backward-compatible and will break any program incorrectly accessing undefined variables as well as programs that include

(define undefined (letrec ([x x]) x))


as a pattern to obtain the #undefined value. The correct way to obtain an #undefined value is now through racket/undefined.

Other changes introduced with the new Racket version are the following:

  • Plumbers provide programmers with more control over the timing of flushes and enable arbitrary flushing actions through a new set of functions, such as current-plumber, plumber-add-flush!, and plumber-flush-all.
  • Contracts can now easily find simple mistakes in contracted data structure implementations (e.g. an accidental reverse of a conditional in a heap invariant check).
  • Graphics libraries and their dependencies (Pango, Cairo, GLib, etc.) have been upgraded on Windows and Mac OS X.
  • The openssl library supports forward secrecy via DHE and ECDHE cipher suites and Server Name Indication.
  • The mzlib/class100 library has been replaced by racket/class.

Racket (formerly named PLT Scheme) is a free general purpose, multi-paradigm programming language in the Lisp/Scheme family released under the LGPL license. One of its design goals is to serve as a platform for language creation, design, and implementation. The language is used in a variety of contexts such as scripting, general-purpose programming, computer science education, and research.

Rate this Article

Adoption
Style

BT