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".
Demodularization is more flexible, with better support for libraries
and definition pruning. The compiler/demod language facilitates
these changes.
Identifiers such as case-λ, match-λ and λ are equivalent to
their latin-alphabet equivalents (case-lambda, match-lambda, and lambda) in more contexts, including uses of match.
The hash-filter function allows the use of a predicate to select a
sub-table of a hash table.
The module browser can perform filtering on submodules.
The equal-always? predicate is more correct than before for paths,
fxvectors, flvectors, extflvectors, and stencil vectors.
The raco test command-line form respects the current-test-invocation-directory parameter, and shows well-formed
module paths in its output.
The contract-in form has the same features as contract-out.
The #%declare form supports the #:flatten-requires and #:unlimited-compile keywords
Racket CS allows the use of in-memory boot files.
The raco/testing collection brings together a variety of testing-
related functions and forms.
This release also includes many bug-fixes and documentation updates!
The following people contributed to this release:
Alex Knauth, Alexander Shopov, Ben Greenman, Bert De Ketelaere, Bob
Burger, Bogdan Popa, Cadence Ember, Carl Gay, D. Ben Knoble, Gregory
Rosenblatt, Gustavo Massaccesi, John Clements, John Sullivan, Jordan
Johnson, luistung, Matthew Flatt, Matthias Felleisen, Noah Ma, Philip
McGrath, Robby Findler, Ryan Culpepper, Sam Tobin-Hochstadt, Sergey
Fedorov, Sorawee Porncharoenwase, Wing Hei Chan, and ZhangHao
"Significantly" more extensive? I get paid by the word here, you know
My understanding of compiler/demod is shallow, so the more I write, the less correct it's likely to be. I would say something like this:
...
Actually, I'm struggling with wording this in a way that doesn't push lots of people toward using demodularization. I think it would be easy to get the sense that demodularization confers some fantastic benefit, when IIUC the principal benefit is a 25% reduction in load times? I do see that for modules such as lang/rhombus (IIUC), this is significant. Okay let me try again.
...
Demodularization rewrites programs during compilation to bundle cross-file dependencies, which can reduce load times (and compiled size?). Doing this correctly for libraries requires significant configuration, which is made possible by the compiler/demod language. Programs in the compiler/demod language are specifications of the way in which another module should be demodularized during the build process.
Not sure I like that better, feel free to suggest edits. I do think that this is one of the places where we might consider a use of one of those precious nows.
There are literally dozens, probably hundreds of these. I think that enumerating them would be time-consuming and of limited value. Perhaps we could direct people to the commit logs?
I've adopted Robby's contract-in bullet instead of the existing one, reordered the bullets per Sam's suggestion, removed the equal-always fixes bullet, and substituted my alternate text for demodularization, though I would very much appreciate some feedback in that regard. Here's what I have now:
Demodularization rewrites programs during compilation to bundle
cross-file dependencies, which can reduce load times (and compiled
size?). Doing this correctly for libraries requires significant
configuration, which is made possible by the compiler/demod
language. Programs in the compiler/demod language are specifications
of the way in which another module should be demodularized during the
build process.
The contract-in form enables contracts to be specified in an importing
module.
The #%declare form supports the #:flatten-requires and #:unlimited-compile keywords
Identifiers such as case-λ, match-λ and λ are equivalent to
their latin-alphabet equivalents (case-lambda, match-lambda, and lambda) in more contexts, including uses of match.
The hash-filter function allows the use of a predicate to select a
sub-table of a hash table.
The module browser can perform filtering on submodules.
The raco test command-line form respects the current-test-invocation-directory parameter, and shows well-formed
module paths in its output.
Racket CS allows the use of in-memory boot files.
The raco/testing collection brings together a variety of testing-
related functions and forms.
This release also includes many bug-fixes and documentation updates!
The following people contributed to this release:
Alex Knauth, Alexander Shopov, Ben Greenman, Bert De Ketelaere, Bob
Burger, Bogdan Popa, Cadence Ember, Carl Gay, D. Ben Knoble, Gregory
Rosenblatt, Gustavo Massaccesi, John Clements, John Sullivan, Jordan
Johnson, luistung, Matthew Flatt, Matthias Felleisen, Noah Ma, Philip
McGrath, Robby Findler, Ryan Culpepper, Sam Tobin-Hochstadt, Sergey
Fedorov, Sorawee Porncharoenwase, Wing Hei Chan, and ZhangHao
Okay, about ready for the final build. Here are the release notes as they now stand; the only new thing here is the note about the windows build problem.
Demodularization rewrites programs during compilation to bundle
cross-file dependencies, which can reduce load times (and compiled
size?). Doing this correctly for libraries requires significant
configuration, which is made possible by the compiler/demod
language. Programs in the compiler/demod language are specifications
of the way in which another module should be demodularized during the
build process.
The contract-in form enables contracts to be specified in an importing
module.
The #%declare form supports the #:flatten-requires and #:unlimited-compile keywords
Identifiers such as case-λ, match-λ and λ are equivalent to
their latin-alphabet equivalents (case-lambda, match-lambda, and lambda) in more contexts, including uses of match.
The hash-filter function allows the use of a predicate to select a
sub-table of a hash table.
The module browser can perform filtering on submodules.
The raco test command-line form respects the current-test-invocation-directory parameter, and shows well-formed
module paths in its output.
Racket CS allows the use of in-memory boot files.
The raco/testing collection brings together a variety of testing-
related functions and forms.
This release also includes many bug-fixes and documentation updates!
NOTE: This release (and version 8.13) have a known build problem that
affects the builtpkgs source bundle on Windows. In order to avoid this
problem, use a pre-built bundle or build using a source bundle other
than the builtpkgs one. Nightly builds do not suffer from this
problem.
The following people contributed to this release:
Alex Knauth, Alexander Shopov, Ben Greenman, Bert De Ketelaere, Bob
Burger, Bogdan Popa, Cadence Ember, Carl Gay, D. Ben Knoble, Gregory
Rosenblatt, Gustavo Massaccesi, John Clements, John Sullivan, Jordan
Johnson, luistung, Matthew Flatt, Matthias Felleisen, Noah Ma, Philip
McGrath, Robby Findler, Ryan Culpepper, Sam Tobin-Hochstadt, Sergey
Fedorov, Sorawee Porncharoenwase, Wing Hei Chan, and ZhangHao
The compiler/demod language integrates demodularization into the program rather than an external tool. Using the language approach cooperates with other Racket tools and allows demodularization to be used in libraries. Additionally demodularization handles submodules, and can now prune definitions, significantly shrinking the size of some programs.
1). Update the font type of the first instance of the word builtpkgs in the NOTE.
2). Add the final period, for the paragraph of the people that contributed to this release.
Another point associated with the words "(and compiled size?)" concerning demodularization, in order to substitute the use of the question mark, is subsumed in the proposal of @samth.
Thank you very much for your outstanding work. It is much appreciated. Kind regards.
Okay, I used your wording, with several minor edits (removed "now", moved some commas around, changed an "in" to "on". How's this?
The compiler/demod language integrates demodularization into the
program rather than an external tool. Using the language approach
cooperates with other Racket tools and allows demodularization to be
used on libraries. Additionally, demodularization handles submodules
and can prune definitions, significantly shrinking the size of some
programs.
Hmm... I feel like those instructions are very likely to be seen when people are downloading the new release, no? With that said, I don't feel strongly about this. Also, @spdegabrielle adds all of the pretty stuff to the release notes, he should be a part of the conversation.