Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Racket 6.3 Brings New Macro Expander, Redex Improvements, and More

Racket 6.3 Brings New Macro Expander, Redex Improvements, and More

This item in japanese

PLT Design has announced Racket 6.3, the newest version of its multi-paradigm programming language belonging to the Lisp/Scheme family. Racket 6.3 introduces a new macro expander, an improved Redex DSL, and support for GTK3 among other things.

Macros are among the most defining features of Lisp-based languages. Racket 6.3 introduces a new representation model for bindings called “set of scopes”, which replaces the previous hygienic macro expansion. According to PLT researcher Matthew Flatt, the new macro expander is easier to use than the old one, provides better diagnostics when the bindings fail, has a simpler implementation, and therefore is less prone to bugs. On the downside, the new macro system is not fully compatible with old Racket macros.

Racket 6.3 has also improved syntax error checking for Redex patterns. Redex is a domain-specific language aimed to specify and debug operational semantics which can be used for formally model languages.

Other new features in Racket 6.3 are:

  • GUI support for GTK+3, which is automatically used when available and not overridden through PLT_GTK2.
  • Submodule support in Typed Racket, which is made possible by the new macro expander that has removed altogether the cause for some errors that plagued the use of submodules previously.
  • New typed/racket/unsafe forms make it possible to circumvent contract generation, which will improve performance at the expense of safety and debuggability.
  • racket/unit provides experimental support for units in Typed Racket.

Racket is 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