[フレーム]
BT

InfoQ Software Architects' Newsletter

A monthly overview of things you need to know as an architect or aspiring architect.

View an example

We protect your privacy.

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Unlock the full InfoQ experience

Unlock the full InfoQ experience by logging in! Stay updated with your favorite authors and topics, engage with content, and download exclusive resources.

Log In
or

Don't have an InfoQ account?

Register
  • Stay updated on topics and peers that matter to youReceive instant alerts on the latest insights and trends.
  • Quickly access free resources for continuous learningMinibooks, videos with transcripts, and training materials.
  • Save articles and read at anytimeBookmark articles to read whenever youre ready.

Topics

Choose your language

InfoQ Homepage News Racket 6.1 Released

Racket 6.1 Released

Leia em PortuguÃas

This item in japanese

Aug 05, 2014 1 min read

Write for InfoQ

Feed your curiosity. Help 550k+ global
senior developers
each month stay ahead.
Get in touch

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

Related Content

The InfoQ Newsletter

A round-up of last week’s content on InfoQ sent out every Tuesday. Join a community of over 250,000 senior developers. View an example

We protect your privacy.

BT

AltStyle によって変換されたページ (->オリジナル) /