Racket v8.4 Released

Racket version 8.4 is now available from https://download.racket-lang.org

  • Command-line Racket provides a new expression editor by default for its read-eval-print loop (REPL). The new REPL is based on the Chez Scheme expression editor, but extended to use the same language-sensitive syntax coloring and indentation tools as DrRacket.

  • Typed Racket adds a kind system, preventing programmers from writing nonsensical type expressions. It checks whether type constructors are correctly applied to arguments, and separates type constructors from polymorphic types. The :kind form enables checking the kind of a type expression at the REPL. The new system also correctly rejects some ill-formed recursive types.

  • Racket has a file-or-directory-stat for unified information about file-system objects.

  • DrRacket shows the region affected by an #; S-expression comment by fading the commented-out region.

  • Racket on Chez has faster multiplication and division for some numbers.

  • Web server: The files dispatcher supports all standard caching-related HTTP response headers (e.g., Cache-Control).

  • Web server: A new dispatcher captures the common pattern of processing HTTP requests and responses in a layered fashion.

  • The Web Server supports use of the Cache-Control header, and includes a new wrapping dispatcher.

  • Expander: add "portal" syntax to support new forms of syntax object binding.

  • Documentation search is improved.

  • Some hash operations support an optional try-order? argument.

  • The plot-metrics interface has documentation.

  • Fonts support OpenType feature settings.

  • The Gui library has improved support for Wayland.

  • The computation of quadratic roots is further improved.

  • The set/c contract adds support for random generation.

  • DrRacket's interactions window supports #lang-specific coloring
    and indentation.

  • DrRacket's parenthesis-based keyboard shortcuts change based on the parentheses that each different #lang uses.

  • The release includes many other bug repairs and other improvements!

Transition/Update notes:

  • To turn off expeditor and make Racket's REPL go back to the old
    editline/readline-based editor, use the command

    ,input readline

    and then restart Racket. Get back to the new expression editor with

    ,input expeditor

    To toggle color mode for the new expression editor, use one of the following, which does not require restarting Racket:

    ,color #false
    ,color #true

  • Support for comment fading in DrRacket requires an increment to the "WXME" format version so files with non-text content written by DrRacket v8.4 will open only in v8.4 and later. This does not affect files that consist only of unicode text.

  • The addition of the kind system to Typed Racket means that certain mild abuses of the type system no longer type check, most notably the 'application' of a polymorphic type.

The following people contributed to this release:

Alex Harsányi, Alex Knauth, Alexander Shopov, Alexis King, Andrew Mauer-Oats, Andy Keep, Ayman Osman, Ben Greenman, Bob Burger, Bogdan Popa, Cameron Moy, D. Ben Knoble, Fred Fu, Greg Hendershott, Gustavo Massaccesi, Jamie Taylor, Jarhmander, Jesse Alama, Joel Dueck, John Clements, Jordan Johnson, Laurent Orseau, Leif Andersen, Marc Burns, Matthew Flatt, Matthias Felleisen, Mike Engelhart, Mike Sperber, Noah Ma, Oscar Waddell, Pavel Panchekha, Philip McGrath, rgkirch, Robby Findler, Sam Tobin-Hochstadt, Sergiu Ivanov, Sorawee Porncharoenwase, Stefan Schwarzer, Stephen De Gabrielle, Tony Garnock-Jones, Viko Riféo, and Zachary Mao

Link to package regressions issue for the 8.4 release:
Release regressions for 8.4 · Issue #4125 · racket/racket · GitHub

Feedback Welcome


Thank you everyone for all your hard work!