# Racket v8.16 — Racket v8.16 - Product: Racket (https://whatsnew.fyi/product/racket) - Vendor: Racket - Date: 2025-03-02 - Version: v8.16 - Original notes: https://github.com/racket/racket/releases/tag/v8.16 - Permalink: https://whatsnew.fyi/product/racket/releases/v8.16 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Added treelist utility functions including treelist-filter and treelist-flatten - **added** — Added mutable-treelist-prepend! function to prepend to mutable treelists - **added** — Mutable treelists are now serializable - **added** — Added serialize-structs module for minimizing dependencies with core forms - **added** — Added flbit-field function for access to the binary representation of IEEE floating-point numbers - **added** — Added \X to pregexp syntax to match grapheme clusters - **added** — Added read-json* and write-json* functions for customization of Racket representation of JSON elements - **added** — Added open-input-nowhere function to create an empty input port - **added** — Added pipe-port? function to determine whether a port is created by make-pipe - **added** — Added port-file-stat function to gather information about the file that is the source or target of a file-stream port - **added** — Added fifteenth function to return the fifteenth element of a list - **added** — Added student-t distribution to the math/distributions library - **added** — Added support for customizing the Expeditor prompt using the #:prompt keyword argument to call-with-expeditor - **added** — Added guide to adding internationalization for a new human language - **changed** — XML reader is 2-3x faster on inputs with long CDATA and comments, with 25% speedup on large documents generally - **changed** — Revised representation of pointers improves performance of foreign function calls, making ptr-ref and ptr-set! substantially faster - **changed** — Improved multi-line convention for error messages - **changed** — The db library now allows prepare on virtual statements - **changed** — Optimizations to racket/profile improve asymptotic speed for very large call graphs - **changed** — The #lang htdp/asl language now incorporates Graphical Debugger support - **fixed** — Fixed the top-left search box in the documentation ---------------------------------------------------------------------- - 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. - 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*` and `write-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 by `make-pipe`. - The `port-file-stat` function allows gathering information about the file that is the source or target of a file-stream port. - A revised representation of pointers improves the performance of foreign function calls. As a result, `ptr-ref` and `ptr-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 allows `prepare` on virtual statements. - The `student-t` distribution is part of the `math/distributions` library. - Expeditor supports customizing the prompt, using the `#:prompt` keyword argument to `call-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! 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. ----------------------------------------------------------------------