Racket v8.13 Release Thread

Done, many thanks.

Given @robby's comment about contract-in, my thought is that maybe we should remove this bullet from this release as well. I've removed this text, but I can certainly put it back in if people think it should be there.

I've removed this bullet.

I think a doc pointer (these will mostly all have doc pointers in the final release) should help with this?

I think @LiberalArtist’s proposed text is definitely an improvement, but I believe it’s still worth leaving the term “RRB Vectors” in there, and make the term a link to https://dl.acm.org/doi/10.1145/2858949.2784739, so that people who want to know more can read it.

Off-topic (sorry I can’t resist): for the vanishing underscores: I think that’s because some Markdown renderers interpreted them as nested emphasis / bold markup. E.g. <strong><strong><strong>abc</strong></strong></strong> for ______abc______. Different renderers could have different treatments though.

Oh! that's exactly right; as I typed the later underscores, the earlier ones disappeared. I should have used something non-matching, like hyphens.

__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________Δ̷̨̧̡̭̺̙̞͖̖͕̰̥̙̯͙̞̯̗̔͌͐̿͊̌́̄̑̿̓̉̈̀͘͠λ̶͔͓̘̘̳͇̻̍̏͌̅̓̓͂̍̾̔͜λ̶̛̯̖̯̲̱͎̙͎̎̐͆͂̽̓̇́͌́̀̏̎̅͋̏̊͘λ̶̨̨̰̟̯̫̲̲̫̯̭̤̳̼̫͉̹̞́̐̒Δ̷̡̛̥̖͇͚͍͍̄̏̂͛̅̌͗̂̽̅̀͆̿̔̚͜---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Okay, let's try again:

  • The racket/treelist and racket/mutable-treelist libraries provide list-like containers that support many operations in effectively constant time, including appending and extracting sub-lists without mutating the given list. Treelists are implemented as RRB Vectors, invented by Stucki, Riompf, Ureche, and Bagwell.

I would be happy to provide links to the paper; those typically go in at a later point in the process. I've mentioned only the append and extract operations, it appears to me that everything else effectively follows from these two (though perhaps that's not sufficiently obvious?). I also like giving explicit credit to the inventors. It might make this bullet a bit heavy, but I think that's not inappropriate, given the potential long-term importance of treelists?

This looks good to me, thanks!

Okay, the final build is running, yay! I'm posting the release notes I have now, please let me know about any additions or changes that should be there!

(BTW, I folded for now on Δ̷̨̧̡̭̺̙̞͖̖͕̰̥̙̯͙̞̯̗̔͌͐̿͊̌́̄̑̿̓̉̈̀͘͠λ̶͔͓̘̘̳͇̻̍̏͌̅̓̓͂̍̾̔͜λ̶̛̯̖̯̲̱͎̙͎̎̐͆͂̽̓̇́͌́̀̏̎̅͋̏̊͘λ̶̨̨̰̟̯̫̲̲̫̯̭̤̳̼̫͉̹̞́̐̒Δ̷̡̛̥̖͇͚͍͍̄̏̂͛̅̌͗̂̽̅̀͆̿̔̚͜--'s name)


  • The racket/treelist and racket/mutable-treelist libraries provide
    list-like containers that support many operations in effectively
    constant time, including appending and extracting sub-lists without
    mutating the given list. Treelists are implemented as RRB Vectors,
    invented by Stucki, Riompf, Ureche, and Bagwell.

  • The hash-filter-keys and hash-filter-values functions allow users
    to filter hashes using a predicate on either keys or values.

  • The vector-extend and vector*-extend functions provide a way
    to pre-populate the prefix of a newly allocated vector using the elements
    of an existing vector.

  • Racket v8.13 uses Unicode 15.1 for character and string operations.

  • Machine-specific cross-module optimization allows improved support for
    static generation of foreign-function bindings.

  • The scribble/acmart language uses v2.01, which avoids errors
    concerning the hyperref package in some latex installations.

The following people contributed to this release:

Alec Mills, Ben Greenman, Bob Burger, Bogdan Popa, dented42, Fred Fu,
Gustavo Massaccesi, Jason Hemann, Jay McCarthy, John Clements, Jordan
Johnson, Justin Dhillon, Mao Yifu, Matthew Flatt, Matthias Felleisen,
Mike Sperber, olopierpa, Oscar Waddell, Pavel Panchekha, Philip McGrath,
Robby Findler, Sam Phillips, Sam Tobin-Hochstadt, Siddhartha
Kasivajhula, Sorawee Porncharoenwase, Stephen De Gabrielle, Tim Standen,
William E. Byrd, Wing Hei Chan, and dr-neptune


Have we decided to not include the raco setup change?

I don’t think there’s an associated doc in https://github.com/racket/racket/pull/4878, but to answer @LiberalArtist’s question about disabling the fancy raco setup, @robby provided an answer in the PR: running raco ... | cat.

Thanks for the link to the PR discussion, very helpful. Based on that I think I'd write something like

  • Command-line raco setup (and package install) includes a per-thread monitor, showing what each thread is working on and (when waiting) what it's waiting for. There is also a text-based progress bar for the installation.

Thoughts? Are these actually threads, or is "workers" a better term? Maybe @robby has an opinion?

(Totally off-topic: discourse seems to be getting bored of our conversation, I just got a popup saying "You've replied to @sorawee 3 times, did you know you could send them a personal message instead?") :slight_smile:

Yeah, it isn't always threads (actually, in Racket-specific terminology, it is never threads: places or separate OS processes are the only options, I believe, with places being the common situation). Here's another take. Maybe melding these two?

  • Command-line raco setup, package update, and package installation use terminal control (when available) to show what they are working on more compactly and with a progress bar.

The idea being that it was showing all this information all along -- I've just made it so that when some new output appears for worker number, say, 3 it overwrites the line where we'd previous printed the status of worker #3. (The information about stuff waiting on other stuff is new, tho. As is the progress bar, but the progress isn't measured in wall-clock time, but in the number of files remaining to be processed.)

Sounds good, I've adopted your wording.