Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions announcements/v8.18.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@

Racket v8.18

----------------------------------------------------------------------

- 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 improvements!

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.

----------------------------------------------------------------------
62 changes: 62 additions & 0 deletions blog/_src/posts/2025-08-20-racket-v8-18.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
Title: Racket v8.18
Date: 2025-08-20T13:28:24
Tags: DRAFT


----------------------------------------------------------------------

We are pleased to announce Racket v8.18 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
```
Racket - the Language-Oriented Programming Language - version 8.18 is now available from https://download.racket-lang.org

See https://blog.racket-lang.org/2025/08/racket-v8-18.html for the release announcement and highlights.
```