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/. 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. 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. |
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. |