# Racket v8.13 Release Thread

**URL:** <https://racket.discourse.group/t/racket-v8-13-release-thread/2857>\
**Category:** Internals\
**Tags:** release-management, release\
**Created:** [April 6, 2024, 12:07am UTC](https://racket.discourse.group/t/racket-v8-13-release-thread/2857 "2024-04-06T00:07:05Z")\
**Posts on this page:** 11\
**Page:** 2

<div class="post-metadata">

**Author:** ![jbclements](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/jbclements/32/11_2.png) [@jbclements](https://racket.discourse.group/u/jbclements)\
**Post date:** [May 3, 2024, 8:07pm UTC](https://racket.discourse.group/t/racket-v8-13-release-thread/2857/21 "2024-05-03T20:07:25Z")

</div>

> [@LiberalArtist](#):
>
> Maybe it would be better to describe the functionality of treelists, something like:
> 
> - The `racket/treelist` and `racket/mutable-treelist` libraries provide list-like containers that support many operations in effectively constant time, including inserting, updating, or deleting elements at arbitrary positions and appending or extracting treelists.
> 
> (In any case, a noun like "libraries" is needed before "provide".)

Done, many thanks.

> [@LiberalArtist](#):
>
> > [@jbclements](#):
> >
> > - The `syntax-local-lift-require-top-level-form` function allows syntax  
> > transformers for `require` elements to produce top-level forms that are  
> > inserted following the currently-being-expanded `require` form.
> 
> I would mention `contract-in` in addition to, or maybe even instead of, this.

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.

> [@LiberalArtist](#):
>
> > [@jbclements](#):
> >
> > - The `syntax-local-make-definition-context-introducer` function allows  
> > syntax transformers to prune a single scope from a set of scopes during  
> > expansion. If you don't know whether you need this function, you  
> > probably don't need this function.
> 
> Is this worth including in the release note?

I've removed this bullet.

> [@LiberalArtist](#):
>
> > [@jbclements](#):
> >
> > Uh... "a progress bar that shows a progress bar". Yep, that's the kind of progress bar I'm talking about.
> > 
> > - Command-line compilation features both a progress bar and a dynamically-updated indicator of what each build thread is working on.
> 
> I am looking forward to this feature and agree it's worth mentioning here. If there's a concise way to describe how to turn it off, it might be worth mentioning that, too.

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

---

<div class="post-metadata">

**Author:** ![sorawee](https://avatars.discourse-cdn.com/v4/letter/s/ea5d25/32.png) [@sorawee](https://racket.discourse.group/u/sorawee)\
**Post date:** [May 3, 2024, 9:08pm UTC](https://racket.discourse.group/t/racket-v8-13-release-thread/2857/22 "2024-05-03T21:08:26Z")

</div>

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](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.

---

<div class="post-metadata">

**Author:** ![jbclements](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/jbclements/32/11_2.png) [@jbclements](https://racket.discourse.group/u/jbclements)\
**Post date:** [May 3, 2024, 11:55pm UTC](https://racket.discourse.group/t/racket-v8-13-release-thread/2857/23 "2024-05-03T23:55:42Z")

</div>

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

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

---

<div class="post-metadata">

**Author:** ![jbclements](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/jbclements/32/11_2.png) [@jbclements](https://racket.discourse.group/u/jbclements)\
**Post date:** [May 4, 2024, 12:05am UTC](https://racket.discourse.group/t/racket-v8-13-release-thread/2857/24 "2024-05-04T00:05:03Z")

</div>

> [@LiberalArtist](#):
>
> The `racket/treelist` and `racket/mutable-treelist` libraries provide list-like containers that support many operations in effectively constant time, including inserting, updating, or deleting elements at arbitrary positions and appending or extracting treelists.

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?

---

<div class="post-metadata">

**Author:** ![sorawee](https://avatars.discourse-cdn.com/v4/letter/s/ea5d25/32.png) [@sorawee](https://racket.discourse.group/u/sorawee)\
**Post date:** [May 4, 2024, 5:34pm UTC](https://racket.discourse.group/t/racket-v8-13-release-thread/2857/25 "2024-05-04T17:34:57Z")

</div>

This looks good to me, thanks!

---

<div class="post-metadata">

**Author:** ![jbclements](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/jbclements/32/11_2.png) [@jbclements](https://racket.discourse.group/u/jbclements)\
**Post date:** [May 14, 2024, 5:40am UTC](https://racket.discourse.group/t/racket-v8-13-release-thread/2857/26 "2024-05-14T05:40:10Z")

</div>

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

* * *

---

<div class="post-metadata">

**Author:** ![sorawee](https://avatars.discourse-cdn.com/v4/letter/s/ea5d25/32.png) [@sorawee](https://racket.discourse.group/u/sorawee)\
**Post date:** [May 14, 2024, 7:04am UTC](https://racket.discourse.group/t/racket-v8-13-release-thread/2857/27 "2024-05-14T07:04:42Z")

</div>

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](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`.

---

<div class="post-metadata">

**Author:** ![jbclements](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/jbclements/32/11_2.png) [@jbclements](https://racket.discourse.group/u/jbclements)\
**Post date:** [May 14, 2024, 5:03pm UTC](https://racket.discourse.group/t/racket-v8-13-release-thread/2857/28 "2024-05-14T17:03:37Z")

</div>

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?") 🙂

---

<div class="post-metadata">

**Author:** ![robby](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/robby/32/7_2.png) [@robby](https://racket.discourse.group/u/robby)\
**Post date:** [May 14, 2024, 5:52pm UTC](https://racket.discourse.group/t/racket-v8-13-release-thread/2857/29 "2024-05-14T17:52:06Z")

</div>

> [@jbclements](#):
>
> - 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?

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.

---

<div class="post-metadata">

**Author:** ![robby](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/robby/32/7_2.png) [@robby](https://racket.discourse.group/u/robby)\
**Post date:** [May 14, 2024, 6:17pm UTC](https://racket.discourse.group/t/racket-v8-13-release-thread/2857/30 "2024-05-14T18:17:51Z")

</div>

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.)

---

<div class="post-metadata">

**Author:** ![jbclements](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/jbclements/32/11_2.png) [@jbclements](https://racket.discourse.group/u/jbclements)\
**Post date:** [May 14, 2024, 8:36pm UTC](https://racket.discourse.group/t/racket-v8-13-release-thread/2857/31 "2024-05-14T20:36:39Z")

</div>

Sounds good, I've adopted your wording.

[Previous page](https://racket.discourse.group/t/racket-v8-13-release-thread/2857.md?page=1)
