Racket v8.6 Release Thread

The release process for v8.6 will begin in about a week. If you have any new features that you want in and are relatively close to being done, now is a good time to do that.

Upcoming dates:
- 29th: Branch day, merge window starts
- 15th: Merge window ends, testing starts
- 22nd: Testing ends

(NB: both this message and branch day are earlier than usual, to accommodate summer travel.)


The release process for v8.6 has begun: release checkpoints have been created for all packages in the main distribution, and release branches have been created when necessary. You can go on using master branches as usual. The main Racket repo's is now bumped to v8.6.0.1 (to avoid having two different trees with the same version).

If you have any bug-fixes and changes (including history updates) that need to go in the release then make sure to specify that in the commit message by using the word merge or release or mail the relevant repo manager [1]) the commit SHA1s. Do not push commits directly to release branches.

Please make sure that code that you're responsible for is as stable as possible, and let me know if there is any new work that should not be included in this release.


The time between now and the end of the merge window is for fixing new errors that prevent proper functioning of major components and that show up during the preparation for a release. You can also finalize piece of work that is not yet complete, but please avoid merging new features.

Note that nightly builds will go on as usual (starting from v8.6.0.1 and going up as usual), and pre-release builds will be available shortly at


Please tell me if you think that this release is significant enough that it should be announced on the users list for wider testing.

[1] https://github.com/racket/racket/wiki/release-repo-managers

Upcoming dates:
- 15th: Merge window ends, testing starts
- 22nd: Testing ends

1 Like

As a note for the future, this part:

doesn't really make sense any more.

Yep, I just saw that too. I've removed it from the checklist for future releases. Thanks!

Testing for the v8.6 release
  (using the v8.5.900 release candidate build)

Search for your name on the checklist page to find relevant items, either
reply when you finish an item (please indicate which item/s is/are done),
or check it off yourself on the checklist page. Also, if you have any
commits that should have been picked, make sure that the changes are in.

Be sure to finish your testing by the 27th. Otherwise the release
will move on without your input.

The checklist page is at:

Release candidates are at:

Please use these installers (or source bundles) -- don't test from
your own git clone (don't test the `master' branch by mistake!).
To get the tests, you can do this:

  cd ...racket-root...
  ./bin/raco pkg install -i --auto main-distribution-test

Is it known yet when Racket v8.6 will be officially released? I have been trying to wait for this before requesting that DrRacket be updated in campus labs for Fall 2022, and time is getting short… :sunglasses:

(Sorry if I missed the announcement — the last comment I could find related to this on Racket Discussions was from July 20th…)

— Sharon

1 Like

Any moment now. We know that schools/colleges need to install the sw soon ..

Sharon, the release version should be available in a matter of hours. However, our current plan is to delay the announcement of the final version until documentation is available and uploaded. This is the first time we're doing this, so ... we'll see if there are any hiccups. However, if you're in a time crunch, it might be possible to download and install the new version before it's officially announced.

Small problem with the download page :

Yes. Waiting till everything is ready so when we do announce it is a better experience for upgrades/new users. Stay tuned :grinning:

i think the point about the currently confusing state of the download page is good one, though. If we do this for 8.7, maybe we can add a message or something to clarify.


Also Background Expansion seems broken on 8.6 release :frowning: (stuck on 'running / purple') It was working on the last current I believe. I'll try the current again.

I am on (7 22) and background expansion works for me, though slowly. What’s your date?

I had the background expansion stuck on purple on 8.6 release, downloaded this morning. I'm trying to reproduce the problem with minimal code.

I have on occasion experienced “purple stuckness” but I have always been
able to get unstuck by restarting drracket.

My current code base is a couple of 1000 lines, and background expansion is
slow for some files and not so slow on others. But it does work.

My experience with re-creating the stuck state is miserable. Thanks for trying.

I was able to build 8.5 from the source for unix.

This 8.6 release stops in the build phase for compiler and platform combination

  • gcc (GCC) 12.1.0
  • gcc (Debian 10.2.1-6) 10.2.1 20210110
  • Linux 5.15.32-v8+ aarch64 GNU/Linux
Checking primitive arity information
gcc -pthread -Ics/c -Ics/c/ -DINITIAL_COLLECTS_DIRECTORY='"'/usr/local/export/2022/Projects/racket-8.6/collects'"' -DINITIAL_CONFIG_DIRECTORY='"'/usr/local/export/2022/Projects/racket-8.6/etc'"' -g -O2 -Wall -o cs/c/grmain.o -c cs/c/grmain.c
gcc -g -O2 -Wall -pthread -o cs/c/raw_gracketcs cs/c/grmain.o cs/c/boot.o cs/c/ChezScheme/tarm64le/boot/tarm64le/libkernel.a cs/c/ChezScheme/tarm64le/lz4/lib/liblz4.a cs/c/rktio/librktio.a -pthread -rdynamic -ldl -lm  -lrt  -lncurses -lz
cs/c/raw_racketcs -O info'@'compiler/cm -l- setup --boot setup-go.rkt cs/c/compiled ignored cs/c/ignored.d cs/c/embed-boot.rkt --target tarm64le cs/c/raw_gracketcs cs/c/gracketcs cs/c/petite-v.boot cs/c/scheme-v.boot cs/c/racket-v.boot
gcc -pthread -g -O2 -Wall -o cs/c/starter start/ustart.c -pthread -ldl -lm  -lrt  -lncurses -lz
start/self_exe.inc: In function ‘get_self_path.constprop’:
cc1: warning: function may return address of local variable [-Wreturn-local-addr]
In file included from start/ustart.c:104:
start/self_exe.inc:30:8: note: declared here
   30 |   char buf[256], *s = buf;
      |        ^~~te
1 Like

That looks like a warning, and not an error. Can you include the rest of the output?

I think I remember having seen this warning as the last output from a build that was actually successful, which I found confusing. I don't remember what part of Racket I was building at the time or how, though.

The output after calling


lists 1270 lines. Those lines were the last 10.

The first 60 lines are

     1	$ make
     2	mkdir -p bin
     3	cc -O2 -DZUO_LIB_PATH='"'".././zuo/lib"'"' -o bin/zuo ./zuo/zuo.c
     4	bin/zuo . all
     5	cd cs/c/rktio/ && ../../../rktio/configure --prefix=/usr/X/Applications/racket-8.6 CC=gcc CFLAGS=-g" "-O2" "-Wall LDFLAGS=" "-pthread LIBS=-ldl" "-lm"  "-lrt"  "-lncurses" "-lz AR=ar ARFLAGS=rc RANLIB=ranlib WINDRES=windres CPPFLAGS="  "-pthread --enable-pthread --enable-iconv
     6	checking build system type... aarch64-unknown-linux-gnu
     7	checking host system type... aarch64-unknown-linux-gnu
     8	checking target system type... aarch64-unknown-linux-gnu
     9	checking for gcc... gcc
    10	checking whether the C compiler works... yes
    11	checking for C compiler default output file name... a.out
    12	checking for suffix of executables... 
    13	checking whether we are cross compiling... no
    14	checking for suffix of object files... o
    15	checking whether we are using the GNU C compiler... yes
    16	checking whether gcc accepts -g... yes
    17	checking for gcc option to accept ISO C89... none needed
    18	checking for ranlib... ranlib
    19	checking for fmod in -lm... yes
    20	checking for dlopen in -ldl... yes
    21	checking how to run the C preprocessor... gcc -E
    22	checking for grep that handles long lines and -e... /bin/grep
    23	checking for egrep... /bin/grep -E
    24	checking for ANSI C header files... yes
    25	checking for sys/types.h... yes
    26	checking for sys/stat.h... yes
    27	checking for stdlib.h... yes
    28	checking for string.h... yes
    29	checking for memory.h... yes
    30	checking for strings.h... yes
    31	checking for inttypes.h... yes
    32	checking for stdint.h... yes
    33	checking for unistd.h... yes
    34	checking for intptr_t... yes
    35	checking for uintptr_t... yes
    36	checking whether byte ordering is bigendian... no
    37	checking for struct dirent.d_namelen... no
    38	checking for struct dirent.d_namlen... no
    39	checking for xlocale.h... no
    40	checking for xlocale functions... yes
    41	checking for getaddrinfo... yes
    42	checking iconv.h usability... yes
    43	checking iconv.h presence... yes
    44	checking for iconv.h... yes
    45	checking iconv is usable... yes
    46	checking for nl_langinfo (CODESET)... yes
    47	checking for mbsrtowcs... yes
    48	checking for poll... yes
    49	checking for epoll... yes
    50	checking for inotify... yes
    51	configure: creating ./config.status
    52	config.status: creating Makefile
    53	config.status: creating rktio_config.h
    54	cd cs/c/ChezScheme/pb/lz4/lib && make liblz4.a
    55	make[1]: Entering directory '/usr/local/export/2022/Projects/racket-8.6/src/cs/c/ChezScheme/pb/lz4/lib'
    56	compiling static library
    57	make[1]: Leaving directory '/usr/local/export/2022/Projects/racket-8.6/src/cs/c/ChezScheme/pb/lz4/lib'
    58	gcc -pthread -DPORTABLE_BYTECODE -Ics/c/ChezScheme/pb/boot/pb -Ics/c/ChezScheme/pb/c -IChezScheme/c/ -Ics/c/ChezScheme/pb/lz4/lib -g -O2 -Wall -pthread -o cs/c/ChezScheme/pb/c/statics.o -c ChezScheme/c/statics.c
    59	gcc -pthread -DPORTABLE_BYTECODE -Ics/c/ChezScheme/pb/boot/pb -Ics/c/ChezScheme/pb/c -IChezScheme/c/ -Ics/c/ChezScheme/pb/lz4/lib -g -O2 -Wall -pthread -o cs/c/ChezScheme/pb/c/segment.o -c ChezScheme/c/segment.c
    60	gcc -pthread -DPORTABLE_BYTECODE -Ics/c/ChezScheme/pb/boot/pb -Ics/c/ChezScheme/pb/c -IChezScheme/c/ -Ics/c/ChezScheme/pb/lz4/lib -g -O2 -Wall -pthread -o cs/c/ChezScheme/pb/c/alloc.o -c ChezScheme/c/alloc.c

The upload widget will only accept picture file types. Is there a preferred text pasting service to share 1270 lines on?

Any place you usually use to paste output should work. Probably the lines immediately before what you posted are the most relevant.