Racket v8.14 is now available

We are pleased to announce Racket v8.14 is now available from download.racket-lang.org.

As of this release:

  • 64-bit ARM Windows is one of the standard pre-built downloads.

  • The compiler/demod language integrates demodularization into the program rather than an external tool. Using the language approach cooperates with other Racket tools and allows demodularization to be used on libraries. Additionally, demodularization handles submodules and can prune definitions, significantly shrinking the size of some programs. (#lang compiler/demod)

  • The contract-in form enables contracts to be specified in an importing module. (8.6 Attaching Contracts to Values)

  • The #%declare form supports the #:flatten-requires and #:unlimited-compile keywords (#%declare)

  • Identifiers such as case-λ, match-λ and λ are equivalent to their Latin-alphabet equivalents (case-lambda, match-lambda, and lambda) in more contexts, including uses of match.

  • The hash-filter function allows the use of a predicate to select a sub-table of a hash table. (hash-filter)

  • The module browser can perform filtering on submodules. See this little movie created by @robby

  • The raco test command-line form respects the current-test-invocation-directory parameter, and shows well-formed module paths in its output. (current-test-invocation-directory)

  • Racket CS allows the use of in-memory boot files.

  • The raco/testing collection brings together a variety of testing-related functions and forms. (raco/testing)

  • This release also includes many bug-fixes and documentation updates!

  • NOTE: This release (and version 8.13) have a known build problem that affects the builtpkgs source bundle on Windows. In order to avoid this problem, use a pre-built bundle or build using a source bundle other than the "builtpkgs" one. Nightly builds do not suffer from this problem.

Thank you

The following people contributed to this release:

Alex Knauth, Alexander Shopov, Ben Greenman, Bert De Ketelaere, Bob Burger, Bogdan Popa, Cadence Ember, Carl Gay, D. Ben Knoble, Gregory Rosenblatt, Gustavo Massaccesi, John Clements, John Sullivan, Jordan Johnson, luistung, Matthew Flatt, Matthias Felleisen, Noah Ma, Philip McGrath, Robby Findler, Ryan Culpepper, Sam Tobin-Hochstadt, Sergey Fedorov, Sorawee Porncharoenwase, Wing Hei Chan, and ZhangHao.

Racket is a community developed open source project and we welcome new contributors. See racket/README.md to learn how you can be a part of this amazing project.

Feedback Welcome

Questions and discussion welcome at the Racket community Discourse or Discord

Please share

If you can - please help get the word out to users and platform specific repo packagers

Racket - the Language-Oriented Programming Language - version 8.14 is now available from https://download.racket-lang.org

See https://blog.racket-lang.org/2024/08/racket-v8-14.html for the release announcement and highlights.
10 Likes

The snap package is currently building and should be live in about an hour. Congratulations on the release

2 Likes

As of this release:
64-bit ARM Windows is one of the standard pre-built downloads

Are there any future plans for adding a port for RISC-V systems? I have my eye on BPI-F3 with 8GB RAM, but as far as I can see almost nothing that I'm interested in, works on it. Can't even get information if Emacs (GUI) can be installed there.

2 Likes

Racket supports RISC-V already: it just doesn’t have pre-built binaries at https://download.racket-lang.org (so it’s in the same state as Aarch64 Windows before this release).

You can of course build from source, but, if you prefer a pre-built package, you can get it from Debian Trixie (Testing):

The Guix package (which I maintain) also supports RISC-V, though there might currently be a bug compared to the Debian packaging. Guix can be used as a full GNU/Linux distribution, or it can be installed as an add-on package manager on top of the distribution of your choice.

1 Like

I'm not aware of what state Aarch64 Windows was before. I just quoted that as: Okay, you have this, but how about RISC-V?

I just need some additional confirmation about the first option:

I'm used to build Racket from "Unix Source + built packages", on my Orange Pi 5+ (Aarch64), but I was not aware that this should also work on RISC-V 64 SBCs as well?
Or, do I need to build from "Unix Source"?

As for Guix (you gave me that Idea when I was complaining about Ubuntu snaps), I actually tried to install GUIX OS on my x86 computer, and it just would not work, so I gave up. I mean it looked like it is installed okay, but would simply not boot into the newly installed OS.

I don't know what processor chio the BPI-F3 has, but a serious vulnerability ha been
found is one manufacturer's RISC-V chip:

GhostWrite vulnerability exploits architectural bug in RISC-V CPU to gain root access

It seems that the vector operations they provide operate on real memory instead of
virtual memory. It's possible to leverage this into an exploit that easily
achieves root access by an ordinary user without privileges.

The only way to block this is to block the entire set of vector instructions, which
costs serious performance on code that would use them.

I don't know what chip is on the board you're interested in.
Check. It may be completely safe from this problem. But check before buying.

RISC-V seems to have enough careless manufacturers that there's a whole new
panoply of potential hazards. I'm hoping that some sources will turn out
to survive by being more competent than others.

-- hendrik

Hi @hrvoje064 :grin:

It is fair to say there are no current plans to add RISC-V to the pre-built downloads.

I have built from source and while it is time consuming, it is straightforward. Built packages do make this faster.

This is an open source software community. Everyone here answering questions is a volunteer. That means be nice when someone doesn’t have the exact answers you are looking for and if you want something to happen the best way is to do it yourself.

There are no guarantees but you always learn something😂. So I say go get that riscv banana pi sbc, try building Racket from source and let us know how you get on.

Best regards
Stephen

PS It is worth noting the nightly snapshots have a wider range of pre-built binaries - but no riscv builds yet🥲
https://users.cs.utah.edu/plt/snapshots/

Thanks for the lengthy answer. The last paragraph is exactly what I was looking for "go get that RISC-V banana pi sbc...".
I'm not looking for completely pre-built download, because I'm used to build from Unix sources+built packages on Orange pi 5+. On that one, it takes 20min to build & install. Banana pi build (if it does work) will take much longer. Probably x4. And that's assuming that I can build from Unix sources+built packages. If I have to try from Unix sources only, that will probably take much longer.

Best regards
Hrvoje

1 Like

For what it's worth, this is about T-head (Alibaba) 4 core chips used in LicheePi 4A SBCs. The one I'm interested in is SpaceMit K1 (8 core) chip.

Hrvoje

Just to follow up. I just received Banana Pi BPI-F3 8GB SBC today, and have carried out some tests. This is just a quick test to see if what I'm interested in works at all. I will have to find out how to install the Bianbu (Debian for SpacemiT K1 chips) on eMMC storage on board the SBC. As it is, I just tested with Bianbu running from an SD card, so apart from being slow (as in very slow), everything I was interest in just works. Absolutely no problems. Emacs installed as a Debian package in 5 minutes, and it works normally. Racket took much longer. I downloaded sources and compiled/installed that as a regular Unix installation. It compiled without any problems, but it took hours. Something like 3.5 hours. Anyway it appears that it all works as expected. I hope that once I install Bianbu on eMMC module, and shift compilation to nvme SSD (which is already there, I just forgot to use it for this first compilation) that the speed will improve. As it stands now, running compiled programs is okay (I installed math-quiz package, and did not notice any slowdowns), but writing new programs in DrRacket would be a challenge. Just starting DrRacket takes ages.

Best regards
Hrvoje