Skip to content

Commit 3520866

Browse files
committed
2026-03-03 Built-in Rust engine: 25 accelerated functions, no [turbo] extra needed
Rust engine expansion (13 → 25 functions): - GARCH: garch_filter, egarch_filter, gjr_garch_filter - TBATS: tbats_filter - DTSF: dtsf_distances, dtsf_fit_residuals (O(n²) pattern matching) - MSTL: mstl_extract_seasonal, mstl_moving_average - Croston: croston_tsb_filter - ESN: esn_reservoir_update - 4Theta: four_theta_fitted, four_theta_deseasonalize Messaging overhaul: "optional Rust turbo" → "built-in Rust engine" - README, landing page, docs, SEO metadata, llms.txt all updated - CI: added macOS x86_64 (macos-13) wheel build
1 parent 6bac08d commit 3520866

File tree

30 files changed

+1023
-205
lines changed

30 files changed

+1023
-205
lines changed

.github/workflows/publish.yml

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,21 @@ jobs:
3838
run: pytest tests/ -v --tb=short
3939

4040
build-wheels:
41-
name: Build wheels (${{ matrix.os }})
41+
name: Build wheels (${{ matrix.os }} ${{ matrix.target }})
4242
needs: test
4343
runs-on: ${{ matrix.os }}
4444
strategy:
4545
fail-fast: false
4646
matrix:
47-
os: [ubuntu-latest, macos-14, windows-latest]
47+
include:
48+
- os: ubuntu-latest
49+
target: ""
50+
- os: macos-14
51+
target: aarch64-apple-darwin
52+
- os: macos-13
53+
target: x86_64-apple-darwin
54+
- os: windows-latest
55+
target: ""
4856

4957
steps:
5058
- uses: actions/checkout@v4
@@ -61,7 +69,7 @@ jobs:
6169
- name: Build wheels
6270
uses: PyO3/maturin-action@v1
6371
with:
64-
target: ${{ matrix.os == 'macos-14' && 'aarch64-apple-darwin' || '' }}
72+
target: ${{ matrix.target }}
6573
args: --release --out dist -i python3.10 -i python3.11 -i python3.12 -i python3.13
6674
sccache: true
6775
manylinux: auto
@@ -71,7 +79,7 @@ jobs:
7179
- name: Upload wheels
7280
uses: actions/upload-artifact@v4
7381
with:
74-
name: wheels-${{ matrix.os }}
82+
name: wheels-${{ matrix.os }}-${{ matrix.target || 'default' }}
7583
path: dist
7684

7785
build-sdist:

CHANGELOG.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,39 @@ All notable changes to Vectrix will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.0.8] - 2026-03-03
9+
10+
Built-in Rust engine release — Rust acceleration expanded to all engines and compiled into every wheel. No `[turbo]` extra, no flags — `pip install vectrix` includes the Rust engine like Polars.
11+
12+
### Added
13+
14+
**Rust Engine Expansion (13 → 25 functions)**
15+
- `garch_filter`, `egarch_filter`, `gjr_garch_filter`: GARCH family negative log-likelihood hot loops
16+
- `tbats_filter`: Fourier harmonic state update loop
17+
- `dtsf_distances`, `dtsf_fit_residuals`: O(n²) sliding window pattern matching (biggest speedup)
18+
- `mstl_extract_seasonal`, `mstl_moving_average`: MSTL seasonal decomposition
19+
- `croston_tsb_filter`: Croston TSB SES update loop
20+
- `esn_reservoir_update`: Echo State Network reservoir state computation O(n×N²)
21+
- `four_theta_fitted`, `four_theta_deseasonalize`: 4Theta fitted values + seasonal decomposition
22+
- All 25 functions compiled into the default wheel — no separate `[turbo]` install needed
23+
24+
**CI/CD: macOS x86_64 wheel**
25+
- Added `macos-13` build target for Intel Mac users
26+
- Now 4 platform builds: Linux x86_64, macOS ARM, macOS x86_64, Windows x86_64
27+
28+
### Changed
29+
30+
**Messaging: "optional Rust turbo" → "built-in Rust engine"**
31+
- `pyproject.toml`: Description updated to reflect built-in Rust engine
32+
- `README.md`: Removed all "optional" Rust language, comparison table updated
33+
- Landing page: Hero, Features, Install, Performance, Numbers sections rewritten
34+
- Docs (EN/KO): Installation guides rewritten — no `[turbo]` extra mentioned
35+
- SEO metadata: All "Rust turbo" → "built-in Rust engine" across meta tags, schema, OG tags
36+
37+
**Version sync**: pyproject.toml, Cargo.toml, __init__.py all at 0.0.8
38+
39+
[0.0.8]: https://github.com/eddmpython/vectrix/compare/v0.0.7...v0.0.8
40+
841
## [0.0.7] - 2026-03-02
942

1043
AI integration release — llms.txt for instant AI understanding, MCP server for tool use, Claude Code skills for workflow automation.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "vectrix"
3-
version = "0.0.7"
3+
version = "0.0.8"
44
edition = "2021"
55
license-file = "LICENSE"
66

README.md

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010

1111
<br>
1212

13-
<h3>Pure Python Time Series Forecasting Engine</h3>
13+
<h3>Time Series Forecasting Engine — Built-in Rust Acceleration</h3>
1414

1515
<p>
1616
<img src="https://img.shields.io/badge/3-Dependencies-818cf8?style=for-the-badge&labelColor=0f172a" alt="Dependencies">
17-
<img src="https://img.shields.io/badge/Pure-Python-6366f1?style=for-the-badge&labelColor=0f172a" alt="Pure Python">
18-
<img src="https://img.shields.io/badge/Rust-Turbo%20Mode-e45a33?style=for-the-badge&labelColor=0f172a&logo=rust&logoColor=white" alt="Rust Turbo">
17+
<img src="https://img.shields.io/badge/Built--in-Rust%20Engine-e45a33?style=for-the-badge&labelColor=0f172a&logo=rust&logoColor=white" alt="Built-in Rust Engine">
18+
<img src="https://img.shields.io/badge/Python-3.10+-6366f1?style=for-the-badge&labelColor=0f172a&logo=python&logoColor=white" alt="Python 3.10+">
1919
</p>
2020

2121
<p>
@@ -50,7 +50,7 @@
5050

5151
## ◈ What is Vectrix?
5252

53-
Vectrix is a time series forecasting library that runs on **3 dependencies** (NumPy, SciPy, Pandas) with **no compiled extensions**. No C compiler, no cmdstan, no system packages `pip install` and it works.
53+
Vectrix is a time series forecasting library with a **built-in Rust engine** for blazing-fast performance. 3 dependencies (NumPy, SciPy, Pandas), no compiler needed `pip install vectrix` and the Rust-accelerated engine is included in the wheel.
5454

5555
### Forecasting
5656

@@ -103,18 +103,18 @@ A pure-numpy HMM (Baum-Welch + Viterbi) detects regime shifts. When a regime cha
103103

104104
Bottom-up, top-down, and MinTrace reconciliation for hierarchical time series.
105105

106-
### Rust Turbo Mode
106+
### Built-in Rust Engine
107107

108-
Install `vectrix[turbo]` to unlock Rust-accelerated core loops. No Rust compiler needed — pre-built wheels for Linux, macOS (x86 + ARM), and Windows.
108+
Every `pip install vectrix` includes a pre-built Rust extension — like Polars, no compiler needed. 25 core hot loops are Rust-accelerated across all forecasting engines.
109109

110-
| Component | Without Turbo | With Turbo | Speedup |
111-
|:----------|:-------------|:-----------|:--------|
110+
| Component | Python Only | With Rust | Speedup |
111+
|:----------|:-----------|:----------|:--------|
112112
| `forecast()` 200pts | 295ms | **52ms** | **5.6x** |
113113
| AutoETS fit | 348ms | **32ms** | **10.8x** |
114-
| AutoARIMA fit | 195ms | **35ms** | **5.6x** |
114+
| DOT fit | 240ms | **10ms** | **24x** |
115115
| ETS filter (hot loop) | 0.17ms | **0.003ms** | **67x** |
116116

117-
Turbo is fully optional. Without it, Vectrix falls back to Numba JIT (if available) or pure Python. Your code doesn't changejust install and it's faster.
117+
Pre-built wheels for Linux (x86_64), macOS (ARM + x86), and Windows. The Rust engine is included in the default installationno extras, no flags, no `[turbo]`.
118118

119119
### Built-in Sample Datasets
120120

@@ -129,9 +129,9 @@ result = forecast(df, date="date", value="passengers", steps=12)
129129

130130
Available: `airline`, `retail`, `stock`, `temperature`, `energy`, `web`, `intermittent`
131131

132-
### Everything is Pure Python
132+
### Minimal Dependencies, Maximum Performance
133133

134-
All of the above — forecasting models, regime detection, regression diagnostics, constraint enforcement, hierarchical reconciliation — is implemented in pure Python with only NumPy, SciPy, and Pandas. No compiled extensions, no system dependencies. Rust turbo is optional and never required.
134+
All of the above — forecasting models, regime detection, regression diagnostics, constraint enforcement, hierarchical reconciliation — runs on just NumPy, SciPy, and Pandas. The Rust engine is compiled into the wheel and loaded automatically. No system dependencies, no compiler, no extra install steps.
135135

136136
<br>
137137

@@ -156,16 +156,16 @@ result.plot()
156156

157157
| | Vectrix | statsforecast | Prophet | Darts |
158158
|:--|:--:|:--:|:--:|:--:|
159-
| **Pure Python (no C/Fortran)** || ❌ (numba) |(cmdstan) |(torch) |
160-
| **Optional Rust acceleration** |(5-10x) ||||
159+
| **Built-in Rust engine** |(5-67x) ||| |
160+
| **No compiler needed** ||(numba) |(cmdstan) | (torch) |
161161
| **Dependencies** | 3 | 5+ | 10+ | 20+ |
162162
| **Auto model selection** |||||
163163
| **Flat-line defense** |||||
164164
| **Business constraints** | 8 types ||||
165165
| **Built-in regression** | R-style ||||
166166
| **Sample datasets** | 7 built-in ||||
167167

168-
> **Comparison notes**: Dependencies counted as direct `pip install` requirements (not transitive). "Pure Python" means the core library runs without compiled extensions — Vectrix's optional Rust turbo (`vectrix[turbo]`) is a separate, opt-in wheel. statsforecast requires Numba JIT compilation; Prophet requires CmdStan (C++ compiler); Darts requires PyTorch. Feature comparison based on statsforecast 2.0+, Prophet 1.1+, Darts 0.31+.
168+
> **Comparison notes**: Dependencies counted as direct `pip install` requirements (not transitive). Vectrix's Rust engine is compiled into the wheel (like Polars) — no separate install needed. statsforecast requires Numba JIT compilation; Prophet requires CmdStan (C++ compiler); Darts requires PyTorch. Feature comparison based on statsforecast 2.0+, Prophet 1.1+, Darts 0.31+.
169169
170170
<br>
171171

@@ -259,9 +259,7 @@ result.plot()
259259
## ◈ Installation
260260

261261
```bash
262-
pip install vectrix # Core (numpy + scipy + pandas)
263-
pip install "vectrix[turbo]" # + Rust acceleration (5-10x speedup)
264-
pip install "vectrix[numba]" # + Numba JIT (2-5x speedup)
262+
pip install vectrix # Rust engine included — no extras needed
265263
pip install "vectrix[ml]" # + LightGBM, XGBoost, scikit-learn
266264
pip install "vectrix[all]" # Everything
267265
```
@@ -430,8 +428,8 @@ vectrix/
430428
├── global_model/ Cross-series forecasting
431429
└── datasets.py 7 built-in sample datasets
432430
433-
rust/ Optional Rust acceleration (vectrix-core)
434-
└── src/lib.rs ETS, ARIMA, Theta, SES hot loops (PyO3)
431+
rust/ Built-in Rust engine (25 accelerated functions)
432+
└── src/lib.rs ETS, ARIMA, DOT, CES, GARCH, DTSF, ESN, 4Theta (PyO3)
435433
```
436434

437435
<br>

docs/getting-started/installation.ko.md

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,33 +19,34 @@
1919
uv add vectrix
2020
```
2121

22+
Rust 엔진이 **wheel에 내장**되어 있습니다 — 별도 설치, 컴파일러 불필요. Polars처럼 설치만 하면 바로 빠릅니다.
23+
2224
## 선택적 추가 기능
2325

2426
```bash
25-
pip install "vectrix[turbo]" # Rust 가속 (5-10배 속도 향상, Rust 컴파일러 불필요)
26-
pip install "vectrix[numba]" # Numba JIT 가속 (2-5배 속도 향상)
27-
pip install "vectrix[ml]" # LightGBM, XGBoost, scikit-learn
28-
pip install "vectrix[foundation]" # Amazon Chronos-2, Google TimesFM 2.5
29-
pip install "vectrix[tutorials]" # 인터랙티브 marimo 튜토리얼
30-
pip install "vectrix[all]" # 전체
27+
pip install vectrix # 30+ 모델 + Rust 엔진 내장
28+
pip install "vectrix[ml]" # + LightGBM, XGBoost, scikit-learn
29+
pip install "vectrix[foundation]" # + Amazon Chronos-2, Google TimesFM 2.5
30+
pip install "vectrix[all]" # 전체
3131
```
3232

33-
## Rust Turbo Mode
33+
## 내장 Rust 엔진
3434

35-
`turbo` 옵션은 Rust로 컴파일된 네이티브 확장 `vectrix-core`를 설치합니다. 핵심 예측 루프가 5-10배 빨라집니다. 사전 빌드 wheel 제공:
35+
25개 핵심 예측 루프가 Rust로 가속되어 모든 wheel에 컴파일됩니다:
3636

3737
- Linux (x86_64, manylinux)
38-
- macOS (x86_64 + Apple Silicon ARM)
38+
- macOS (Apple Silicon ARM + x86_64)
3939
- Windows (x86_64)
4040
- Python 3.10, 3.11, 3.12, 3.13
4141

4242
Rust 컴파일러 불필요. 코드 변경 없이 설치만 하면 자동으로 빨라집니다.
4343

44-
| 구성요소 | Turbo 없음 | Turbo 적용 | 속도 향상 |
45-
|:---------|:----------|:----------|:---------|
44+
| 구성요소 | Python Only | Rust 적용 | 속도 향상 |
45+
|:---------|:-----------|:----------|:---------|
4646
| `forecast()` 200pts | 295ms | **52ms** | **5.6x** |
4747
| AutoETS fit | 348ms | **32ms** | **10.8x** |
48-
| AutoARIMA fit | 195ms | **35ms** | **5.6x** |
48+
| DOT fit | 240ms | **10ms** | **24x** |
49+
| ETS filter (핫 루프) | 0.17ms | **0.003ms** | **67x** |
4950

5051
## 설치 확인
5152

@@ -57,6 +58,12 @@ result = forecast([100, 120, 130, 115, 140], steps=3)
5758
print(result.predictions)
5859
```
5960

61+
Rust 엔진 활성화 확인:
62+
63+
```python
64+
print(vectrix.TURBO_AVAILABLE) # True
65+
```
66+
6067
## 핵심 의존성
6168

6269
Vectrix는 3개의 필수 의존성만 있습니다:

docs/getting-started/installation.md

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,33 +19,34 @@
1919
uv add vectrix
2020
```
2121

22+
The Rust engine is **built into the wheel** — no extras, no compiler needed. Like Polars, just install and it's fast.
23+
2224
## Optional Extras
2325

2426
```bash
25-
pip install "vectrix[turbo]" # Rust acceleration (5-10x speedup, no Rust compiler needed)
26-
pip install "vectrix[numba]" # Numba JIT acceleration (2-5x speedup)
27-
pip install "vectrix[ml]" # LightGBM, XGBoost, scikit-learn
28-
pip install "vectrix[foundation]" # Amazon Chronos-2, Google TimesFM 2.5
29-
pip install "vectrix[tutorials]" # Interactive marimo tutorials
30-
pip install "vectrix[all]" # Everything
27+
pip install vectrix # 30+ models + built-in Rust engine
28+
pip install "vectrix[ml]" # + LightGBM, XGBoost, scikit-learn
29+
pip install "vectrix[foundation]" # + Amazon Chronos-2, Google TimesFM 2.5
30+
pip install "vectrix[all]" # Everything
3131
```
3232

33-
## Rust Turbo Mode
33+
## Built-in Rust Engine
3434

35-
The `turbo` extra installs `vectrix-core`, a Rust-compiled native extension that accelerates core forecasting loops by 5-10x. Pre-built wheels are available for:
35+
25 core forecasting hot loops are Rust-accelerated and compiled into every wheel:
3636

3737
- Linux (x86_64, manylinux)
38-
- macOS (x86_64 + Apple Silicon ARM)
38+
- macOS (Apple Silicon ARM + x86_64)
3939
- Windows (x86_64)
4040
- Python 3.10, 3.11, 3.12, 3.13
4141

4242
No Rust compiler is needed. The acceleration is transparent — your code doesn't change, it just runs faster.
4343

44-
| Component | Without Turbo | With Turbo | Speedup |
45-
|:----------|:-------------|:-----------|:--------|
44+
| Component | Python Only | With Rust | Speedup |
45+
|:----------|:-----------|:----------|:--------|
4646
| `forecast()` 200pts | 295ms | **52ms** | **5.6x** |
4747
| AutoETS fit | 348ms | **32ms** | **10.8x** |
48-
| AutoARIMA fit | 195ms | **35ms** | **5.6x** |
48+
| DOT fit | 240ms | **10ms** | **24x** |
49+
| ETS filter (hot loop) | 0.17ms | **0.003ms** | **67x** |
4950

5051
## Verify
5152

@@ -57,6 +58,12 @@ result = forecast([100, 120, 130, 115, 140], steps=3)
5758
print(result.predictions)
5859
```
5960

61+
Check that Rust engine is active:
62+
63+
```python
64+
print(vectrix.TURBO_AVAILABLE) # True
65+
```
66+
6067
## Core Dependencies
6168

6269
Vectrix has only 3 required dependencies:

landing/src/content/en/changelog.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,32 @@ title: Changelog
66

77
All notable changes to Vectrix are documented here. This project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html) and the [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) format.
88

9+
## [0.0.8] - 2026-03-03
10+
11+
Built-in Rust engine release — Rust acceleration expanded to all engines (13 → 25 functions) and compiled into every wheel. No `[turbo]` extra needed — `pip install vectrix` includes the Rust engine like Polars.
12+
13+
### Added
14+
15+
**Rust Engine Expansion (13 → 25 functions)**
16+
- GARCH: `garch_filter`, `egarch_filter`, `gjr_garch_filter`
17+
- TBATS: `tbats_filter`
18+
- DTSF: `dtsf_distances`, `dtsf_fit_residuals` (O(n²) pattern matching — biggest speedup)
19+
- MSTL: `mstl_extract_seasonal`, `mstl_moving_average`
20+
- Croston: `croston_tsb_filter`
21+
- ESN: `esn_reservoir_update`
22+
- 4Theta: `four_theta_fitted`, `four_theta_deseasonalize`
23+
24+
**CI/CD: macOS x86_64 wheel**
25+
- Added `macos-13` build target — now 4 platform builds (Linux, macOS ARM, macOS x86, Windows)
26+
27+
### Changed
28+
29+
- All documentation updated: "optional Rust turbo" → "built-in Rust engine"
30+
- Removed `[turbo]` extra from all installation guides
31+
- Landing page rewritten: Hero, Features, Install, Performance sections
32+
33+
---
34+
935
## [0.0.7] - 2026-03-02
1036

1137
AI integration release -- llms.txt, MCP server (10 tools, 2 resources, 2 prompts), Claude Code skills (3).

0 commit comments

Comments
 (0)