# Racket v8.7 Release Thread

**URL:** <https://racket.discourse.group/t/racket-v8-7-release-thread/1343>\
**Category:** Internals\
**Tags:** release-management, dev\
**Created:** [October 2, 2022, 3:38pm UTC](https://racket.discourse.group/t/racket-v8-7-release-thread/1343 "2022-10-02T15:38:22Z")\
**Posts on this page:** 1\
**Showing post:** 9

<div class="post-metadata">

**Author:** ![LiberalArtist](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/liberalartist/32/151_2.png) [@LiberalArtist](https://racket.discourse.group/u/LiberalArtist)\
**Post date:** [November 2, 2022, 12:09am UTC](https://racket.discourse.group/t/racket-v8-7-release-thread/1343/9 "2022-11-02T00:09:22Z")

</div>

All I know about `version/check` is that it once gave me trouble when I had network issues 🙂 (I can't find the bug report I thought I'd written at the time, but here's the PR that fixed it: [version/check: use https; actually enforce timeout; guard reading params by LiberalArtist · Pull Request #3713 · racket/racket · GitHub](https://github.com/racket/racket/pull/3713))

You inspired me to do a bit more Git sleuthing. From what I can see, it looks like the current code dates from 2005 (PLT Scheme v300), when it replaced some older code that also dealt with package versions (for PLaneT packages, I guess?) and other stuff: [Removed old version code, new version is greatly simplified. · racket/racket@88bb2b3 · GitHub](https://github.com/racket/racket/commit/88bb2b39ee369ce76c725bc74df7a658f137ff32)

The only use of `check-version` I know about is in:

> <https://github.com/racket/drracket/blob/ddb2531ba94f1d05f365480fdbdc5882fee87b4c/drracket/version/tool.rkt#L139-L144>

which is supported by string constants from:

> <https://github.com/racket/string-constants/blob/292cd733b23137917cf61fc0047e6af942193204/string-constants-lib/string-constants/private/english-string-constants.rkt#L1615-L1619>

From all of that, it seems like, of the possible results from `get-version`, the ``ok`, ``(newer ,version)`, and ``(error ,message [,additional-info])` cases aren't affected at all by whether we use the `alpha` field at [https://download.racket-lang.org/version.txt](https://download.racket-lang.org/version.txt), and DrRacket doesn't distinguish the ``(newer ,version ,alpha)` case (meaning ` You have an old version, please upgrade to `version' you may consider also the alpha version`) from the ``(newer ,version)` case.

That leaves only the ``(ok-but ,version)` case, meaning `You have a fine stable version, but note that there is a newer alpha`. Note that this is _not_ the result you would get running 8.6.900 if 8.6.901 became available! DrRacket does have UI for this case, but it is used only when the `Help|Check for Updates…` menu item is explicitly invoked, never for automatic checks, even if the user has enabled them.

More broadly, the string constant, code, and documentation talks about `a newer alpha-release`, but that's not really a term we use outside of this library. (I don't know about the c. PLT Scheme v300 era.) I've been mentally translating it as "release candidate" (a.k.a. "pre-release"), but it could also conceivably mean "snapshot build" or something.

I haven't found the code that actually creates or updates the [https://download.racket-lang.org/version.txt](https://download.racket-lang.org/version.txt) file, so I'm not sure how easy or difficult it would be to change things, if changes were wanted.

* * *

I don't have a strong opinion about this.

I can see it being mildly useful to be able to programmatically tell if there's a release candidate out. If [https://download.racket-lang.org/version.txt](https://download.racket-lang.org/version.txt) answered that question, I would make the answer usable in Guix tooling—but I wouldn't change the status quo on my account! If that is indeed the functionality in question, it seems like there are other ways to get that information, maybe from [https://pre-release.racket-lang.org/installers/table.rktd](https://pre-release.racket-lang.org/installers/table.rktd) or by checking if a `release` branch exists.

One thing we definitely **should not** do is change [https://download.racket-lang.org/version.txt](https://download.racket-lang.org/version.txt) to no longer list an alpha version at all (even if we continue to list a redundant one): that would cause errors in old versions of Racket.

Unless anyone has other thoughts, I'd be inclined to just document that `check-version` is not currently a reliable way to find out about "release candidate", "pre-release", or "snapshot" versions and leave the release process as-is.

---

_[View the full topic](https://racket.discourse.group/t/racket-v8-7-release-thread/1343)._
