Raku++ on RISC-V and more

Raku++ now fully works on the RISC-V architecture. Today’s release v5.3.0 includes a binary that you can just download and run.

Some time ago, Alexey, one of the most enthusiastic Raku++ users, asked me if the compiler could run on that kind of computer. The answer was not that obvious: on the one hand, the sources are just a set of C++ files, which should be portable, but on the other hand, I have no RISC-V machine at hand to try it on.

The path to success took a few steps:

  • Alexey compiled Raku++ on real hardware, and it worked.
  • I tried to compile in a GitHub CI pipeline somehow. The job was killed after 3 hours, so that was not an option.
  • I tried to cross-compile on a Mac, but where could I test it?
  • So I ordered a real device, the Banana Pi BPI-F3, which is “an industrial grade RISC-V development board”.
  • About a dozen commits to make things better and faster on the platform.

Compilation on the device itself turned out to be slow, so in the end, Claude figured out how to build it reliable compilation in a GitHub CI job.

From now on, all you need to do is following the usual installation instructions, and the installer will download the archive and install Raku++ on the board:

$ curl -fsSL https://raku.online/install.sh | sh
 ==> downloading https://github.com/ash/rakupp/releases/latest/download/rakupp-linux-riscv64.tar.gz
     sha256 ok (8714f11c08cb2650aafe2fc8e934bcf81f01662a9975ab9146b6a8f0c715c2bd)
 ==> unpacked into /home/ash/.rakupp
 Install rakupp under the name "raku" as well? [Y/n] y
 ==> installed the name raku
 ==> Raku++ 5.3.0 (2026-10-09) riscv64-linux

And here we are:

bananapif3:~:% raku
Raku++ 5.3.0 — \h for help, ^D to exit
> 'Hello, Raku!'.say
Hello, Raku! 

The first run showed about 98% of Roast passing, so the next dozen commits were dedicated to align with the platform. Currently, the Roast rate is back to 100.00%.

A RISC-V board running Raku++

Overall, Raku++ works now on a number of platforms and operating systems:

Prebuilt release archives

OSCPUNotes
macOS 11 (Big Sur) or newerApple Silicon (arm64);
Intel (x86-64)
One universal binary built with Apple Clang
Linuxx86-64Needs glibc 2.28 or newer (built in a manylinux 2.28 container); libstdc++ is linked in statically
LinuxARM64 (aarch64)Needs glibc 2.28 or newer: Raspberry Pi, Graviton, Ampere, Docker on Apple Silicon
LinuxRISC-V (riscv64)Needs glibc 2.35 or newer (Ubuntu 22.04, Debian 13). Cross-compiled; CI tests it under QEMU, and riscv64.yml runs it on real hardware when started by hand. --cnp kernels run interpreted here
OpenBSDx86-64Built in a QEMU VM in CI, with the base clang and libc++
Windowsx64MSVC with a static CRT. Installed with a setup wizard (rakupp-setup-windows-x64.exe) or a PowerShell one-liner
Windowsx64 (MinGW-w64)A separate ZIP for MinGW-w64 / MSYS2 toolchains

On Linux, x86-64 and ARM64 also get .deb packages.

Other ways to get it

  • Docker: ghcr.io/ash/rakupp for linux/amd64 and linux/arm64.
  • Homebrew: on macOS.
  • Nix / NixOS: a flake; NixOS can’t run the generic Linux binary. CI is nix.yml.
  • GNU Guix: the repo is also a Guix channel. CI is guix.yml.
  • Python wheels on PyPI (pip install rakulang): macOS, Linux x86-64 and aarch64, and Windows.

Build from source only

  • FreeBSD and NetBSD: the install one-liner detects them and prints the build commands instead of downloading a binary.
  • Alpine and other musl Linux: the installer script runs there, but the prebuilt binaries need glibc, so you build from source.
  • Anything else: another BSD, another Linux architecture, or a system too old for the archives. The build needs only CMake and a C++17 compiler, with no third-party libraries.

JavaScript / WebAssembly targets

  • Raku.js (WebAssembly): runs in the browser. Each release attaches a single-threaded build with the playground and showcase bundles.
  • JS backend (transpiling Raku to JS): the output runs under Bun, Node, Deno, or in a browser through <script>. Inside the program, $*VM reports js.

P. S. It’s interesting how the history repeats. In 2018, I tried to run Perl 6 on an Orange Pi board (linked post in Russian), which seems to be a RISC V device too.

Leave a Reply

Your email address will not be published. Required fields are marked *