# Release Announcement for v8.11

**URL:** <https://racket.discourse.group/t/release-announcement-for-v8-11/2487>\
**Category:** Internals\
**Tags:** release-management\
**Created:** [November 10, 2023, 4:27am UTC](https://racket.discourse.group/t/release-announcement-for-v8-11/2487 "2023-11-10T04:27:32Z")\
**Posts on this page:** 20\
**Page:** 1

<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:** [November 10, 2023, 4:27am UTC](https://racket.discourse.group/t/release-announcement-for-v8-11/2487/1 "2023-11-10T04:27:33Z")

</div>

```
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".

```

* * *

Racket version 8.11 is now available from

```
https://racket-lang.org/

```

As of this release:

- Match clauses can include a #:do option to allow evaluation of code  
and bindings before a following #:when clause

- JSON Serialization supports indentation with an #:indent option to  
`write-json`

- An `initiate-sequence` function simplifies the creation of sequences.

- The `:do-in` form allows an inner definition sequence.

- The `redex-define` form allows pattern-matching in redex using a  
`define`-like syntax

- Racket and Chez Scheme use Robert L. Smith's "Algorithm 116" for  
division of complex numbers.

- DrRacket has indentation guides that provide visual cues indicating  
how code is indented and grouped, accessible by using  
(-shift-i).

- "Comment-out" menu items can be specific to the #lang used by the  
current file.

- Unused identifiers have a tooltip indicating that they have no bound  
occurrences.

- There are many other documentation improvements, optimizations, and  
bug fixes!

- Quickscript includes a new form of scripting in the form of "hook"  
functions that can be attached to existing events.

- Plots include `plot-inset` and `plot-legend-padding` parameters to  
control the amount of space left unused around the plot edge and plot  
legend.

## Thank You

Thank you to the people who contributed to this release:

Alex Harsányi, Ben Greenman, Bogdan Popa, Cameron Moy, Camille  
d’Alméras, D. Ben Knoble, Efraim Flashner, Eric S. Raymond, Fred Fu,  
Greg Hendershott, Gustavo Massaccesi, Jay McCarthy, jim, Joel Dueck,  
John Clements, Jon Eskin, Laurent Orseau, Lucas Sta Maria, mAdkins, Mark  
Hedlund, Matthew Flatt, Matthias Felleisen, Mike Sperber, Noah Ma, Oscar  
Waddell, Philip McGrath, Qifan Wang, Robby Findler, Ross Angle, Ryan  
Culpepper, Sam Tobin-Hochstadt, shenleban tongying, Shu-Hung You,  
Sorawee Porncharoenwase, Stephen De Gabrielle, Wing Hei Chan, xxyzz, and  
ZhangHao

## Feedback Welcome

---

<div class="post-metadata">

**Author:** ![benknoble](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/benknoble/32/16_2.png) [@benknoble](https://racket.discourse.group/u/benknoble)\
**Post date:** [November 10, 2023, 3:16pm UTC](https://racket.discourse.group/t/release-announcement-for-v8-11/2487/2 "2023-11-10T15:16:58Z")

</div>

> [@jbclements](#):
>
> DrRacket has indentation guides that provide visual cues indicating  
> how code is indented and grouped, accessible by using  
> (-shift-i).

The leading `-` in `-shift-i` makes me suspect there's either a missing word or something wrapped in `<>` that doesn't render well.

---

<div class="post-metadata">

**Author:** ![joeld](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/joeld/32/38_2.png) [@joeld](https://racket.discourse.group/u/joeld)\
**Post date:** [November 10, 2023, 3:27pm UTC](https://racket.discourse.group/t/release-announcement-for-v8-11/2487/3 "2023-11-10T15:27:42Z")

</div>

Very minor, inconsequential note — I always feel weird about being included in these — and given equal weight among people who did much more — for having done little to nothing. This time around I’m here because I [inserted](https://github.com/racket/racket/commit/feb3f1967ce48ff7a7e71bac1710066f98061db9) a single missing word in the docs.

I appreciate the thought behind automating the creation of this list; but if there was a way to opt a commit or PR out of that process, I would probably use it, so as not to diminish work of the other contributors that (to me) matter more. Not a big deal, just throwing it out there for your consideration.

---

<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:** [November 10, 2023, 7:02pm UTC](https://racket.discourse.group/t/release-announcement-for-v8-11/2487/4 "2023-11-10T19:02:50Z")

</div>

I hear what you're saying but I know that there are other people on this list who feel the same way (that their small contribution hardly merits a mention), and the goal of this list is, quite frankly, to encourage people to contribute! If this list contained thousands of people and looked like a wall of text I could maybe see your point, but the evil plan here is to make people feel good about contributing, and I don't think that culling this list would be more effective.

That's my opinion, anyway.

---

<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:** [November 10, 2023, 7:14pm UTC](https://racket.discourse.group/t/release-announcement-for-v8-11/2487/5 "2023-11-10T19:14:17Z")

</div>

You're right, and one of the weird things about this particular list is that it gets used in about six different contexts that all have different quoting/unquoting/formatting conventions. I think it would be an improvement in the discourse format just to post it as a text inclusion like this:

```scheme
----------------------------------------------------------------------

Racket version 8.11 is now available from

    https://racket-lang.org/

As of this release:

- Match clauses can include a #:do option to allow evaluation of code
  and bindings before a following #:when clause

- JSON Serialization supports indentation with an #:indent option to
  `write-json`

- An `initiate-sequence` function simplifies the creation of sequences.

- The `:do-in` form allows an inner definition sequence.

- The `redex-define` form allows pattern-matching in redex using a
  `define`-like syntax

- Racket and Chez Scheme use Robert L. Smith's "Algorithm 116" for
  division of complex numbers.

- DrRacket has indentation guides that provide visual cues indicating
  how code is indented and grouped, accessible by using
  (<menu-key>-shift-i).

- "Comment-out" menu items can be specific to the #lang used by the
  current file.

- Unused identifiers have a tooltip indicating that they have no bound
  occurrences.

- There are many other documentation improvements, optimizations, and
  bug fixes!

- Quickscript includes a new form of scripting in the form of "hook"
  functions that can be attached to existing events.

- Plots include `plot-inset` and `plot-legend-padding` parameters to
  control the amount of space left unused around the plot edge and plot
  legend.

## Thank You

Thank you to the people who contributed to this release:

Alex Harsányi, Ben Greenman, Bogdan Popa, Cameron Moy, Camille
d’Alméras, D. Ben Knoble, Efraim Flashner, Eric S. Raymond, Fred Fu,
Greg Hendershott, Gustavo Massaccesi, Jay McCarthy, jim, Joel Dueck,
John Clements, Jon Eskin, Laurent Orseau, Lucas Sta Maria, mAdkins, Mark
Hedlund, Matthew Flatt, Matthias Felleisen, Mike Sperber, Noah Ma, Oscar
Waddell, Philip McGrath, Qifan Wang, Robby Findler, Ross Angle, Ryan
Culpepper, Sam Tobin-Hochstadt, shenleban tongying, Shu-Hung You,
Sorawee Porncharoenwase, Stephen De Gabrielle, Wing Hei Chan, xxyzz, and
ZhangHao

Feedback Welcome
----------------------------------------------------------------------

```

I suppose this is really what scribble is for... I think maybe what I really want  
is a markdown-to-scribble conversion so that I can write them easily then convert them into a format which can format for different conventions? Okay, it looks like @lexi.lambda 's commonmark plus a scribble renderer would do this... OMG, my idea is literally extant, @shawnw has a package for this. Okay I should try it now. You folks are amazing.

---

<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:** [November 10, 2023, 7:26pm UTC](https://racket.discourse.group/t/release-announcement-for-v8-11/2487/6 "2023-11-10T19:26:56Z")

</div>

Also, I ... did not realize that markdown explicitly allows the use of html tags, so in fact my use of `<menu-key>` actually makes my `release-notes.txt` file problematic. IOW, I need to be quoting here anyway. TIL...

---

<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:** [November 10, 2023, 7:30pm UTC](https://racket.discourse.group/t/release-announcement-for-v8-11/2487/7 "2023-11-10T19:30:49Z")

</div>

And finally, another shout-out to @shawnw and @lexi.lambda ... the commonmark plus commonmark-to-scribble appears to do exactly what they're supposed to do, with absolutely no fuss. Nice!

---

<div class="post-metadata">

**Author:** ![shhyou](https://avatars.discourse-cdn.com/v4/letter/s/ccd318/32.png) [@shhyou](https://racket.discourse.group/u/shhyou)\
**Post date:** [November 10, 2023, 8:19pm UTC](https://racket.discourse.group/t/release-announcement-for-v8-11/2487/8 "2023-11-10T20:19:01Z")

</div>

> [@jbclements](#):
>
> The `redex-define` form allows pattern-matching in redex using a  
> `define`-like syntax

Very minor thing, is redex Redex or redex or PLT Redex?

---

<div class="post-metadata">

**Author:** ![shawnw](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/shawnw/32/1031_2.png) [@shawnw](https://racket.discourse.group/u/shawnw)\
**Post date:** [November 10, 2023, 10:04pm UTC](https://racket.discourse.group/t/release-announcement-for-v8-11/2487/9 "2023-11-10T22:04:37Z")

</div>

Good to know someone's finding that little project (I think I wrote it to answer a question someone asked here) useful.

---

<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:** [November 11, 2023, 4:03am UTC](https://racket.discourse.group/t/release-announcement-for-v8-11/2487/10 "2023-11-11T04:03:36Z")

</div>

Good call, it seems like PLT Redex is the more standard name. I've updated this bullet. Also, a quick proofread (ouch) highlights the fact that there are missing periods, and the "and so much more" bullet wasn't at the end.

Here's what I've got now:

```scheme
- Match clauses can include a #:do option to allow evaluation of code
  and bindings before a following #:when clause.

- JSON Serialization supports indentation with an #:indent option to
  `write-json`.

- An `initiate-sequence` function simplifies the creation of sequences.

- The `:do-in` form allows an inner definition sequence.

- The `redex-define` form allows pattern-matching in PLT Redex using a
  `define`-like syntax.

- Racket and Chez Scheme use Robert L. Smith's "Algorithm 116" for
  division of complex numbers.

- DrRacket has indentation guides that provide visual cues indicating
  how code is indented and grouped, accessible by using
  (\<menu-key\>-shift-i).

- "Comment-out" menu items can be specific to the #lang used by the
  current file.

- Unused identifiers have a tooltip indicating that they have no bound
  occurrences.

- Quickscript includes a new form of scripting in the form of "hook"
  functions that can be attached to existing events.

- Plots include `plot-inset` and `plot-legend-padding` parameters to
  control the amount of space left unused around the plot edge and plot
  legend.

- There are many other documentation improvements, optimizations, and
  bug fixes!

```

---

<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:** [November 14, 2023, 8:03pm UTC](https://racket.discourse.group/t/release-announcement-for-v8-11/2487/11 "2023-11-14T20:03:04Z")

</div>

@jbclements: I sent you an email about the release process / announcement several days ago. Could you confirm that you received it?

Also, I just noticed that Chez Scheme contributors (e.g. Eric S. Raymond) are listed as Racket contributors. Is that intentional? If so, are there other software dependencies whose contributors should be included too?

---

<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:** [November 14, 2023, 10:05pm UTC](https://racket.discourse.group/t/release-announcement-for-v8-11/2487/12 "2023-11-14T22:05:59Z")

</div>

Ugh, my sincere apologies for making you repeat yourself three times, that's not a good use of your time. I've responded to that email directly.

WRT the list of contributors, commits to Chez Scheme are (now?) appearing as commits on the Racket chain, and _-\> In general \<-_, I have no problem acknowledging their contributions to Racket as well. I'm happy to consider alternate strategies, though!

John

---

<div class="post-metadata">

**Author:** ![joeld](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/joeld/32/38_2.png) [@joeld](https://racket.discourse.group/u/joeld)\
**Post date:** [November 15, 2023, 2:55am UTC](https://racket.discourse.group/t/release-announcement-for-v8-11/2487/13 "2023-11-15T02:55:10Z")

</div>

That seems…odd. It would make as much sense/be equally weird, for example, to count people who contribute to `gcc` as Racket contributors. But given that the `racket/ChezScheme` repo is being mothballed, maybe this is the last affected release?

---

<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:** [November 15, 2023, 4:58am UTC](https://racket.discourse.group/t/release-announcement-for-v8-11/2487/14 "2023-11-15T04:58:03Z")

</div>

On the contrary, I think that the elimination of the separate racket/ChezScheme repo will mean that chez scheme commits are more visible, and I think that's what you're seeing now. I don't personally think that's too unreasonable; I think our relationship to Chez Scheme is much closer than our relationship to gcc. Specifically, I think that both Racket and Chez Scheme have made design accommodations for the other, and a substantial fraction of the last 15 commits on the Chez Scheme tree were made by Matthew Flatt. At the end of the day, I think our tent is big enough for all of the Chez Scheme contributors.

As I said before, though, I'm happy to consider alternate strategies; I'm trying to do whatever makes the most sense for the Racket community.

John

---

<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:** [November 15, 2023, 2:27pm UTC](https://racket.discourse.group/t/release-announcement-for-v8-11/2487/15 "2023-11-15T14:27:28Z")

</div>

> [@jbclements](#):
>
> At the end of the day, I think our tent is big enough for all of the Chez Scheme contributors.

While I certainly agree with this sentiment, we wouldn't want the Chez Scheme contributors to feel like they've been assimilated by the borg in lumping their contributions to Chez into the contributions to Racket. (Not sayin' they feel this way, only that that occurs to me.) After all, Chez was a well-established Scheme implementation before Racket/mzscheme even existed.

---

<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:** [November 15, 2023, 2:30pm UTC](https://racket.discourse.group/t/release-announcement-for-v8-11/2487/16 "2023-11-15T14:30:17Z")

</div>

> [@joeld](#):
>
> Very minor, inconsequential note — I always feel weird about being included in these — and given equal weight among people who did much more — for having done little to nothing. This time around I’m here because I [inserted](https://github.com/racket/racket/commit/feb3f1967ce48ff7a7e71bac1710066f98061db9) a single missing word in the docs.
> 
> I appreciate the thought behind automating the creation of this list; but if there was a way to opt a commit or PR out of that process, I would probably use it, so as not to diminish work of the other contributors that (to me) matter more. Not a big deal, just throwing it out there for your consideration.

Thinking about this: @jbclements -- is the script that collects the names somewhere public that might accept pull requests so that someone can add a way that people who feel uncomfortable can opt out?

---

<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:** [November 15, 2023, 5:28pm UTC](https://racket.discourse.group/t/release-announcement-for-v8-11/2487/17 "2023-11-15T17:28:45Z")

</div>

Definitely, it lives here:

> <https://github.com/racket/release-catalog/blob/master/scripts/get-contributors.rkt>

---

<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:** [November 26, 2023, 2:45am UTC](https://racket.discourse.group/t/release-announcement-for-v8-11/2487/18 "2023-11-26T02:45:51Z")

</div>

One idea related to @joeld’s concern about minor contributions: perhaps the release announcement can be more elaborated?

For example, [release announcements of Lean](https://github.com/leanprover/lean4/releases/tag/v4.2.0) consist of four parts: important changes, list of merged PRs, contribution frequency, and new contributors. Everything besides the curated important changes can be automated, so hopefully it won’t add burden to the release management (@jbclements in particular).

The list of merged PRs along with the contribution frequency would address @joeld’s concern that we currently give “equal weight among people who did much more — for having done little to nothing”.

The list of new contributors could also encourage new contributors to participate, as @jbclements wanted.

Racket doesn’t have a rule that all changes must be added via PRs though, so if we want to include @mflatt’s contributions which are usually directly committed to the repo, we would need to think of a better way to do that.

Is this a good idea? Also, if anyone wants to hack on it, feel free to!

---

<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:** [November 26, 2023, 4:48am UTC](https://racket.discourse.group/t/release-announcement-for-v8-11/2487/19 "2023-11-26T04:48:24Z")

</div>

I'm certainly open to this. Having a bunch of repos means that we will have to do a tiny bit more work than their one-liner contributor list, but looking only at the racket repo certainly produces something reasonable for that one repo:

```scheme
clements@XXXX:~/rktwork/checkout$ git log v8.10..v8.11 --pretty="%an" | sort | uniq -c | sort -rn
     53 Matthew Flatt
     23 Sorawee Porncharoenwase
     12 Wing Hei Chan
      7 shhyou
      6 Oscar Waddell
      5 Philip McGrath
      5 John Clements
      3 Stephen De Gabrielle
      3 Sam Tobin-Hochstadt
      2 sorawee
      2 Robby Findler
      2 Mark Hedlund
      2 Bogdan Popa
      1 ZhangHao
      1 xxyzz
      1 shenleban tongying
      1 Ryan Culpepper
      1 Ross Angle
      1 NoahStoryM
      1 LdBeth
      1 Joel Dueck
      1 jim
      1 Gustavo Massaccesi
      1 Greg Hendershott
      1 Eric S. Raymond
      1 Efraim Flashner
      1 Cameron Moy

```

And actually, I'm kind of astonished that it produces something as sensible as this, given that ... uh... okay, I just re-read the docs for git log, and it turns out it does exactly the same thing that we've written by hand for our commit counting, so there may be a chance we can pitch all of that code, which would be fantastic. I suppose I'd have to script checking out all of the repos, but that shouldn't be too awful.

Okay, coming back to your actual suggestion: sure?

---

<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:** [November 26, 2023, 4:49am UTC](https://racket.discourse.group/t/release-announcement-for-v8-11/2487/20 "2023-11-26T04:49:08Z")

</div>

I'd like to point out, in case it's not obvious, that this is just my opinion.

[Next page](https://racket.discourse.group/t/release-announcement-for-v8-11/2487.md?page=2)
