Skip to content

Release 0.7.0 — Unified PyO3 (abi3) FFI + complete TA-Lib surface

Date: 2026-07-13 Install: pip install quantwave or pip install "quantwave[polars]"


Headline

QuantWave 0.7.0 unifies the entire Python FFI onto a single PyO3 (abi3) extension, retiring the previous multi-crate / uniffi setup, and ships a complete classic TA-Lib surface — 161 functions, up from 8. One maturin build now produces one cp39-abi3 wheel that installs correctly across CPython 3.9–3.13.


What's new

Complete classic TA-Lib surface (quantwave.talib)

  • 161 functions, up from 8 — RSI, MACD, SMA, EMA, ATR, ADX, BBANDS, STOCH, OBV, all 61 candlestick patterns, plus the math and price transforms.
  • The classic array-in / array-out API (talib.RSI(close, timeperiod=14), multi-output tuples, OHLC / candlestick inputs) delegates to the Polars .ta plugins — so the values are the same talib-rs parity-tested Rust results, not a separate implementation.
  • Top-level native symbol access restored: qw.FracDiff, qw.fracdiff, qw.rsi, qw.SuperTrend, … bind alongside the slug-based qw.ta namespace.

Unified PyO3 (abi3) FFI

  • Single extension, single wheel. The indicator bindings, the Polars expression plugins, and the backtest engine are now one PyO3 abi3-py39 extension in a single crate (quantwave-py) producing one cdylib. A single maturin build yields one cp39-abi3 wheel — no wheel-merge step.
  • Collapsed the three former PyO3 crates (quantwave-python, quantwave-plugins, quantwave-backtest-py) into quantwave-py; removed the custom build_unified_wheel.py and consolidated to one pyproject.toml.
  • uniffi retired in favor of PyO3 end-to-end.

Install correctness

  • The published wheel is now cp39-abi3 and installs correctly on CPython 3.9–3.13. (0.6.1 had shipped a py3-none wheel bundling CPython-3.12-only extensions, which broke pip install on 3.9 / 3.10 / 3.11 / 3.13.)

Upgrade notes

  • No breaking changes to the indicator or backtest call surfaces — existing .ta / .bt code is unchanged.
  • The classic quantwave.talib namespace is now fully populated; if you previously shimmed missing talib functions, you can drop the shims.
  • Reinstall to pick up the corrected wheel tag: pip install --upgrade quantwave (or "quantwave[polars]").

Quality gates

./scripts/quantwave_verify.sh

What's next

See Roadmap. Since 0.7.0, the execution-realism epic has landed on the backtester: first-class order types (limit / stop / stop-limit / bracket / OCO), risk overlays (vol-target, inverse-vol, position-limit), portfolio rebalance policies, Bayesian (TPE) walk-forward optimization, and benchmark-relative reporting — all preserving batch ↔ streaming parity.