v0.2.0
What's Changed
Added
- Python API (
edgefirst-ara2on PyPI) — complete PyO3 bindings with:- Session, Endpoint, and Model wrappers with full API parity
- numpy tensor I/O (
set_input_tensor,get_output_tensor,dequantize) - DMA-BUF file descriptor access (
input_tensor_fd,output_tensor_fd) for
zero-copy GPU preprocessing withedgefirst-hal.import_image() - DVM metadata API (
read_metadata,read_labels,has_metadata) - Python exception hierarchy (
Ara2Error→LibraryError,HardwareError,
ProxyError,ModelError,TensorError,MetadataError) - Bounds checking on all tensor index accessors (raises
IndexError) - Allocation guards (
run()beforeallocate_tensors()raisesTensorError) - Context manager support (
withstatement) on Session and Model os.PathLikesupport on all path parameters- Comprehensive
.pyitype stubs with docstrings
- Python YOLOv8 example (
examples/yolov8.py) with DMA-BUF pipeline,
HAL decoder integration, and--benchmarkmode - Rust YOLOv8
--benchmarkmode with matching output format - PyPI publishing via GitHub Actions with OIDC trusted publishing
python.ymlCI workflow for building manylinux2014 wheels (x86_64, aarch64)
Changed
- Upgraded
edgefirst-halfrom 0.11.0 to 0.13.0 - Migrated Rust YOLOv8 example to HAL 0.13
import_image/PlaneDescriptorAPI - Upgraded
pyo3from 0.23 to 0.24, addednumpy0.24 - Release workflow now builds and publishes Python wheels alongside Rust crates
- Python version derived from
Cargo.tomlviadynamic = ["version"] - Updated all GitHub Action hashes to latest versions (checkout v6.0.2,
upload-artifact v7.0.0, rust-cache v2.9.1, install-action v2.69.10) - Updated
examples/endpoints.pyto useedgefirst_ara2module name
Fixed
- Release workflow tag patterns (glob-style
v[0-9]*instead of regexv[0-9]+) - Release workflow SBOM collection (recursive find for nested artifact paths)
- Rust YOLOv8 args parsing bounds check (prevents panic on missing flag value)
crates.io: ara2 | ara2-sys
PyPI: edgefirst-ara2