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.
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
NaNwarm-up values where applicable
Modules
overlap- moving averages, MACD, Bollinger Bandsmomentum- RSI, MOMvolatility- ATR, TRANGEvolume- OBVstatistic- STDDEVmath- 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