Wheels Inventory¶
Autobahn|Python provides pre-built binary wheels for multiple Python implementations, versions, and platforms. This page documents all available wheel variants and their characteristics.
Overview¶
Wheels are built automatically for every release via GitHub Actions and published to:
GitHub Releases - https://github.com/crossbario/autobahn-python/releases
All wheels include full WebSocket and WAMP functionality. Platform-specific builds may include NVX (Native Vector Extensions) for accelerated WebSocket frame masking/unmasking.
What’s Next / Future Directions¶
The Python packaging ecosystem is evolving rapidly, and we’re committed to staying at the forefront of these developments:
Wheel Variants - We’re following the development of WheelNext and the transition from platform tags to build variants as described in Python Wheels: From Tags to Variants. This will enable more flexible wheel distribution strategies, particularly for optional binary optimizations like NVX.
PyX Packaging - We plan to fully support PyX (Astral’s next-generation Python package format) once it becomes available. PyX promises to address many current limitations in Python packaging, including better handling of optional native extensions and build variants.
Expanded Platform Coverage - As GitHub Actions and QEMU support improve, we aim to expand our wheel coverage to additional platforms and architectures where there’s user demand.
These initiatives will allow us to provide even better wheel distribution strategies, particularly for use cases like NVX acceleration where users should have the choice between pure Python (maximum compatibility) and optimized binary wheels (maximum performance).
Supported Platforms¶
x86_64 (AMD64) Platforms¶
Linux x86_64¶
Pure Python wheels (without NVX acceleration):
Python Version |
Wheel Tag Pattern |
NVX Acceleration |
|---|---|---|
CPython 3.11 |
|
❌ No (pure Python) |
CPython 3.12 |
|
❌ No (pure Python) |
CPython 3.13 |
|
❌ No (pure Python) |
CPython 3.14 |
|
❌ No (pure Python) |
PyPy 3.11 |
|
❌ No (pure Python) |
Note: Linux x86_64 wheels are built WITHOUT NVX to ensure maximum compatibility across different Linux distributions. Users on modern x86_64 systems can still benefit from NVX by installing from source or using platform-specific builds.
macOS ARM64 (Apple Silicon)¶
Binary wheels with NVX acceleration:
Python Version |
Wheel Tag Pattern |
NVX Acceleration |
|---|---|---|
CPython 3.11 |
|
✅ Yes (binary) |
CPython 3.12 |
|
✅ Yes (binary) |
CPython 3.13 |
|
✅ Yes (binary) |
CPython 3.14 |
|
✅ Yes (binary) |
PyPy 3.11 |
|
✅ Yes (binary) |
Windows x86_64¶
Binary wheels with NVX acceleration:
Python Version |
Wheel Tag Pattern |
NVX Acceleration |
|---|---|---|
CPython 3.11 |
|
✅ Yes (binary) |
CPython 3.12 |
|
✅ Yes (binary) |
CPython 3.13 |
|
✅ Yes (binary) |
CPython 3.14 |
|
✅ Yes (binary) |
PyPy 3.11 |
|
✅ Yes (binary) |
ARM64 (aarch64) Platforms¶
Linux ARM64 (CPython)¶
Binary wheels with NVX acceleration (manylinux_2_28):
Python Version |
Wheel Tag Pattern |
NVX Acceleration |
|---|---|---|
CPython 3.11 |
|
✅ Yes (binary) |
CPython 3.13 |
|
✅ Yes (binary) |
Compatibility: Requires glibc 2.28 or later (Debian 10+, Ubuntu 18.04+, RHEL 8+)
Linux ARM64 (PyPy) - Debian 12¶
Binary wheels with NVX acceleration (manylinux_2_36):
Python Version |
Wheel Tag Pattern |
NVX Acceleration |
|---|---|---|
PyPy 3.11 |
|
✅ Yes (binary) |
Compatibility: Requires glibc 2.36 or later (Debian 12+, Ubuntu 22.04+)
Linux ARM64 (PyPy) - Debian 13¶
Binary wheels with NVX acceleration (manylinux_2_38):
Python Version |
Wheel Tag Pattern |
NVX Acceleration |
|---|---|---|
PyPy 3.11 |
|
✅ Yes (binary) |
Compatibility: Requires glibc 2.38 or later (Debian 13+, Ubuntu 24.04+)
Note: ARM64 wheels are built via QEMU emulation on x86_64 runners. They are fully functional native ARM64 binaries.
Source Distribution¶
In addition to binary wheels, a source distribution is provided for all platforms:
autobahn-{version}.tar.gz
The source distribution includes:
All Python source code
FlatBuffers schema files (.fbs and .bfbs)
Generated Python wrapper classes
Build configuration (pyproject.toml)
Documentation sources
NVX Acceleration¶
NVX (Native Vector Extensions) provides hardware-accelerated XOR operations for WebSocket frame masking/unmasking, offering up to 100x performance improvement on supported CPUs.
NVX is automatically enabled in binary wheels on:
✅ macOS ARM64 (all wheels)
✅ Windows x86_64 (all wheels)
✅ Linux ARM64 (all wheels)
❌ Linux x86_64 (pure Python for compatibility)
Runtime Control:
NVX can be disabled at runtime via environment variable:
# Disable NVX acceleration
export AUTOBAHN_USE_NVX=0
python your_app.py
# Enable NVX acceleration (default for binary wheels)
export AUTOBAHN_USE_NVX=1
python your_app.py
CPU Requirements¶
NVX acceleration requires:
x86_64: AVX2-capable CPU (Intel Haswell/2013+ or AMD Excavator/2015+)
ARM64: NEON-capable CPU (all modern ARM64 CPUs)
If the CPU doesn’t support the required instruction set, Autobahn falls back to pure Python implementation automatically.
Installation¶
Installing from PyPI¶
Standard installation (uses pre-built wheels when available):
pip install autobahn
With optional dependencies:
# Full installation with all serializers and crypto
pip install autobahn[all]
# Specific feature sets
pip install autobahn[serialization] # CBOR, MessagePack, FlatBuffers
pip install autobahn[encryption] # TLS, WAMP-cryptosign, WAMP-cryptobox
pip install autobahn[compress] # WebSocket compression
Installing from GitHub Releases¶
Download specific wheels from GitHub Releases:
# Example: Download and install Linux ARM64 wheel
wget https://github.com/crossbario/autobahn-python/releases/download/v25.10.1/autobahn-25.10.1-cp311-cp311-manylinux_2_28_aarch64.whl
pip install autobahn-25.10.1-cp311-cp311-manylinux_2_28_aarch64.whl
Building from Source¶
To build with NVX acceleration from source:
# Clone repository
git clone https://github.com/crossbario/autobahn-python.git
cd autobahn-python
# Install build tools
pip install uv
curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s
# Build with NVX
export AUTOBAHN_USE_NVX=1
just build-all
# Wheels will be in dist/
ls -la dist/
Wheel Naming Convention¶
Wheel filenames follow the PEP 427 naming convention:
{distribution}-{version}(-{build tag})?-{python tag}-{abi tag}-{platform tag}.whl
Example breakdown:
autobahn-25.10.1-cp313-cp313-manylinux_2_28_aarch64.whl
^^^^^^^^ ^^^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^
│ │ │ │ └─ Platform: manylinux 2.28 on ARM64
│ │ │ └─────── ABI: CPython 3.13 stable ABI
│ │ └───────────── Python: CPython 3.13
│ └───────────────────── Version: 25.10.1
└────────────────────────────── Package: autobahn
Verifying Wheels¶
All wheels are cryptographically signed and can be verified:
# Verify wheel integrity
pip install autobahn --no-deps --dry-run
# Check wheel metadata
unzip -l autobahn-25.10.1-cp313-cp313-linux_x86_64.whl | grep -E "\.dist-info"
Source distribution integrity verification reports are included in GitHub Releases.
Build Infrastructure¶
x86_64 Wheels¶
Built on GitHub-hosted runners using native compilation:
Linux x86_64: ubuntu-24.04 runners
macOS ARM64: macos-15 runners (Apple Silicon)
Windows x86_64: windows-2022 runners
ARM64 Wheels¶
Built via QEMU emulation on ubuntu-latest runners using Docker containers:
CPython wheels: Official PyPA manylinux images (quay.io/pypa/manylinux_2_28_aarch64)
PyPy wheels: Custom Debian-based manylinux images with PyPy pre-installed
The ARM64 build process:
Set up QEMU user-mode emulation for ARM64
Build wheels inside ARM64 Docker containers
Repair wheels with auditwheel for manylinux compatibility
Upload to PyPI and GitHub Releases