# Racket v8.17 — Racket v8.17 - Product: Racket (https://whatsnew.fyi/product/racket) - Vendor: Racket - Date: 2025-05-17 - Version: v8.17 - Original notes: https://github.com/racket/racket/releases/tag/v8.17 - Permalink: https://whatsnew.fyi/product/racket/releases/v8.17 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — The new `drracket-core` package provides a version of drracket with a smaller set of dependencies - **added** — Typed Racket has support for treelists - **added** — The `bitwise-first-bit-set` function returns the smallest bit that is set in the twos-complement representation of the given number - **added** — The `error-module-path->string-handler` parameter allows customization of the display of module-paths in error messages - **added** — Racket code using a terminal in Windows can receive mouse events as virtual terminal characters after using SetConsoleMode - **added** — The `#:replace-malformed-surrogate?` keyword can be used to specify a replacement for malformed unicode surrogates in JSON input - **changed** — The package manager computes checksums for packages when required, allowing the use and automatic upgrade of packages without them - **changed** — The `dynamic-require` function allows a syntax-thunk (or 'eval) to be used for syntax bindings - **changed** — Precision of certain numeric functions (`sin`, `cos`, and others) is improved on Windows platforms by using the MSVCRT/UCRT libraries - **changed** — The `string-append` function has improved performance and reduced memory use for long lists of strings in the Racket CS implementation - **changed** — TCP ports use `SO_KEEPALIVE`, instructing the kernel to send periodic messages while waiting for data to check whether the connection is still responsive - **changed** — The http-client module no longer sends "Content-Length: 0" for requests without a body - **changed** — The demodularizer (`compiler/demod`) can prune more unused assignments - **changed** — Several judgment rendering forms in Redex are replaced by functions, allowing more convenient abstraction - **changed** — When a distribution includes no teaching languages, DrRacket's language-dialog configuration moves into the preferences dialog and the "Language" menu disappears - **changed** — The math library has better support for block-diagonal matrices, including both Racket and Typed Racket - **changed** — The math library contains improved implementations of acos and matrix-(cos-)angle - **fixed** — The stepper again works for `big-bang` programs ---------------------------------------------------------------------- - The new `drracket-core` package provides a version of drracket with a smaller set of dependencies. - Typed Racket has support for treelists. - The package manager computes checksums for packages when required, allowing the use and automatic upgrade of packages without them. - The `bitwise-first-bit-set` function returns the smallest bit that is set in the twos-complement representation of the given number. - The updated `dynamic-require` function makes it easier to use syntax bindings by allowing a syntax-thunk (or 'eval) to be used for them. - The `error-module-path->string-handler` parameter allows the customization of the display of module-paths in error messages. - Precision of certain numeric functions (`sin`, `cos`, and others) is improved on Windows platforms by using the MSVCRT/UCRT libraries. - The `string-append` function has improved performance and reduced memory use for long lists of strings in the Racket CS implementation. Differences are clearly noticeable for lists of length 1 million. - TCP ports use `SO_KEEPALIVE`, instructing the kernel to send periodic messages while waiting for data to check whether the connection is still responsive. - Racket code using a terminal in Windows can receive mouse events as virtual terminal characters after using SetConsoleMode. (This is also already possible on macOS and Linux.) See the tui-term package for related example code. - The `#:replace-malformed-surrogate?` keyword can be used to specify a replacement for malformed unicode surrogates in JSON input - The http-client module no longer sends "Content-Length: 0" for requests without a body. - The demodularizer (`compiler/demod`) can prune more unused assignments. - Several judgment rendering forms in Redex are replaced by functions, allowing more convenient abstraction. - When a distribution includes no teaching languages, DrRacket’s language-dialog configuration moves into the preferences dialog and the “Language” menu disappears. - The math library has better support for block-diagonal matrices, including both Racket and Typed Racket. - The math library contains improved implementations of acos and matrix-(cos-)angle. - The stepper again works for `big-bang` programs. - There are many other repairs and documentation imprevements! The following people contributed to this release: Alexander Shopov, Andrei Dorian Duma, Bert De Ketelaere, Bob Burger, Bogdan Popa, Bogdana Vereha, Cameron Moy, Chung-chieh Shan, Cutie Deng, D. Ben Knoble, Dario Hamidi, Dominik Pantůček, Gustavo Massaccesi, halfminami, Jacqueline Firth, Jason Hemann, Jens Axel Søgaard, Joel Dueck, John Clements, Jordan Harman, Marc Nieper-Wißkirchen, Matthew Flatt, Matthias Felleisen, Mike Sperber, Noah Ma, owaddell-ib, Philippe Meunier, Robby Findler, Ryan Culpepper, Ryan Ficklin, Sam Phillips, Sam Tobin-Hochstadt, Shu-Hung You, sogaiu, Sorawee Porncharoenwase, Stephen De Gabrielle, Vincent Lee, and Wing Hei Chan. ----------------------------------------------------------------------