Racket 6.1 Released

by Sergio De Simone on Aug 05, 2014 |

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


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

General Feedback
Marketing and all content copyright © 2006-2016 C4Media Inc. hosted at Contegix, the best ISP we've ever worked with.
Privacy policy

We notice you're using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.