Brioche Project Update - June 2025

Published on

By Kyle Lacy

In a surprising twist, this month has been all about getting aarch64 support in place!

Status report

Status report

aarch64-linux support

aarch64-linux support

Last month, I wrote about my thoughts on getting aarch64 support in place. Actually, it was shortly after publishing that Project Update that I started re-thinking things a bit…

The end goal for cross-platform support is still the same as from the May Project Update. But I also know it might take a long time to implement everything needed for that! Meanwhile, the more packages we get that are only being built for x86-64 today, the more work it’ll be to add support for aarch64 in the future. So I decided to do a very simple version of cross-platform support now. After all, the end-goal for cross-platform support will require a breaking change (probably), so now’s the right time to get an implementation in place as an MVP.

The “cross-platform MVP” is very simple: there’s a new std.CURRENT_PLATFORM const. It has the value "x86_64-linux" if you’re running on x86-64 Linux, or the value "aarch64-linux" if you’re running on aarch64 Linux. Pretty straightforward.

Most packages shouldn’t need to use std.CURRENT_PLATFORM at all. std.toolchain and all the compilers / interpreters / etc. were updated to support both platforms, and everything cascades from there and “just works” (usually)!

The most exciting part though? (🥁 drumroll 🥁)

All published packages have now been built for aarch64!*

*with the exception of the package bugstalker. BugStalker doesn’t support aarch64 (yet), but it markets itself as a “modern debugger for Linux x86-64”, so fair enough!

aarch64 support hasn’t been included in a release yet, but if you install Brioche from source on an aarch64-based Linux machine, all packages can be installed and used from the registry!

The GitHub Actions workflow in brioche-packages now runs builds for both platforms. x86-64 and aarch64 are treated as equals, so all packages will need to build successfully for both platforms before packages are published (or with a magic comment to skip unsupported packages by platform, like for bugstalker).

TSDoc for package documentation

TSDoc for package documentation

In brioche-packages#671 and brioche-packages#675, @jaudiger went through and updated all the doc comments across all packages to use TSDoc by convention.

The existing docs were basically Markdown. TSDoc has a ton of support in the TypeScript ecosystem, and it should play much nicer with existing TypeScript tooling. It also unlocks some options down the line, e.g. easily generating static doc pages for published packages.

Faster git cloning

Faster git cloning

brioche-packages#703 by @jaudiger uses the new git clone --revision option from git v2.49.0 when cloning a specific commit from a repo. GitLab’s coverage of git v2.49.0 has a good explainer about the new option. Not only does this simplify git clones, but it’s faster too! (Check the PR for some benchmark numbers)

More live-update updates

More live-update updates

@jaudiger opened quite a few PRs to clean up, fix, and improve live updates in the past month. The biggest improvement came in brioche-packages#717, which added a new std.liveUpdateFromNpmPackages to easily live-update packages based on the version from the NPM registry!

Housekeeping

Housekeeping

New packages

New packages

Since the last update, there are 30 new packages:

Brioche core updates

Brioche core updates