Skip to content

OAAX CPU v2.0.0

Latest

Choose a tag to compare

@ayoubassis ayoubassis released this 29 Oct 15:02
· 4 commits to main since this release
dd350eb

OAAX reference implementation 2.0.0

The reference CPU runtime and conversion toolchain for the OAAX 2.0 specification. Use it to try OAAX, or as the starting point for a new accelerator implementation.

What's new

  • OAAX 2.0 C API (oaax_runtime.h), replacing the 9-function v1 interface: multi-model loading, per-model config, structured RuntimeStatus codes and a runtime_get_info() diagnostic call.
  • Breaking: the v1 header runtime_core.hpp is removed. v1 hosts must move to the 2.0 API.
  • 19 security issues fixed (2 critical, 6 high, 7 medium, 4 low), among them a double free and a leak in the worker loop, exit() called inside the shared library, path validation of --onnx-path, the toolchain container running as root, and unpinned CI actions and Python dependencies.
  • Test framework: pytest suites for conversion, Docker end to end and YOLO models, C++ runtime tests, and an OAAX vs. ONNX Runtime benchmark over 9 YOLO variants.
  • README pipeline diagram, logs.json format docs and THIRD_PARTY_NOTICES.txt.

Downloads

Binaries are in the OAAX bucket, not attached to this page. Built by CI from this tag's commit dd350eb.

Artifact Platform Size SHA-256
Runtime Linux x86_64 8.1 MB f3b71a075b0db7bbc164ca8a3029e719e71a3bcf896ba29232e150ee7a9bc920
Runtime Linux aarch64 7.0 MB 2f26e2bf10b757c4f639f24695e5900865cf6c9cc669fbad128a79f764e551dc
Runtime Windows x86_64 4.9 MB 9b655d87927d4bdad7f4c39e27a3ce48de531b2b522e9138227769e101fd3bb4
Conversion toolchain Docker image, x86_64 796 MB df66ce96c266fa366aac20f044edc9614af5de17a14b2dc9a35e22d8cd34007c

Download and verify in one step with oaax-manager:

uvx oaax-manager fetch runtime cpu      # this machine's platform
uvx oaax-manager fetch toolchain cpu    # prints the `docker load` command to run

Known issues

Planned for a 2.0.x patch. Details in the linked issues.

  • #45: the runtime aborts at process exit if runtime_cleanup() was not called. Always call it.
  • #46: runtime_enqueue_input accepts requests that do not match the model and silently loses them.
  • #47: memory grows with each init / load_models / cleanup cycle (about 1 MB per cycle).
  • #48: smaller runtime behaviours (retrieve_output(-1) after cleanup, stale get_error, generic status codes).
  • #49: the toolchain writes into its input directory, accepts an empty .onnx and leaves no log on failure.

Full changelog: CHANGELOG.md.


Release notes drafted with AI assistance (Claude) and reviewed by a maintainer.