v0.5.2
Zaneham/Boothv0.5.2Aug 8, 2026by github-actions[bot]
AI Summary
This release corrects versioning errors and fixes critical compiler bugs that previously allowed invalid code to compile and run silently. It introduces a new backend architecture, installation support via CMake, and prebuilt binaries for all major platforms.
Key Highlights
- Corrects versioning from the erroneous v5.01 to v0.5.2 and ensures the compiler reports the correct version.
- Fixes semantic error handling across backends so invalid code no longer produces silent failures.
- Refactors backend contract to `be_desc_t`, making it easier to add new targets.
- Adds `make install` and CMake package configuration for downstream integration.
- Distributes statically linked prebuilt binaries for Linux, macOS, and Windows.
New Features
- Backend contract refactoring
- CMake installation support with `booth_add_kernel()`
- Prebuilt binaries for all platforms
- Coverage reporting (74.1% lines, 58.4% branches)
Full Release Notes
Version 0.5.2. First, a correction. The last release went out tagged v5.01, which was meant to be 0.5.1 and wasn't, and it left Booth looking four major versions further along than it actually is. It isn't. This release puts the numbering back where it belongs, and sorry to anyone who pinned the old one or took the version at face value. The tag stays where it is so nothing breaks underneath you, but the compiler now reports what it is. The theme this cycle, without meaning to be, was the compiler telling the truth. Semantic errors used to be printed and then ignored by every mode except `--sema`, so the backend ran on source that had already been rejected, wrote an output file and exited zero. Asking for several backends at once wrote all of them over the same `-o` path and left you whichever finished last, under the name you chose, again exiting zero. Metal quietly narrowed a double-precision kernel to float and said nothing, which is a real problem if you were counting on the precision. `--amdgpu` ignored `-o` entirely and mixed a diagnostic into the assembly on stdout. All four are fixed, and all four had been sitting there being cheerfully wrong for a while. The structural change is the backend contract. Every target now sits behind a `be_desc_t` and registers itself in one list, and a backend owns its own command line rather than reaching into a shared config struct and the driver's argument loop. Adding a target used to mean reading 420 KB of AMD backend to work out what was expected; now it means reading one header and copying the skeleton. `main.c` lost about a third of its length in the process, and the frontend stopped needing to know what an AMD target enum is. Booth also installs now. `make install` puts `kath`, the message catalogues and a CMake package config into a prefix, so a downstream project can `find_package(Booth)` and compile kernels as part of its own build with `booth_add_kernel()`. There is a worked example under `examples/cmake/` and CI builds it against a staged install on every push, along with a check that the target list in the package config hasn't drifted from what the backends actually accept. Getting Booth no longer requires being able to build it. Every release now carries prebuilt binaries for Linux, macOS and Windows, statically linked so they have no runtime dependencies whatsoever, with checksums. Unpack and run. This mattered more than I realised: the Windows build had been quietly depending on MinGW's `libssp-0.dll`, so handing someone the binary would not have worked on a machine without a toolchain, which is exactly the machine they wanted it for. There are coverage numbers for the first time, 74.1% of lines and 58.4% of branches, reported by CI on every PR. That immediately turned up the SSA register allocator having never been executed by a test at all, and the six fixtures now pinning its behaviour also pin a real bug in it, which is at least honest. Thanks to Jorge Galvez, whose do-concurrent ocean benchmarks found three genuine frontend bugs in an afternoon, and who let me test against his code. Thanks to @maou3434 for the bare HIP warp and lane intrinsics, which is their first contribution here and a very welcome one. And thanks to @FileDelta for asking a simple question about the runtimes that turned over considerably more than either of us expected. The full itemised changelog for this release is in [CHANGELOG.md](https://github.com/Zaneham/Booth/blob/master/CHANGELOG.md). Binaries below need no dependencies and no toolchain. Unpack and run. `SHA256SUMS` has the checksums.