Skip to main content

A11

A11 is a Python action and streaming runtime backed by a C++20 implementation. The Python package in a11/ is the public, language-native API; cpp/a11/ contains the native implementation, and cpp/thread/ contains its cooperative fiber runtime.

This guide covers the development build, tests, and release wheel matrix. Run all commands from the repository root.

Python and native architecture

Runtime state lives in C++. Public classes such as Status, Time, Duration, wire records, ChunkStoreReader, ChunkStoreWriter, AsyncNode, NodeMap, Action, ActionRegistry, and Session are the bound native class objects, not parallel Python implementations. Thin modules under a11/ add Python protocols: awaitables and async iteration, subclass-friendly callback adaptation, object serialization, and Pydantic-compatible validation, JSON, copy, and schema methods.

LocalChunkStore is a deliberately thin forwarding adapter around the native in-memory store. Keeping that virtual Python boundary lets applications subclass it for custom stores and fault injection while all storage and synchronization remain native. Python serializer/deserializer callbacks remain in a11.data.serialization; the chunks they consume and produce are native binary values.

Import from the ordinary public modules (a11, a11.actions, a11.data.types, and so on). Synchronous and asynchronous native failures cross the boundary as a11.status.StatusException with structured details preserved.

Prerequisites

The local build needs:

  • Python 3.11 or newer and uv;
  • CMake 3.28 or newer, Ninja, a C++20 compiler, Git, pkg-config, Curl, Make, and Perl;
  • static Boost.Context/Fiber/Thread, OpenSSL, nghttp2, nlohmann-json, and uvw;
  • GoogleTest for the native test build;
  • pybind11 if A11_BUILD_PYTHON=ON in a direct CMake build.

CMake fetches the pinned Abseil version and, when it is not installed, libdatachannel. The latter is only used for WebRTC.

On macOS, a suitable Homebrew setup is:

brew install \
  boost cmake googletest libnghttp2 ninja nlohmann-json openssl@3 \
  pkg-config pybind11 uv uvw

Linux package names vary by distribution. The project can build the main static dependencies reproducibly instead of relying on system packages:

export A11_WHEEL_ARCH="$(uname -m)"
export A11_DEPS_PREFIX="/tmp/a11-editable-deps-${A11_WHEEL_ARCH}"
export CMAKE_PREFIX_PATH="${A11_DEPS_PREFIX}${CMAKE_PREFIX_PATH:+:${CMAKE_PREFIX_PATH}}"
export OPENSSL_ROOT_DIR="${A11_DEPS_PREFIX}"
export PKG_CONFIG_PATH="${A11_DEPS_PREFIX}/lib/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}"

# Keep this set on macOS so the dependencies and extension have the same
# deployment target.
export MACOSX_DEPLOYMENT_TARGET="${MACOSX_DEPLOYMENT_TARGET:-13.0}"

scripts/bootstrap_wheel_deps.sh

That script builds Boost, OpenSSL, nghttp2, nlohmann-json, and uvw. GoogleTest must still be installed separately for BUILD_TESTING=ON. Keep the exported paths in the shell used for CMake, uv sync, and editable rebuilds.

Editable Python build

Create an environment and install the project in editable mode:

uv venv --python 3.12

export CMAKE_ARGS="-DA11_REQUIRE_STATIC_DEPS=ON -DA11_FETCH_MISSING_DEPS=ON"
uv sync --locked --group dev

Any supported Python from 3.11 onward can replace 3.12. uv sync maps the Python modules directly to a11/, while scikit-build compiles and installs the ABI-specific native modules into .venv. Consequently:

  • edits to .py files are visible to the next Python process immediately;
  • edits to C++ files are not visible until the editable extension is rebuilt.

For an ordinary C++ edit, rebuild and install the extension with the editable loader hook:

.venv/bin/python -c \
  'import a11._native as native; native.__loader__.rebuild()'

Run tests in a new process after this command. The rebuild process imports the old extension to reach its loader, and a loaded native module cannot be replaced within that same process.

The hook only runs cmake --build and cmake --install against the build tree that uv sync already configured under build/editable/<wheel-tag>; it does not configure that tree. When the tree is absent — a fresh clone before the first uv sync, or after build/ was deleted or cleaned (see the note in Native C++ build) — the rebuild fails with:

Error: not a CMake build directory (missing CMakeCache.txt)

Recreating the editable build tree fixes this. The same command is also required after changing pyproject.toml, the CMake install layout, build options, or the Python interpreter, since each invalidates the configured tree or the editable metadata:

uv sync --locked --group dev --reinstall-package a11

The active files can be checked without relying on shell activation:

.venv/bin/python - <<'PY'
from pathlib import Path
import a11
import a11._native

root = Path.cwd().resolve()
python_source = Path(a11.__file__).resolve()
native_module = Path(a11._native.__file__).resolve()

print("Python source:", python_source)
print("native module:", native_module)
assert python_source.is_relative_to(root)
PY

It is expected for the editable native module to live under .venv; the explicit rebuild above installs the current C++ output there.

Native C++ build

Use a separate Debug tree for C++ tests. Turning the Python module off here keeps this build independent of the editable extension; the editable workflow above compiles and tests the binding layer separately.

This Debug tree and the editable extension's tree both live under build/ (build/ itself and build/editable/<wheel-tag>, respectively). Removing or cleaning build/ — for example to reconfigure this Debug tree from scratch — therefore also destroys the editable tree, so the next native.__loader__.rebuild() reports a missing CMakeCache.txt. Recreate the editable tree with uv sync --locked --group dev --reinstall-package a11 afterward.

cmake -S . -B build -G Ninja \
  -DCMAKE_BUILD_TYPE=Debug \
  -DBUILD_TESTING=ON \
  -DA11_BUILD_PYTHON=OFF \
  -DA11_REQUIRE_STATIC_DEPS=ON \
  -DA11_FETCH_MISSING_DEPS=ON

cmake --build build -j 8
ctest --test-dir build --output-on-failure

If CMAKE_PREFIX_PATH was not exported, pass the dependency prefix explicitly while configuring:

cmake -S . -B build -G Ninja \
  -DCMAKE_PREFIX_PATH="${A11_DEPS_PREFIX}" \
  -DOPENSSL_ROOT_DIR="${A11_DEPS_PREFIX}" \
  -DCMAKE_BUILD_TYPE=Debug \
  -DBUILD_TESTING=ON \
  -DA11_BUILD_PYTHON=OFF

The native suite consists of thread_test, which exercises the cooperative runtime, and a11_core_test, which aggregates the A11 component tests. A focused test can be run directly with a GoogleTest filter, for example:

build/cpp/thread/thread_test \
  --gtest_filter='ThreadSelectTest.*:ThreadFiberTest.*'

To verify that the installed CMake package can be consumed outside the source tree, run:

scripts/smoke_cmake_install.sh build

When changing toolchains or dependency prefixes, rerun the full configure command above with cmake --fresh in place of cmake. A normal source edit only needs cmake --build.

Testing both layers

pytest alone does not rebuild C++. For a change that touches C++ or a binding, use this sequence:

# 1. Compile and test the C++ implementation.
cmake --build build -j 8
ctest --test-dir build --output-on-failure

# 2. Compile and install that source revision for the editable Python package.
#    This command must finish before pytest starts in its separate process.
#    If it reports a missing CMakeCache.txt, the editable build tree is not
#    configured — recreate it with the reinstall command in "Editable Python
#    build", then rerun this step.
.venv/bin/python -c \
  'import a11._native as native; native.__loader__.rebuild()'

# 3. Exercise the cross-language boundary, then the complete Python contract.
.venv/bin/python -m pytest -q a11/tests/test_native_bindings.py
.venv/bin/python -m pytest -q

# 4. Check exported native targets when public headers or linkage changed.
scripts/smoke_cmake_install.sh build

Use the following minimum checks for each kind of change:

Changed files Required checks
a11/**/*.py Full pytest suite
cpp/thread/** Rebuild; thread_test; editable native rebuild; full pytest
cpp/a11/** Rebuild; a11_core_test; editable native rebuild; full pytest
cpp/python/** Editable native rebuild; native binding tests; full pytest
Public headers or CMake linkage Native suites and install smoke test
pyproject.toml or wheel scripts Editable reinstall and at least one wheel build/audit

Formatting and lock-file checks are:

find cpp -type f \( -name '*.cc' -o -name '*.h' \) \
  -exec clang-format --dry-run --Werror {} +
.venv/bin/python -m black --check a11 scripts
uv lock --check
bash -n scripts/bootstrap_wheel_deps.sh scripts/smoke_cmake_install.sh

Building wheels

The matrix is configured in pyproject.toml and orchestrated by scripts/build_wheels.py:

  • CPython 3.11, 3.12, 3.13, 3.14, and 3.15;
  • macOS x86_64 and arm64;
  • manylinux x86_64 and aarch64.

The wheels are architecture-specific. Do not create universal2 wheels: Boost.Context includes architecture-specific assembly.

Install the development tools first:

uv sync --locked --group dev

macOS wheels are built against the official python.org CPython framework builds, which carry the correct deployment target for portable wheels. cibuildwheel uses them in place and refuses to install them system-wide outside CI, so install each targeted version from python.org before building on macOS — CPython 3.11, 3.12, 3.13, 3.14, and 3.15, under /Library/Frameworks/Python.framework/Versions/. The uv-managed interpreters in .venv cannot stand in for them. Confirm what is present with:

ls /Library/Frameworks/Python.framework/Versions/

To iterate on a subset locally without every framework installed, skip the missing macOS versions (this produces an incomplete matrix, not a release):

CIBW_SKIP="cp311-macosx_* cp314-macosx_*" \
  .venv/bin/python scripts/build_wheels.py --platform macos

Then build the host-required matrix:

.venv/bin/python scripts/build_wheels.py

On macOS, this builds both macOS architectures and both Linux architectures. Docker must be running for Linux builds. On Linux, it builds the Linux matrix only. Building a non-native Linux architecture requires Docker with the appropriate binfmt/QEMU support.

Build only one platform when iterating:

.venv/bin/python scripts/build_wheels.py --platform macos
.venv/bin/python scripts/build_wheels.py --platform linux

Linux cannot build the macOS matrix. An alternative output directory can be selected with --output-dir; the default is dist/:

.venv/bin/python scripts/build_wheels.py \
  --platform linux --output-dir dist/linux

List the builds without compiling them:

.venv/bin/python -m cibuildwheel \
  --print-build-identifiers --platform macos
.venv/bin/python -m cibuildwheel \
  --print-build-identifiers --platform linux

Python 3.15 is enabled through cibuildwheel's cpython-prerelease group until stable images are available. Each platform/architecture gets an isolated static dependency prefix and ABI-specific build/wheel/<wheel-tag> directory, while editable builds use build/editable/<wheel-tag>. A temporary wheel interpreter therefore cannot invalidate the editable rebuild tree, and a native module from one interpreter cannot leak into another wheel.

Every wheel is tested by scripts/audit_wheel.py inside cibuildwheel's clean test environment. The audit:

  • imports a11._native and the Abseil status caster;
  • requires exactly one ABI-specific a11/_native module;
  • rejects universal wheels;
  • rejects non-system dynamic dependencies; and
  • rejects absolute or otherwise non-relocatable RPATH/RUNPATH entries.

Cross-compiled macOS wheels cannot be executed on the opposite host architecture, so their runtime test is skipped there. Run the matrix on both macOS architectures when release policy requires a native execution test for each wheel.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

a11_kit-0.1.1.tar.gz (367.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

a11_kit-0.1.1-cp314-cp314-manylinux_2_28_x86_64.whl (6.7 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

a11_kit-0.1.1-cp314-cp314-manylinux_2_28_aarch64.whl (6.6 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

a11_kit-0.1.1-cp314-cp314-macosx_13_0_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.14macOS 13.0+ x86-64

a11_kit-0.1.1-cp314-cp314-macosx_13_0_arm64.whl (5.3 MB view details)

Uploaded CPython 3.14macOS 13.0+ ARM64

a11_kit-0.1.1-cp313-cp313-manylinux_2_28_x86_64.whl (6.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

a11_kit-0.1.1-cp313-cp313-manylinux_2_28_aarch64.whl (6.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

a11_kit-0.1.1-cp313-cp313-macosx_13_0_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.13macOS 13.0+ x86-64

a11_kit-0.1.1-cp313-cp313-macosx_13_0_arm64.whl (5.3 MB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

a11_kit-0.1.1-cp312-cp312-manylinux_2_28_x86_64.whl (6.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

a11_kit-0.1.1-cp312-cp312-manylinux_2_28_aarch64.whl (6.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

a11_kit-0.1.1-cp312-cp312-macosx_13_0_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.12macOS 13.0+ x86-64

a11_kit-0.1.1-cp312-cp312-macosx_13_0_arm64.whl (5.3 MB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

a11_kit-0.1.1-cp311-cp311-manylinux_2_28_x86_64.whl (6.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

a11_kit-0.1.1-cp311-cp311-manylinux_2_28_aarch64.whl (6.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

a11_kit-0.1.1-cp311-cp311-macosx_13_0_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.11macOS 13.0+ x86-64

a11_kit-0.1.1-cp311-cp311-macosx_13_0_arm64.whl (5.3 MB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

File details

Details for the file a11_kit-0.1.1.tar.gz.

File metadata

  • Download URL: a11_kit-0.1.1.tar.gz
  • Upload date:
  • Size: 367.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.12

File hashes

Hashes for a11_kit-0.1.1.tar.gz
Algorithm Hash digest
SHA256 6d5e62e077a469abe41feef6a3b7ebc21b3bddbaa3c3a7f8c9ccdc2f287accb6
MD5 fb5e7cc3b4549a15f6da15098aa0c0dd
BLAKE2b-256 4ceea5fd9db2876c94304fe9f193acced935518183521b9acb679973e4ab06aa

See more details on using hashes here.

File details

Details for the file a11_kit-0.1.1-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for a11_kit-0.1.1-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8943584b9ff0239053c431a4fdc157a3242ea13339efa8f5cd21fad4dee917fc
MD5 000aa0cb6fb31b33005a2d9bebc8466a
BLAKE2b-256 93cea977990548a825574b95a73c45e1287d3b646f82ce4238d71a59efeaa81a

See more details on using hashes here.

File details

Details for the file a11_kit-0.1.1-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for a11_kit-0.1.1-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5dfe9734db480305bbf5c314cb63d54a18f8af7e6411e3bb5c0d8e5a1c16437a
MD5 c93996a36fc9153ecd2919c351b9b83d
BLAKE2b-256 9c07b542c131a598f3fa32271f53c68b15f540b5fc12093bf8109ebd2fe384a1

See more details on using hashes here.

File details

Details for the file a11_kit-0.1.1-cp314-cp314-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for a11_kit-0.1.1-cp314-cp314-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 25458a0c9b6b191572c269e1fb48ede6c4719bee3f027c8db59cdf79d86642bd
MD5 8d069105f3d26c3016fd51dd69cd6f5d
BLAKE2b-256 3bc087e9d7d3721c09d53ff38b721aa2fcf21526efdaf73f61dab733d56cee1a

See more details on using hashes here.

File details

Details for the file a11_kit-0.1.1-cp314-cp314-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for a11_kit-0.1.1-cp314-cp314-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 85c3de1963c3099b32f4d6af28b31fbc8dad433a7567c36051344e75f2ac6d14
MD5 47f21b067807a020b5cb9cd2056df0c6
BLAKE2b-256 661ec1395403bbc5aa4a71dc79f47daff9a2211de77c834267f93597bbb090e1

See more details on using hashes here.

File details

Details for the file a11_kit-0.1.1-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for a11_kit-0.1.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 708ad6548df62f4abfadc2f29d0062d98bbb2aa577377e11a44c36b05e796e5b
MD5 b55b1015c0cde1e78c11e46b2354a7d4
BLAKE2b-256 a48b5de5e3917e7c8a8e01601a773f65caf5aa5a75ddf9e7ef328eab4e85b5a0

See more details on using hashes here.

File details

Details for the file a11_kit-0.1.1-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for a11_kit-0.1.1-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 136d3ba155234a1f384bf73999171580dcdfcfcda6c23108e34754e3f6e33ca3
MD5 4fe43cbb4a8b9a3f3fcbb867d461e4da
BLAKE2b-256 bc9c2cd9d0203bc17a1f45c627b8173605664bb1dfc3a90ce5a50d36b5386819

See more details on using hashes here.

File details

Details for the file a11_kit-0.1.1-cp313-cp313-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for a11_kit-0.1.1-cp313-cp313-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 365e2a77cb214973b02c5187678f143854145d6d0d73130055b80a63ca7c44e0
MD5 5f304ddd13309b6651788bfcb9816fb0
BLAKE2b-256 195756ad4dc38d46b3c2a78eb3db24bfb1b5ef0c141539ed59a353b21fa7cc83

See more details on using hashes here.

File details

Details for the file a11_kit-0.1.1-cp313-cp313-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for a11_kit-0.1.1-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 d524890578c7378cbff027be7ce40fee7a8a935a27cb7b21b17df705f0778744
MD5 ec4eb8e93c5a550355c2f8e0254d167d
BLAKE2b-256 32b815e254d4aa6319484aa2c9d72b33322525bbb1fe2ed6221e3365b396cdee

See more details on using hashes here.

File details

Details for the file a11_kit-0.1.1-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for a11_kit-0.1.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e5a4fcc0f6d729b9df52cac87d31853d28e6de35b01070c7b4047ae75f9f31c4
MD5 a7ee0c5c8838b64adedccc384525fb63
BLAKE2b-256 8d27cd593933d14ca7d1e110ba74f259a058cb49ee5bec6410501c4fb0ab0d9f

See more details on using hashes here.

File details

Details for the file a11_kit-0.1.1-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for a11_kit-0.1.1-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6b1ad845452593d2d222e9dd0cdbad683fcda09c807643e55392075c208857f6
MD5 61b3cea9dd80275e2ab24af6b76441c7
BLAKE2b-256 7af67f3ee3274fc6a90f0479efb734058a3957d39ba7fb16db118fbfa2783775

See more details on using hashes here.

File details

Details for the file a11_kit-0.1.1-cp312-cp312-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for a11_kit-0.1.1-cp312-cp312-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 c406d0089fddd4462486988cb59cb7484b1725ce2440a4af3627ea0aeaf4834c
MD5 2a8be63e0faf662ef4b7f906601feba9
BLAKE2b-256 0a4d3446111375805626e43752b63f54af9c5ebffb1aae0234a0fbf956d20e6e

See more details on using hashes here.

File details

Details for the file a11_kit-0.1.1-cp312-cp312-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for a11_kit-0.1.1-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 ccb2f8d4fb99e1a5103733e9b56b4960c4ac18b85dceec493a55073e19c02ca3
MD5 456402e746bad11eadfbeee32407edde
BLAKE2b-256 18775ff88b6a8b5b1b35f022d8d71c545c13e0a5eaa46c2718b697cd667da2a7

See more details on using hashes here.

File details

Details for the file a11_kit-0.1.1-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for a11_kit-0.1.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1798b58e18e445a2f73f0ad588f58cb2df20aef794d5d0870b2986c1e55b3fe5
MD5 5e33485f4c7f6d31f7475bf565097a3a
BLAKE2b-256 e272342d8a531587a9585adfe4820ca4cf2c8ca9cde3411fc4821c4b6eccdef8

See more details on using hashes here.

File details

Details for the file a11_kit-0.1.1-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for a11_kit-0.1.1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6d64f16c9fd7bbf72368c7b12aec4f125d9f14cfbbd0564ce99dd7740083cb71
MD5 528429d35ca4af6f5ac09b7035122f90
BLAKE2b-256 57425a033aae4659d7219e16d0cb52f745f13f0e7c9174df462c9287167831b4

See more details on using hashes here.

File details

Details for the file a11_kit-0.1.1-cp311-cp311-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for a11_kit-0.1.1-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 b75daea8e1dc45ef7b34348eaf488ce2fca3c9cecfff4fea46f17b07841a5ea4
MD5 8c386f2ba2227999182d0f6a7b762adc
BLAKE2b-256 fd3baa712330e1253c015c41280afab1871ef8061e36856335a67f7619b6da5c

See more details on using hashes here.

File details

Details for the file a11_kit-0.1.1-cp311-cp311-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for a11_kit-0.1.1-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 7a38c376d26f527d77622f30e9646e1f9b3813754d361a2be6ffdc1f330f48c5
MD5 fe878cc9f8b1c453f9ebd04b7267c2ea
BLAKE2b-256 7e835051effb6b97e29ed446fd263bdd52416332a47e3165540987cba2f4bcd3

See more details on using hashes here.

Release history Release notifications | RSS feed

0.5.6

17 files

0.5.5

17 files

0.5.4

17 files

0.5.3

17 files

0.5.2

17 files

0.5.1

17 files

0.5.0

17 files

0.4.6

17 files

0.4.4

17 files

0.4.2

17 files

0.4.1

17 files

0.3.3

17 files

0.3.2

17 files

0.3.1

17 files

0.3.0

17 files

0.2.5

17 files

0.2.3

17 files

0.2.2

17 files

0.2.1

17 files

0.2.0

17 files

0.1.8

17 files

0.1.7

17 files

0.1.6

17 files

0.1.5

16 files

0.1.4

16 files

0.1.3

8 files

0.1.2

8 files

This release

0.1.1 This release

17 files

0.1.0

3 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page