LmCast :: Stay tuned in

Racket v9.2 is now available

Recorded: May 31, 2026, 2 a.m.

Original Summarized

Racket v9.2

Racketblog

27 May 2026

Racket v9.2

posted by Stephen De Gabrielle and John Clements

We are pleased to announce Racket v9.2 is now available from https://download.racket-lang.org/.
As of this release:

The match form checks that when non-linear patterns (patterns where the same variable is used multiple times) are used with ..., the two parts of the matched value actually are equal. Additionally, match rejects non-linear patterns where one use of the variable is used with ... and another is not. This repair could cause existing code to fail.
Typed Racket’s types for the asin and acos procedures correctly handle situations where the function produces a complex number, avoiding unsound results that were previously possible. This repair could cause existing code to fail at compile time.
The #%foreign-inline core syntactic form provides unsafe access to facilities provided at the linklet layer by a Racket implementation. This means that any code that handles all core forms by enumeration will need to be updated.
Unicode 17.0 is used for character and string operations.
This release includes internal support for a more static “ffi2” foreign interface (to be used in a future package).
The terminal-file-position function counts bytes written to ports connected to a terminal, such as stdin and stderr.
Cross-phase persistent modules allow more types of quoted data.
The implementations of member, memw, when, unless, let/ec, and cond are rewritten to use only racket/kernel syntax
The impersonator-property-predicate-procedure? function identifies procedures created by make-impersonator-property.
In Typed Racket, polymorphic struct types are printed using type arguments (e.g., (Array Byte)) rather than exposing an internal representation.
The stepper’s display of numbers better matches the language settings.
Scribble documents that do not use the Racket-manual style get an initial-scale of 1.0, instead of the manual style’s 0.8, but this can be configured using the initial-scale property.
By default, margin notes appear inline for narrow displays in all styles, not just in the Racket-manual style.
Big-bang programs distributed as .dmg files correctly handle the close-on-stop feature.
There are many other repairs and documentation improvements!
Thank you
The following people contributed to this release:
Alexander Shopov, Alexis King, Asilo, Bert De Ketelaere, Bob Burger, Bogdan Popa, Chung-chieh Shan, François-René Rideau, Gustavo Massaccesi, Ilya Klyuchnikov, Jade Sailor, Jamie Taylor, John Clements, Jonathan Simpson, LS_Hower, Matthew Flatt, Matthias Felleisen, Mike Sperber, Pavel Panchekha, Philippe Meunier, RMOlive, Robby Findler, Roman Klochkov, Sam Tobin-Hochstadt, Shu-Hung You, Stephen de Gabrielle, Tejas Sanap, Vincent Lee, and Wing Hei Chan.
Racket is a community developed open source project and we welcome new contributors. See racket/README.md to learn how you can be a part of this amazing project.
Feedback Welcome
Questions and discussion welcome at the Racket community on Discourse or Discord.
Please share
If you can - please help get the word out to users and platform specific repo packagers
Racket - the Language-Oriented Programming Language - version 9.2 is now available from https://download.racket-lang.org

See https://blog.racket-lang.org/2026/05/racket-v9-2.html for the release announcement and highlights.

prev Racket v9.1

Made with Frog, a static-blog generator written in Racket.
Source code for this blog.

Racket version 9.2 is now available and includes several significant improvements and repairs. One key change addresses the match form: it now enforces that when non-linear patterns utilizing the ellipsis are used, the two parts of the matched value must be equal, and it rejects patterns where a variable is used with the ellipsis in one instance but not another, addressing potential issues that could cause existing code to fail. Furthermore, the types for the asin and acos procedures in Typed Racket have been corrected to properly handle complex numbers, thereby avoiding unsound results that were previously possible, which might cause compile-time failures in existing code.

The release also introduced syntactic and internal mechanism updates. The #%foreign-inline core syntactic form now provides unsafe access to facilities available at the linklet layer implemented by a Racket implementation, which necessitates updates for any code that handles core forms through enumeration. Internally, the team provided support for a more static foreign interface, referred to as "ffi2," intended for future packages. In terms of module handling, cross-phase persistent modules now allow for more flexible handling of quoted data.

The implementations for several fundamental features were rewritten to exclusively use racket/kernel syntax, specifically for member, memw, when, unless, let/ec, and cond. Additionally, a new function, impersonator-property-predicate-procedure?, was added to identify procedures created via make-impersonator-property. In Typed Racket, polymorphic struct types are now printed using their type arguments, such as (Array Byte), rather than exposing internal representations. The stepper’s display of numbers has been refined to better align with language settings.

Improvements were also made to the Scribble feature, where documents not using the Racket-manual style receive an initial scale of 1.0 by default instead of the manual style's 0.8, although this setting remains configurable via the initial-scale property. Margin notes default to appearing inline for narrow displays across all styles, not just the Racket-manual style. Finally, big-bang programs distributed as .dmg files now correctly handle the close-on-stop feature. These changes, along with numerous other repairs and documentation improvements, reflect a substantial update to the language.

This release was contributed to by a wide group of developers, including Alexander Shopov, Alexis King, Asilo, Bert De Ketelaere, Bob Burger, Bogdan Popa, Chung-chieh Shan, François-René Rideau, Gustavo Massaccesi, Ilya Klyuchnikov, Jade Sailor, Jamie Taylor, John Clements, Jonathan Simpson, LS_Hower, Matthew Flatt, Matthias Felleisen, Mike Sperber, Pavel Panchekha, Philippe Meunier, RMOlive, Robby Findler, Roman Klochkov, Sam Tobin-Hochstadt, Shu-Hung You, Stephen de Gabrielle, Tejas Sanap, Vincent Lee, and Wing Hei Chan.