Racket v8.16 draft release notes

Here are the current draft release notes. please let me know about things that are incorrect or missing!


  • 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 uses a different library that is 2x-3x faster on
    inputs with large CDATA blocks, and disables 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.
  • The open-input-nowhere function creates an empty input port.
  • The pipe-port? function makes it possible to determine whether a
    port is connected to a pipe.
  • A revised representation of pointers makes ptr-ref and ptr-set!
    substantially faster, reducing the overhead of foreign function
    calls.
  • 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 port-file-stat function allows gathering information about the
    file that is the source or target of a file-stream port.
  • 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
    argument to call-with-expeditor.
  • There is a guide to adding internationalization for a new (human)
    language.
  • 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.


5 Likes

I recommend this PR by @mike: https://github.com/racket/htdp/pull/222
I think the debugger support of menu-based ASL has been there for a long time, but #lang htdp/asl previously didn't get the "Debug" button.

Maybe this?

How about focusing on FFI calls in general? like

  • A revised representation of pointers improves the performance of foreign function calls.
    • ptr-ref and ptr-set! are substantially faster.

Just for the record, this post details the FFI improvement (with several benchmarking results from @mflatt and @pavpanchekha):
https://racket.discourse.group/t/fixnum-slow-despite-docs/3409/6

Does it make sense to make them a secondary-level list and summarize the notes as one top-level item? (e.g.

  • Expanded support for immutable and mutable treelists.
    • ...
    • ...)

These items fall under the general "port I/O" category. Similar to the treelist items, I wonder whether grouping them under a top-level "new port I/O functions"-ish item better structures the release notes.

How about replacing "connected to a pipe" with "created by make-pipe"?

  • "connected" is not a technical phrase of ports
  • "pipes" are too generic (when compared to, e.g. "Racket pipe ports")
    For example, Racket docs specifically note that OS-level pipes are actually file-stream ports.