Download BXM

Each archive holds both tools, bxm-canon and bxm-memo, plus the Canon library and C header, the format spec with its test vectors, and the license files. The links always point to the latest release.

System Download
Linux, x86-64 bxm-linux-amd64.tar.gz
Linux, ARM64 bxm-linux-arm64.tar.gz
macOS, Apple silicon bxm-darwin-arm64.tar.gz
macOS, Intel bxm-darwin-amd64.tar.gz
Windows, x86-64 bxm-windows-amd64.zip

To check a download, compare it with SHA256SUMS.

Canon for JavaScript

The bxm-canon package for Node 18+ and browsers is attached to every release:

npm install https://github.com/softdevstudio/bxm/releases/latest/download/bxm-canon-js.tgz

It holds the Canon core compiled to WebAssembly, with an ES module, a CommonJS build and TypeScript types. How to use it.

Canon for Python

Wheels for Python 3.9 and later, on Linux x86-64 and ARM64, macOS (Apple silicon and Intel) and Windows x86-64, are attached to every release. pip picks the right one:

pip install bxm-canon --find-links https://github.com/softdevstudio/bxm/releases/expanded_assets/v0.3.0

How to use it.

Install

Unpack the archive and put the two binaries somewhere on your PATH:

tar xzf bxm-linux-amd64.tar.gz
sudo cp bxm-linux-amd64/bxm-canon bxm-linux-amd64/bxm-memo /usr/local/bin/
bxm-canon version
bxm-memo version

On macOS the first run of a downloaded binary may be blocked by Gatekeeper. Allow it under System Settings, Privacy & Security, or remove the quarantine flag with xattr -d com.apple.quarantine bxm-canon bxm-memo.

What’s in the Archive

File What it is
bxm-canon The Canon command: encode, decode, check, hash, diff, fmt
bxm-memo The Memo command: run, explain, list, gc, clear
lib/ The Canon library, static and shared, for linking from C or another language
include/bxm_canon.h The C header
spec/ The Canon format spec and its conformance vectors
LICENSE, NOTICE, THIRD_PARTY_LICENSES.md The license files

Build From Source

You need Rust (stable) for Canon and Go 1.22 or later for Memo.

git clone https://github.com/softdevstudio/bxm
cd bxm/canon && cargo build --release      # target/release/bxm-canon
cd ../memo && go build ./cmd/bxm-memo       # ./bxm-memo

The Rust crate builds the static and shared libraries too. Older releases and their notes are on the releases page.