You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: blog/_src/posts/2025-01-31-racket-v8-16.md
+18-37
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,5 @@
1
1
Title: Racket v8.16
2
-
Date: 2025-01-31T13:12:00
2
+
Date: 2025-03-02T11:09:00Z-08:00
3
3
Tags: release-announcement, DRAFT
4
4
Authors: John Clements, Stephen De Gabrielle
5
5
@@ -12,48 +12,29 @@ We are pleased to announce Racket v8.16 is now available from [https://download.
12
12
13
13
## As of this release:
14
14
15
-
- Expanded support for immutable and mutable treelists
16
-
- A variety of new treelist utility functions are available:
17
-
[`treelist-filter`](https://pre-release.racket-lang.org/doc/reference/treelist.html#%28def._%28%28lib._racket%2Ftreelist..rkt%29._treelist-filter%29%29), [`treelist-flatten`](https://pre-release.racket-lang.org/doc/reference/treelist.html#%28def._%28%28lib._racket%2Ftreelist..rkt%29._treelist-flatten%29%29), et cetera.
15
+
- Racket has expanded support for immutable and mutable treelists:
16
+
- A variety of new treelist utility functions are available: [`treelist-filter`](https://pre-release.racket-lang.org/doc/reference/treelist.html#%28def._%28%28lib._racket%2Ftreelist..rkt%29._treelist-filter%29%29), [`treelist-flatten`](https://pre-release.racket-lang.org/doc/reference/treelist.html#%28def._%28%28lib._racket%2Ftreelist..rkt%29._treelist-flatten%29%29), et cetera.
18
17
- The [`mutable-treelist-prepend!`](https://pre-release.racket-lang.org/doc/reference/treelist.html#%28def._%28%28lib._racket%2Fmutable-treelist..rkt%29._mutable-treelist-prepend%21%29%29) function allows prepending to mutable treelists.
19
-
-[Mutable treelists](https://pre-release.racket-lang.org/doc/reference/treelist.html#%28part._.Mutable_.Treelists%29) are [serializable](https://pre-release.racket-lang.org/doc/reference/serialization.html).
20
-
21
-
- The [`serialize-structs`](https://pre-release.racket-lang.org/doc/reference/serialization.html#%28mod-path._racket%2Fserialize-structs%29) module allows the minimization of
22
-
dependencies by providing only a handful of core forms
23
-
- The [`flbit-field`](https://pre-release.racket-lang.org/doc/reference/flonums.html#%28def._%28%28lib._racket%2Fflonum..rkt%29._flbit-field%29%29) function allows access to the binary
24
-
representation of IEEE floating-point numbers.
18
+
-[Mutable treelists](https://pre-release.racket-lang.org/doc/reference/treelist.html#%28part._.Mutable_.Treelists%29) are [serializable](https://pre-release.racket-lang.org/doc/reference/serialization.html).
19
+
- The [`serialize-structs`](https://pre-release.racket-lang.org/doc/reference/serialization.html#%28mod-path._racket%2Fserialize-structs%29) module allows the minimization of dependencies by providing only a handful of core forms.
20
+
- The [`flbit-field`](https://pre-release.racket-lang.org/doc/reference/flonums.html#%28def._%28%28lib._racket%2Fflonum..rkt%29._flbit-field%29%29) function allows access to the binary representation of IEEE floating-point numbers.
25
21
- The top-left search box in the [documentation](https://pre-release.racket-lang.org/doc/index.html) works once more.
26
-
- The [XML reader](https://pre-release.racket-lang.org/doc/xml/index.html#%28part._.Reading_and_.Writing_.X.M.L%29) is 2-3x faster on inputs with long CDATA
27
-
and comments, and avoids some internal contract checks to
28
-
obtain a 25% speedup on large documents generally.
29
-
- The [pregexp syntax includes "\X" to match a grapheme cluster](https://pre-release.racket-lang.org/doc/reference/regexp.html#(part._regexp-syntax)),
30
-
following Perl and PCRE.
31
-
- The [`read-json*`](https://pre-release.racket-lang.org/doc/json/index.html#%28def._%28%28submod._%28lib._json%2Fmain..rkt%29._for-extension%29._read-json%2A%29%29) and [`write-json*`](https://pre-release.racket-lang.org/doc/json/index.html#%28def._%28%28submod._%28lib._json%2Fmain..rkt%29._for-extension%29._write-json%2A%29%29) functions allow customization of
32
-
the Racket representation of JSON elements, eliminating the need for
33
-
a separate "translation" pass.
34
-
35
-
- New port I/O functions
22
+
- The [XML reader](https://pre-release.racket-lang.org/doc/xml/index.html#%28part._.Reading_and_.Writing_.X.M.L%29) 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.
23
+
- The [pregexp syntax includes "\X" to match a grapheme cluster](https://pre-release.racket-lang.org/doc/reference/regexp.html#(part._regexp-syntax)), following Perl and PCRE.
24
+
- The [`read-json*`](https://pre-release.racket-lang.org/doc/json/index.html#%28def._%28%28submod._%28lib._json%2Fmain..rkt%29._for-extension%29._read-json%2A%29%29) and [`write-json*`](https://pre-release.racket-lang.org/doc/json/index.html#%28def._%28%28submod._%28lib._json%2Fmain..rkt%29._for-extension%29._write-json%2A%29%29) functions allow customization of the Racket representation of JSON elements, eliminating the need for a separate "translation" pass.
25
+
- Racket has new port I/O functions:
36
26
- The [`open-input-nowhere`](https://pre-release.racket-lang.org/doc/reference/port-lib.html#%28def._%28%28lib._racket%2Fport..rkt%29._open-input-nowhere%29%29) function creates an empty input port.
37
-
- The [`pipe-port?`](https://pre-release.racket-lang.org/doc/reference/pipeports.html#%28def._%28%28quote._~23~25kernel%29._pipe-port~3f%29%29) function makes it possible to determine whether a
38
-
port is created by [`make-pipe`](https://pre-release.racket-lang.org/doc/reference/pipeports.html#%28def._%28%28quote._~23~25kernel%29._make-pipe%29%29).
39
-
- The [`port-file-stat`](https://pre-release.racket-lang.org/doc/reference/file-ports.html#%28def._%28%28quote._~23~25kernel%29._port-file-stat%29%29) function allows gathering information about the
40
-
file that is the source or target of a file-stream port.
41
-
42
-
- A revised representation of pointers improves the performance of foreign
43
-
function calls.
44
-
-[`ptr-ref`](https://pre-release.racket-lang.org/doc/foreign/foreign_pointer-funcs.html#%28def._%28%28quote._~23~25foreign%29._ptr-ref%29%29) and [`ptr-set!`](https://pre-release.racket-lang.org/doc/foreign/foreign_pointer-funcs.html#%28def._%28%28quote._~23~25foreign%29._ptr-set%21%29%29) are substantially faster.
45
-
-[Details the FFI improvement (with some benchmarking results)](https://racket.discourse.group/t/fixnum-slow-despite-docs/3409/6)
46
-
47
-
- In anticipation of the fifteenth [RacketCon](https://con.racket-lang.org), the [`fifteenth`](https://pre-release.racket-lang.org/doc/reference/pairs.html#%28def._%28%28lib._racket%2Flist..rkt%29._fifteenth%29%29) function
48
-
returns the fifteenth element of a list.
27
+
- The [`pipe-port?`](https://pre-release.racket-lang.org/doc/reference/pipeports.html#%28def._%28%28quote._~23~25kernel%29._pipe-port~3f%29%29) function makes it possible to determine whether a port is created by [`make-pipe`](https://pre-release.racket-lang.org/doc/reference/pipeports.html#%28def._%28%28quote._~23~25kernel%29._make-pipe%29%29).
28
+
- The [`port-file-stat`](https://pre-release.racket-lang.org/doc/reference/file-ports.html#%28def._%28%28quote._~23~25kernel%29._port-file-stat%29%29) function allows gathering information about the file that is the source or target of a file-stream port.
29
+
- A [revised representation](https://racket.discourse.group/t/fixnum-slow-despite-docs/3409/6) of pointers improves the performance of foreign function calls. As a result, [`ptr-ref`](https://pre-release.racket-lang.org/doc/foreign/foreign_pointer-funcs.html#%28def._%28%28quote._~23~25foreign%29._ptr-ref%29%29) and [`ptr-set!`](https://pre-release.racket-lang.org/doc/foreign/foreign_pointer-funcs.html#%28def._%28%28quote._~23~25foreign%29._ptr-set%21%29%29) are substantially faster.
30
+
- In anticipation of the fifteenth [RacketCon](https://con.racket-lang.org), the [`fifteenth`](https://pre-release.racket-lang.org/doc/reference/pairs.html#%28def._%28%28lib._racket%2Flist..rkt%29._fifteenth%29%29) function returns the fifteenth element of a list.
49
31
- Racket has an improved multi-line convention for error messages.
50
32
- The [`db` library](https://pre-release.racket-lang.org/doc/db/index.html) allows [`prepare`](https://pre-release.racket-lang.org/doc/db/query-api.html#%28def._%28%28lib._db%2Fbase..rkt%29._prepare%29%29) on virtual statements.
51
33
- The [`student-t` distribution](https://pre-release.racket-lang.org/doc/math/Real_Distribution_Families.html#%28part._.Student-t_.Distributions%29) is part of the [`math/distributions` library](https://pre-release.racket-lang.org/doc/math/dist.html).
52
-
-[Expeditor](https://pre-release.racket-lang.org/doc/expeditor/index.html) supports customizing the prompt, using the [`prompt`
53
-
argument to `call-with-expeditor`](https://pre-release.racket-lang.org/doc/expeditor/Expeditor_API.html#%28def._%28%28lib._expeditor%2Fmain..rkt%29._call-with-expeditor%29%29).
54
-
- There is a [guide to adding internationalization for a new (human)
-[Expeditor](https://pre-release.racket-lang.org/doc/expeditor/index.html) supports customizing the prompt, using the [`#:prompt` keyword argument to `call-with-expeditor`](https://pre-release.racket-lang.org/doc/expeditor/Expeditor_API.html#%28def._%28%28lib._expeditor%2Fmain..rkt%29._call-with-expeditor%29%29).
35
+
- There is a [guide to adding internationalization for a new (human) language.](https://racket.discourse.group/t/advent-2024-day-translate-drracket-interface-in-your-language/3407)
36
+
- Optimizations to racket/profile improve asymptotic speed for very large call graphs.
37
+
- The `#lang htdp/asl` language incorporates [Graphical Debugger](https://docs.racket-lang.org/drracket/debugger.html#%28part._.Debugger_.Buttons%29) support.
57
38
- There is lots of new documentation, and many defects repaired!
0 commit comments