Installation & compatibility
Python
Install the package from PyPI:
The package requires CPython 3.11 or later and supports CPython only.
Pre-built wheels
| Platform and architecture | Regular CPython 3.11+ | Free-threaded CPython 3.14t | Free-threaded CPython 3.15t+ |
|---|---|---|---|
| Linux x86_64 (glibc 2.28+) | ✓ | ✓ | ✓ |
| Linux ARM64 (aarch64, glibc 2.28+) | ✓ | ✓ | ✓ |
| Linux x86_64 (musl 1.2+, such as Alpine) | ✓ | — | — |
| Linux ARM64 (aarch64, musl 1.2+, such as Alpine) | ✓ | — | — |
| macOS arm64 (Apple silicon, macOS 11+) | ✓ | ✓ | ✓ |
| Windows x86_64 | ✓ | ✓ | ✓ |
Regular CPython uses an abi3 wheel; one wheel covers every version from 3.11 onward, and pip selects the matching wheel automatically.
Other platforms
CPython on platforms such as Intel Mac, Windows ARM, and Linux with glibc older than 2.28 or musl older than 1.2 has no pre-built wheel, and neither does free-threaded CPython on musl-based Linux such as Alpine. pip downloads the source distribution and tries to build it locally; this requires a current stable Rust toolchain (for example installed with rustup). CI validates source builds only on Linux x86_64.
Unsupported environments
- PyPy and other non-CPython implementations are unsupported; there are no PyPI wheels for them, and CI does not build or test them.
- Free-threaded CPython 3.13t is unsupported: it has no wheel, and building from source fails. Free-threaded CPython requires 3.14t or later.
- Subinterpreters are unsupported, and a successful import does not mean support. A subinterpreter with its own GIL (for example, one created with
concurrent.interpreters) raisesImportErrorwhen importingfastbase91. One that shares the main interpreter's GIL (for example, one created through the C API by an application that embeds Python) imports it without an error, but the extension's classes and exception type are the same objects in every interpreter, not isolated copies. Usefastbase91in the main interpreter; subinterpreter use is not tested.
Free-threaded Python
Install with a free-threaded interpreter, such as python3.14t; pip selects the matching wheel:
Check that the GIL remains disabled after import:
This prints False when the GIL remains disabled; starting with PYTHON_GIL=1 or -X gil=1 enables it and prints True. See Free-threading for details.
Installed versions
The two values are the Python package version and the linked Rust core version, respectively.
Rust
Add the core crate:
The minimum supported Rust version is 1.81.
Features
| Feature configuration | Available APIs |
|---|---|
std (default; includes alloc) |
encode, decode, encode_into, decode_into, streaming Encoder/Decoder, max_encoded_len, and max_decoded_len |
alloc only |
encode, decode, encode_into, decode_into, streaming Encoder/Decoder, max_encoded_len, and max_decoded_len |
Neither (no_std, no allocator) |
encode_into, decode_into, streaming Encoder/Decoder, max_encoded_len, and max_decoded_len |
CI checks a bare-metal build for the thumbv7em-none-eabihf target. See Usage for feature setup and Rust examples.
Versions
The Python package fastbase91 on PyPI and the Rust crate fastbase91-core on crates.io use independent version numbers. The core version bundled in a Python wheel is available as CORE_VERSION; see Changelog for version history.