# Racket v8.17 is now available

**URL:** <https://racket.discourse.group/t/racket-v8-17-is-now-available/3747>\
**Category:** Announcements\
**Tags:** release\
**Created:** [May 17, 2025, 1:36pm UTC](https://racket.discourse.group/t/racket-v8-17-is-now-available/3747 "2025-05-17T13:36:19Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![spdegabrielle](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/spdegabrielle/32/95_2.png) [@spdegabrielle](https://racket.discourse.group/u/spdegabrielle)\
**Post date:** [May 17, 2025, 1:36pm UTC](https://racket.discourse.group/t/racket-v8-17-is-now-available/3747/1 "2025-05-17T13:36:19Z")

</div>

* * *

We are pleased to announce Racket v8.17 is now available from [https://download.racket-lang.org/](https://download.racket-lang.org).

## As of this release:

- The new [`drracket-core`](https://github.com/racket/drracket/commit/ae16d6bc6e00a9498313cff035537ac98ef71194) package provides a version of drracket with a smaller set of dependencies.
- Typed Racket has support for [treelists](https://docs.racket-lang.org/reference/treelist.html).
- The package manager computes [checksums](https://docs.racket-lang.org/pkg/Package_Concepts.html) for packages when required, allowing the use and automatic upgrade of packages without them.
- The [`bitwise-first-bit-set`](https://docs.racket-lang.org/reference/generic-numbers.html#%28def._%28%28quote._~23~25kernel%29._bitwise-first-bit-set%29%29) function returns the smallest bit that is set in the twos-complement representation of the given number.
- The updated [`dynamic-require`](https://docs.racket-lang.org/reference/Module_Names_and_Loading.html#%28def._%28%28quote._~23~25kernel%29._dynamic-require%29%29) 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`](https://docs.racket-lang.org/reference/exns.html#%28def._%28%28quote._~23~25kernel%29._error-module-path-~3estring-handler%29%29) parameter allows the customization of the display of module-paths in error messages.
- Precision of certain [numeric functions](https://docs.racket-lang.org/reference/generic-numbers.html) (`sin`, `cos`, and others) is improved on Windows platforms by using the MSVCRT/UCRT libraries.
- The [`string-append`](https://docs.racket-lang.org/reference/strings.html#%28def._%28%28quote._~23~25kernel%29._string-append%29%29) 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](https://docs.racket-lang.org/reference/tcp.html) 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](https://docs.racket-lang.org/tui-term/index.html) package for related example code.
- The [`#:replace-malformed-surrogate?`](https://docs.racket-lang.org/json/index.html#%28part._.Parsing_.J.S.O.N_.Text_into_.J.S-.Expressions%29) keyword can be used to specify a replacement for malformed unicode surrogates in JSON input.
- The [http-client](https://docs.racket-lang.org/http-client/index.html) module no longer sends "Content-Length: 0" for requests without a body.
- The [demodularizer](https://docs.racket-lang.org/raco/demod.html) (`compiler/demod`) can prune more unused assignments
- Several judgment rendering forms in [Redex](https://docs.racket-lang.org/redex/index.html) 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](https://docs.racket-lang.org/math/index.html) has better support for block-diagonal matrices, including both Racket and Typed Racket.
- The [math library](https://docs.racket-lang.org/math/index.html) contains improved implementations of acos and matrix-(cos-)angle.
- The [stepper](https://docs.racket-lang.org/stepper/index.html) again works for [`big-bang`](https://docs.racket-lang.org/teachpack/2htdpuniverse.html#(part._world._interactive)) programs.
- There are many other repairs and documentation improvements!

## Thank you

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.

_ **Racket** is a community developed open source project and we welcome new contributors. See [racket/README.md](https://github.com/racket/racket/blob/master/README.md#contributing) to learn how you can be a part of this amazing project._

## Feedback Welcome

Questions and discussion welcome at the Racket community on [Discourse](https://racket.discourse.group/invites/VxkBcXY7yL) or [Discord](https://discord.gg/6Zq8sH5)

## Please share

If you can - please help get the word out to users and platform specific repo packagers

```scheme
Racket - the Language-Oriented Programming Language - version 8.17 is now available from https://download.racket-lang.org
See https://blog.racket-lang.org/2025/05/racket-v8-17.html for the release announcement and highlights.

```

[![Racket Discourse](https://img.shields.io/discourse/users?label=Discuss%20on%20Racket%20Discourse&logo=racket&server=https%3A%2F%2Fracket.discourse.group)](https://racket.discourse.group/invites/VxkBcXY7yL) [![Racket Discord](https://img.shields.io/discord/571040468092321801?label=Chat%20on%20Racket%20Discord&logo=racket)](https://discord.gg/6Zq8sH5)  
[![Mastodon Follow](https://img.shields.io/mastodon/follow/110503403357821549?domain=https%3A%2F%2Ffunctional.cafe&logo=racket&label=@racketlang@functional.cafe)](https://functional.cafe/@racketlang) [![Follow Racket on Bluesky](https://img.shields.io/badge/Bluesky-0285FF?logo=bluesky&logoColor=fff&label=Racket%20on&color=0285FF)](https://bsky.app/profile/racket-lang.org)

---

<div class="post-metadata">

**Author:** ![spdegabrielle](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/spdegabrielle/32/95_2.png) [@spdegabrielle](https://racket.discourse.group/u/spdegabrielle)\
**Post date:** [May 17, 2025, 7:06pm UTC](https://racket.discourse.group/t/racket-v8-17-is-now-available/3747/2 "2025-05-17T19:06:02Z")

</div>

Don’t forget to run `raco pkg migrate 8.16` 😁
