Racket v8.9 Release Thread

The release process for v8.9 will begin in about a week.  If you
have any new features that you want in and are relatively close to
to being done, now is a good time to do that.

Upcoming dates:
- 7th:  Branch day, merge window starts
- 15th: Merge window ends, testing starts
- 22nd: Testing ends

Apologies for the lengthy delay; there were some issues with the Racket Windows Signing certificates, but it appears these may have been resolved. See adjusted dates below.

The release process for v8.9 has begun: release checkpoints have
been created for all packages in the main distribution, and release
branches have been created when necessary. You can go on using
`master` branches as usual. The main Racket repo's is now bumped to
v8.9.0.1 (to avoid having two different trees with the same version).

If you have any bug-fixes and changes (including history updates)
that need to go in the release then make sure to specify that in the
commit message by using the word `merge` or `release` or mail the
relevant repo manager [1]) the commit SHA1s. Do not push commits
directly to `release` branches.

Please make sure that code that you're responsible for is as stable
as possible, and let me know if there is any new work that should
not be included in this release.


The time between now and the end of the merge window is for fixing
new errors that prevent proper functioning of major components and
that show up during the preparation for a release. You can also
finalize piece of work that is not yet complete, but please avoid
merging new features.

Note that nightly builds will go on as usual (starting from
v8.9.0.1 and going up as usual), and pre-release builds will be
available shortly at


[1] https://github.com/racket/racket/wiki/release-repo-managers

Upcoming dates:
- 19th: Merge window ends, testing starts
- 25th: Testing ends
1 Like
Testing for the v8.9 release
  (using the v8.8.900 release candidate build)

Search for your name on the checklist page to find relevant items, either
reply when you finish an item (please indicate which item/s is/are done),
or check it off yourself on the checklist page. Also, if you have any
commits that should have been picked, make sure that the changes are in.

Be sure to finish your testing by the 25th. Otherwise the release
will move on without your input.

The checklist page is at:

Release candidates are at:

Please use these installers (or source bundles) -- don't test from
your own git clone (don't test the `master' branch by mistake!).
To get the tests, you can do this:

  cd ...racket-root...
  ./bin/raco pkg install -i --auto main-distribution-test

Release notes draft. What's missing?

(Draft:) Racket version 8.9 is now available from


As of this release:

  • The BSL, BSL+, ISL, and ISL+ languages come with checked signatures.
    This means that some names are taken away from the global
    namespace. -- This addition is an exploratory step. One problem is
    that lambda shows up in error messages of BSL .. ISL. If we find
    additional obstacles over the summer and can't fix them, we may

  • Switching into and out of dark mode is handled better on Mac OS and

  • Racket uses Unicode 15.0 for character and string operations.

  • The racket/hash-code library provides support for combining
    hash codes.

  • A language module can have a configure-expand submodule
    that is dynamically required to configure a parameterization before
    expansion of another module.

  • The stream-cons function supports multiple values.

  • The unit/c contract can see more bindings and enforce contracts
    within units.

  • The define-values/invoke-unit functino has an optional results

  • TCP output block buffering implies TCP_NODELAY.

  • Submodules and Check Syntax require arrows work better together

  • Typed Racket's shallow check generation is improved.

  • Many other improvements and bug fixes are included!

The following people contributed to this release:

Alex Harsányi, Alex Knauth, Alexis King, Ben Greenman, Bert De
Ketelaere, Bob Burger, Bogdan Popa, Cadence Ember, D. Ben Knoble, Denis
Hirn, dr-neptune, Eli Barzilay, Fred Fu, Gustavo Massaccesi, J. Ryan
Stinnett, Jack Firth, Jamie Taylor, Jesse Alama, Jin-Ho King, John
Clements, Lazerbeak12345, Mark Hedlund, Masaya Tojo, Matthew Flatt,
Matthias Felleisen, Mike Sperber, Philip McGrath, Robby Findler, Ryan
Culpepper, Sam Tobin-Hochstadt, sarna, Shu-Hung You, Sorawee
Porncharoenwase, Stephen De Gabrielle, sxzzsf, Tom Price, Yukai Chou,
and Zach OBrien

Feedback Welcome

1 Like

Typo "functino" for define-values/invoke-unit bullet (also: is it a function?).

No, it's obviously not a function, it's a FUNCTINO!
(sorry, right on both counts, thanks for pointing it out. How about:

  • The define-values/invoke-unit form has an optional results clause.