Racket v6.3

posted by Ryan Culpepper

Racket version 6.3 is now available from http://racket-lang.org/

Racket’s macro expander uses a new representation of binding called “set of scopes”. The new binding model provides a simpler explanation of how macros preserve binding, especially across module boundaries and in hygiene-bending expansions. The new expander is mostly compatible with existing Racket macros, but there are some incompatibilities. For the formally inclined, a research paper on this macro system will appear at POPL next year: http://www.cs.utah.edu/plt/scope-sets/

Racket’s GUI library now uses Gtk+ 3 when available, instead of Gtk+ 2. Set the PLT_GTK2 environment variable to select Gtk+ 2.

Added a new Redex tutorial based on a week-long workshop in SLC.

Better syntax error checking for Redex patterns that do not use holes correctly.

The blueboxes are more agressive about finding names to look up in the docs, meaning they are useful much more often.

Submodules are now fully supported in Typed Racket. Previously, some uses of submodules would produce internal errors, making it hard to module+ test and module+ main effectively in Typed Racket. The switch to the set-of-scopes expander fixed these problems, and submodules are now happily at home in Typed Racket.

The typed/racket/unsafe library provides import and export forms that circumvent contract generation. This improves performance for typed-untyped interaction at the cost of safety and debuggability.

Typed Racket provides experimental support for units (from racket/unit ).

The experimental define-new-subtype form allows overlaying finer distinctions between otherwise identical types, similar to Haskell’s new type .

The Promise type constructor changes in a backwards-incompatible way to exclude promises created with promise/name .

The unstable-* packages are out of the main distribution. Most of their contents have been either merged with established Racket libraries or spun off as their own packages. This change is backwards compatible for packages that properly list their dependencies. Full details

edu: big-bang supports a display-mode clause so that world programs can take over the entire screen.

Feedback welcome

How to run the installer silently when we would like to distribute this to teachers with SCCM 2012.

— Ari Toivola, 25 November 2015

I believe you broke the 2htdp/planetcute libraries with this release.

At least, I get an error just like this page now shows: http://docs.racket-lang.org/teachpack/2htdpPlanet_Cute_Images.html

(require 2htdp/planetcute)

in the REPL:

character-cat-girl g1: unbound identifier; also, no #%top syntax transformer is bound in: g1

— lalamine, 5 December 2015

Ari: To run the Windows installer silently, supply the /S command-line argument

— Matthew Flatt, 9 December 2015

lalamine: Thanks for the report! I cam able to replicate the problem with planetcute in v6.3. It looks like the problem happens only in interactive modes like the REPL and docs, and not when used within a module.

The problem seems to be fixed in our development snapshots. Unfortunately, I don’t know how it got broken or fixed, so we’ll have to investigate more to ensure that the bug stays fixed.

— Matthew Flatt, 9 December 2015

I see this bug; glad it’s getting fixed. My daughter has made an awesome maze runner game with the planetcute images, so she was distressed about the broken compile. :)

— Peter, 10 December 2015

It will force the use of dedicated AMD graphics of a 15-inch MacBook Pro but the previous version does not require it, it is consuming more battery than before.

— 霏芃宋, 5 January 2016

Regarding AMD graphics: The only change in graphics visible from that changelog is about the underlying graphical library Gtk. Can you check if setting PLT_GTK2=y before starting DrRacket makes a difference?

— Paolo Giarrusso, 21 January 2016

Do you have a portable distribution for Windows anywhere? I used to use zipped binary snapshots for this purpose but they don’t seem to be available any longer, only *.exe versions.

— Kevin Havener, 2 February 2016