Racket 6.1 Released

| by Sergio De Simone Follow 17 Followers on Aug 05, 2014. Estimated reading time: 1 minute |

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, 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 Stage

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread
Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread


Login to InfoQ to interact with what matters most to you.

Recover your password...


Follow your favorite topics and editors

Quick overview of most important highlights in the industry and on the site.


More signal, less noise

Build your own feed by choosing topics you want to read about and editors you want to hear from.


Stay up-to-date

Set up your notifications and don't miss out on content that matters to you