# Release Announcement for v9.0

**URL:** <https://racket.discourse.group/t/release-announcement-for-v9-0/4006>\
**Category:** Internals\
**Tags:** release-management, release\
**Created:** [November 16, 2025, 2:15am UTC](https://racket.discourse.group/t/release-announcement-for-v9-0/4006 "2025-11-16T02:15:46Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![jbclements](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/jbclements/32/11_2.png) [@jbclements](https://racket.discourse.group/u/jbclements)\
**Post date:** [November 16, 2025, 2:15am UTC](https://racket.discourse.group/t/release-announcement-for-v9-0/4006/1 "2025-11-16T02:15:46Z")

</div>

```
The release bullets that I have so far are below. Please
mail me new items and/or edits.

Please phrase announcements using complete sentences and avoid the
word "now".
----------------------------------------------------------------------

```

## As of this release:

- Racket supports parallel threads.
  - Parallel threads can be created using the `#:pool` argument to thread creation.
  - Threads created with `#:keep` set to `'results` will record their results for later retrieval with `thread-wait`.
  - A larger set of primitives can be used without blocking.
  - Uninterruptible mode is enriched and constrained to work with parallel threads, with adjustments around the use of `equal?`-based hash tables and semaphores.

- The `black-box` wrapper prevents the optimizing compiler from optimizing away certain computations entirely. This can be helpful in ensuring that benchmarks are accurate.
- The `decompile-linklet` function can map linklets back to s-expressions.
- When using BC Racket, the `processor-count` function is changed to return the parallel count.
- We now distribute "natipkg" packages for AArch64, useful for package-build and package-testing infrastructure.
- Check Syntax now tracks identifiers more deeply nested in the "origin" field of syntax objects.
- There are many other repairs and documentation improvements!

## Thank you

The following people contributed to this release:

Alexander Shopov, Anthony Carrico, Bert De Ketelaere, Bogdan Popa, Cadence Ember, David Van Horn, Gustavo Massaccesi, Jade Sailor, Jakub Zalewski, Jens Axel Søgaard, jestarray, John Clements, Jordan Johnson, Matthew Flatt, Matthias Felleisen, Mike Sperber, Philip McGrath, RMOlive, Robby Findler, Ruifeng Xie, Ryan Culpepper, Sam Phillips, Sam Tobin-Hochstadt, Sebastian Rakel, shenleban tongying, Shu-Hung You, Stephen De Gabrielle, Steve Byan, and Wing Hei Chan.

In case it's useful, here's a link to the regressions issue on GitHub: [Package regressions for 9.0 · Issue #5361 · racket/racket · GitHub](https://github.com/racket/racket/issues/5361)

```
----------------------------------------------------------------------

```

---

<div class="post-metadata">

**Author:** ![samth](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/samth/32/3_2.png) [@samth](https://racket.discourse.group/u/samth)\
**Post date:** [November 18, 2025, 3:21pm UTC](https://racket.discourse.group/t/release-announcement-for-v9-0/4006/2 "2025-11-18T15:21:35Z")

</div>

I do not think using the word "blocking" is useful for describing parallel threads. There are two meanings of the word "blocking" widely used in this sort of discussion: one is what we mean for futures, where it blocks the future from making any further progress until it is `touch`ed. Nothing is "blocking" in that sense for parallel threads, that's the whole point. The other is as opposed to "non-blocking" wrt IO and similar operations, so asynchronous operations are "non-blocking" and synchronous ones like `channel-get` are blocking. But that doesn't change at all with parallel threads, and almost everything is "blocking" in that sense in Racket.

---

<div class="post-metadata">

**Author:** ![jbclements](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/jbclements/32/11_2.png) [@jbclements](https://racket.discourse.group/u/jbclements)\
**Post date:** [November 19, 2025, 7:13am UTC](https://racket.discourse.group/t/release-announcement-for-v9-0/4006/3 "2025-11-19T07:13:26Z")

</div>

I totally agree with you. Earlier today, @mflatt suggested the possibility of removing the latter two bullets and possibly linking to a blog post that goes into a little more depth on parallel threads, which I think is an amazing idea, and would also help to underline the significance of the 9.0 release.
