The release announcement sketch that I have so far is below. Please mail me new items and/or edits.
Please phrase announcements using complete sentences and avoid the word "now".
As of this release:
Racket uses Unicode 16.0 for character and string operations.
XML structures are serializable.
Scribble's HTML generation conforms better to modern standards.
The redex-check default generation strategy always uses random generation to supplement the enumerator.
DrRacket supports the use of shift-tab to go backward to previous indentation positions.
The macro stepper supports the string-constants library, allowing internationalization of the stepper itself.
The struct form supports #:properties prop-alist-expr, making it more convenient to attach multiple property values to a structure type.
Build-system improvements support containers registered at Docker Hub to build for all platforms that have downloads form the main Racket download site; improvements also support Unix-style builds for Mac OS in the style of MacPorts.
The expt function produces a more accurate result when its first argument is a flonum and its second argument is an exact integer that has no equivalent flonum representation than it did in prior versions.
TCP ports use SO_KEEPALIVE correctly.
The Uninterruptible mode allows futures-based computations to run both concurrently and uninterrupted in an atomic-like mode.
The net/imap library supports IMAP's move operation.
There are many other repairs and documentation improvements!
Should the announcement mention the end of pre-built BC downloads, and other changes/additions to the set of downloads offered?
If so, I'd probably add that to the top of the list, and I might move the Unicode update toward the bottom, as noteworthy but routine.
Stylistically, I don't like The Uninteruptable mode. The docs capitalize "uninteruptable" only at the beginning of a sentence. I'd probably use italcs or quotation marks. Maybe something like:
Unsafe code can use āuninteruptable modeā instead of āatomic modeā to allow futures to run concurrently while preventing interruptions from other threads.
Just a minor typo in Build-system improvements paragraph: It says "downloads form" but should say "downloads from". Please verify. Thank you for all your fine work.
Well, aside from my nit-pick that "uninterruptible" has an "i" before the "b", a fact I just learned and am eager to share, I support this rewording, especially because I was very uncertain about the accuracy of my own summary. Thanks!
Um... but now I have a question about the use of "unsafe" in this context. Would it be any less accurate to remove the word unsafe, and just say "Code can use ..." ?
I agree that the removal of BC builds should probably be mentioned, along with the new Linux builds.
Here's what I have now:
As of this release:
The racket-lang.org website no longer distributes Racket BC bundles, but it includes pre-built bundles for two flavors of ARM linux, AArch64 and 32-bit ARMv6 VFP.
Racket uses Unicode 16.0 for character and string operations.
XML structures are serializable.
Scribble's HTML generation conforms better to modern standards.
The redex-check default generation strategy always uses random generation to supplement the enumerator.
DrRacket supports the use of shift-tab to go backward to previous indentation positions.
The macro stepper supports the string-constants library, allowing internationalization of the stepper itself.
The struct form supports #:properties prop-alist-expr, making it more convenient to attach multiple property values to a structure type.
Build-system improvements support containers registered at Docker Hub to build for all platforms that have downloads from the main Racket download site; improvements also support Unix-style builds for Mac OS in the style of MacPorts.
The expt function produces a more accurate result when its first argument is a flonum and its second argument is an exact integer that has no equivalent flonum representation than it did in prior versions.
TCP ports use SO_KEEPALIVE correctly.
Unsafe code can use āuninterruptible modeā instead of āatomic modeā to allow futures to run concurrently while preventing interruptions from other threads.
The Uninterruptable mode allows futures-based computations to run both concurrently and uninterrupted in an atomic-like mode.
The net/imap library supports IMAP's move operation.
There are many other repairs and documentation improvements!
Glug... changed upstream, didn't re-generate. Here goes, straight from the source, and including contributors as well:
As of this release:
The racket-lang.org website no longer distributes Racket BC bundles, but it includes pre-built bundles for two flavors of ARM linux, AArch64 and 32-bit ARMv6 VFP.
XML structures are serializable.
Scribble's HTML generation conforms better to modern standards.
Racket uses Unicode 16.0 for character and string operations.
The redex-check default generation strategy always uses random generation to supplement the enumerator.
DrRacket supports the use of shift-tab to go backward to previous indentation positions.
The macro stepper supports the string-constants library, allowing internationalization of the stepper itself.
The struct form supports #:properties prop-alist-expr, making it more convenient to attach multiple property values to a structure type.
Build-system improvements support containers registered at Docker Hub to build for all platforms that have downloads from the main Racket download site; improvements also support Unix-style builds for Mac OS in the style of MacPorts.
The expt function produces a more accurate result when its first argument is a flonum and its second argument is an exact integer that has no equivalent flonum representation than it did in prior versions.
TCP ports use SO_KEEPALIVE correctly.
Unsafe code can use āuninterruptible modeā instead of āatomic modeā to allow futures to run concurrently while preventing interruptions from other threads.
The net/imap library supports IMAP's move operation.
There are many other repairs and documentation improvements!
It would in a sense be true, but any code that used uninterruptible mode would become unsafe, because uninterruptible mode, like atomic mode, is unsafe.
Matthew has built infrastructure in the distro-build library and (I believe) created a bunch of new docker images, to make it vastly more convenient to run builds using docker exclusively, eliminating the need to set up and maintain build machines that use old, sometimes insecure operating systems and are open on the internet.
Perhaps the key missing element here is a reference to the distro-build library? Maybe something like this:
New code in the distro-build library and new containers registered at Docker Hub make it possible
to run racket build farms without setting up and maintaining machines using various operating systems. These improvements also support Unix-style builds for Mac OS in the style of MacPorts.
?
Build-system improvements support containers registered at Docker Hub to build for all platforms that have downloads from the main Racket download site; improvements also support Unix-style builds for Mac OS in the style of MacPorts.
This works for me, though I'd be inclined to replace "improved support" with "new infrastructure"; there's a whole new layer to the build system, essentially.
The distro-build package has new infrastructure for building using docker images.
The inconsistency doesn't bother me much, especially at this stage. Either way is fine with me.
One other issue: I noticed the "Thanks" list of names in the draft announcement is formatted as a list of separate lines rather than as a single paragraph. (To clarify: I'm talking about the draft post here on Discourse.)
I may be misunderstanding, but I think that I just kind of coincidentally fixed this a few weeks ago; that is, I think the markdown generated for the post should contain a single long line for the contributors. I'm guessing I did that after posting the draft announcement. Perhaps I'm mistaken, I'll go do some digging.