Files
ferro-ta/crates/ferro_ta_core
Pratik Bhadane 682bf063ca release: cut v1.0.1
Prepare the first patch release after v1.0.0 by finalizing the outstanding release, packaging, and workflow fixes.

This release keeps PyPI and crates.io publishing anchored to CI.yml, splits the large CI workflow into focused rust/python/wasm/docs suites, fixes the ci-complete gate, and updates the release SBOM action pin.

It also switches the npm publish workflow to GitHub OIDC, installs the wasm32 target required for packaging, ensures the WASM npm tarball includes pkg/ artifacts during prepack, and adds a dedicated README plus docs.rs metadata for ferro_ta_core.

Finally, bump all published package versions to 1.0.1 and record the patch release notes in CHANGELOG.md.
2026-03-24 00:38:50 +05:30
..
2026-03-23 23:34:28 +05:30
2026-03-23 23:34:28 +05:30
2026-03-24 00:38:50 +05:30
2026-03-24 00:38:50 +05:30

ferro_ta_core

ferro_ta_core is the pure Rust indicator engine behind ferro-ta.

It provides allocation-friendly indicator functions over &[f64] slices without any PyO3, NumPy, or Python runtime dependency, which makes it a good fit for:

  • Rust-native technical analysis workloads
  • custom services and backtesting engines
  • future non-Python bindings such as WASM and other FFI layers

Installation

[dependencies]
ferro_ta_core = "1.0.1"

Design

  • Pure functions over Rust slices
  • No Python or NumPy dependency
  • Shared core for the Python package and WASM bindings
  • Output shape matches TA-Lib-style full-length series with NaN warm-up values where applicable

Modules

  • overlap - moving averages, MACD, Bollinger Bands
  • momentum - RSI, MOM
  • volatility - ATR, TRANGE
  • volume - OBV
  • statistic - STDDEV
  • math - rolling SUM/MAX/MIN helpers

Example

use ferro_ta_core::overlap;

fn main() {
    let close = vec![1.0, 2.0, 3.0, 4.0, 5.0];
    let sma = overlap::sma(&close, 3);

    assert!(sma[0].is_nan());
    assert!(sma[1].is_nan());
    assert!((sma[2] - 2.0).abs() < 1e-10);
}

Relationship To ferro-ta

The published Python package:

  • crate: ferro_ta
  • PyPI package: ferro-ta

wraps this crate with PyO3 bindings and adds:

  • NumPy conversion
  • pandas/polars wrappers
  • streaming classes
  • batch helpers
  • higher-level Python tooling

If you only need Rust indicator functions, use ferro_ta_core directly.

Development

From the repository root:

cargo build -p ferro_ta_core
cargo test -p ferro_ta_core
cargo bench -p ferro_ta_core --no-run

License

MIT