We are pleased to announce Racket v8.16 is now available from https://download.racket-lang.org/.
As of this release:
- Racket has expanded support for immutable and mutable treelists:
- A variety of new treelist utility functions are available:
treelist-filter
,treelist-flatten
, et cetera. - The
mutable-treelist-prepend!
function allows prepending to mutable treelists. - Mutable treelists are serializable.
- A variety of new treelist utility functions are available:
- The
serialize-structs
module allows the minimization of dependencies by providing only a handful of core forms. - The
flbit-field
function allows access to the binary representation of IEEE floating-point numbers. - The top-left search box in the documentation works once more.
- The XML reader is 2-3x faster on inputs with long CDATA and comments, and avoids some internal contract checks to obtain a 25% speedup on large documents generally.
- The pregexp syntax includes "\X" to match a grapheme cluster, following Perl and PCRE.
- The
read-json*
andwrite-json*
functions allow customization of the Racket representation of JSON elements, eliminating the need for a separate "translation" pass. - Racket has new port I/O functions:
- The
open-input-nowhere
function creates an empty input port. - The
pipe-port?
function makes it possible to determine whether a port is created bymake-pipe
. - The
port-file-stat
function allows gathering information about the file that is the source or target of a file-stream port.
- The
- A revised representation of pointers improves the performance of foreign function calls. As a result,
ptr-ref
andptr-set!
are substantially faster. - In anticipation of the fifteenth RacketCon, the
fifteenth
function returns the fifteenth element of a list. - Racket has an improved multi-line convention for error messages.
- The
db
library allowsprepare
on virtual statements. - The
student-t
distribution is part of themath/distributions
library. - Expeditor supports customizing the prompt, using the
#:prompt
keyword argument tocall-with-expeditor
. - There is a guide to adding internationalization for a new (human) language.
- Optimizations to racket/profile improve asymptotic speed for very large call graphs.
- The
#lang htdp/asl
language incorporates Graphical Debugger support. - There is lots of new documentation, and many defects repaired!
Thank you
The following people contributed to this release:
a11ce, Alex Knauth, Alexander Shopov, Alexis King, Andrew Mauer-Oats, Anthony Carrico, Bert De Ketelaere, Bob Burger, Bogdan Popa, D. Ben Knoble, David Van Horn, Gustavo Massaccesi, halfminami, Hao Zhang, Jacqueline Firth, Jinser Kafka, JJ, John Clements, Jörgen Brandt, Kraskaska, lafirest, Laurent Orseau, lukejianu, Marc Nieper-Wißkirchen, Matthew Flatt, Matthias Felleisen, mehbark, Mike Sperber, Noah Ma, Onorio Catenacci, Oscar Waddell, Pavel Panchekha, payneca, Robby Findler, Sam Phillips, Sam Tobin-Hochstadt, Shu-Hung You, Sorawee Porncharoenwase, Stephen De Gabrielle, Wing Hei Chan, Yi Cao, and ZhangHao.
Racket is a community developed open source project and we welcome new contributors. See racket/README.md to learn how you can be a part of this amazing project.
Feedback Welcome
Questions and discussion welcome at the Racket community Discourse or Discord
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.16 is now available from https://download.racket-lang.org
See https://blog.racket-lang.org/2025/03/racket-v8-16.html for the release announcement and highlights.