BT

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

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

Discuss

Educational Content

General Feedback
Bugs
Advertising
Editorial
InfoQ.com and all content copyright © 2006-2014 C4Media Inc. InfoQ.com hosted at Contegix, the best ISP we've ever worked with.
Privacy policy
BT