Skip to content

Commit 5cfd762

Browse files
committed
v0.0.3 릴리즈: Rust Turbo Mode, 샘플 데이터셋, pandas 2.x 호환성
1 parent 379fc35 commit 5cfd762

9 files changed

Lines changed: 171 additions & 15 deletions

File tree

CHANGELOG.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,49 @@ 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.3] - 2026-02-28
9+
10+
Performance release — Rust-accelerated core loops (vectrix-core), built-in sample datasets, and pandas 2.x compatibility fixes.
11+
12+
### Added
13+
14+
**Rust Turbo Mode (vectrix-core)**
15+
- Native Rust extension for core forecasting hot loops via PyO3 + maturin
16+
- 9 accelerated functions: `ets_filter`, `ets_loglik`, `css_objective`, `seasonal_css_objective`, `ses_sse`, `ses_filter`, `theta_decompose`, `arima_css`, `batch_ets_filter`
17+
- 3-tier fallback: Rust > Numba JIT > Pure Python — transparent, no code changes needed
18+
- Pre-built wheels for Linux (manylinux), macOS (x86 + ARM), Windows (x86_64), Python 3.10-3.13
19+
- Install via `pip install "vectrix[turbo]"` — no Rust compiler needed for users
20+
- GitHub Actions CI workflow (`publish-core.yml`) for automated wheel builds on `core-v*` tags
21+
22+
**Built-in Sample Datasets**
23+
- 7 deterministic sample datasets for quick testing: `airline` (144 monthly), `retail` (730 daily), `stock` (252 business daily), `temperature` (1095 daily), `energy` (720 hourly), `web` (180 daily), `intermittent` (365 daily)
24+
- `loadSample(name)`: Load a sample dataset as DataFrame
25+
- `listSamples()`: List all available datasets with metadata
26+
- 41 tests covering all datasets
27+
28+
### Changed
29+
30+
**Performance Improvements**
31+
- AutoETS: 348ms → 32ms (10.8x faster with Rust turbo)
32+
- AutoARIMA: 195ms → 35ms (5.6x faster)
33+
- Theta: 1.3ms → 0.16ms (8.1x faster)
34+
- `forecast()` end-to-end: 295ms → 52ms (5.6x faster)
35+
- ETS filter hot loop: 0.17ms → 0.003ms (67x faster)
36+
- ARIMA CSS objective: 0.19ms → 0.001ms (157x faster)
37+
38+
### Fixed
39+
40+
- pandas 2.x frequency deprecation: `"M"``"ME"`, `"Q"``"QE"`, `"Y"``"YE"`, `"H"``"h"`
41+
42+
### Changed (Docs)
43+
44+
- Complete bilingual docs site (EN/KO) with i18n plugin
45+
- Installation guide updated with Rust Turbo Mode section
46+
- README updated with turbo benchmarks, sample datasets, comparison table
47+
- 387 tests (up from 346), 5 skipped (optional dependency guards)
48+
49+
[0.0.3]: https://github.com/eddmpython/vectrix/compare/v0.0.2...v0.0.3
50+
851
## [0.0.2] - 2026-02-28
952

1053
Feature expansion release — Foundation Model wrappers, deep learning models, multivariate forecasting, probabilistic distributions, multi-country holidays, and pipeline system.

README.md

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@
1515
<p>
1616
<img src="https://img.shields.io/badge/3-Dependencies-818cf8?style=for-the-badge&labelColor=0f172a" alt="Dependencies">
1717
<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/No-Compiled%20Extensions-a78bfa?style=for-the-badge&labelColor=0f172a" alt="No Compiled Extensions">
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">
1919
</p>
2020

2121
<p>
2222
<a href="https://pypi.org/project/vectrix/"><img src="https://img.shields.io/pypi/v/vectrix?style=for-the-badge&color=6366f1&labelColor=0f172a&logo=pypi&logoColor=white" alt="PyPI"></a>
2323
<a href="https://pypi.org/project/vectrix/"><img src="https://img.shields.io/pypi/pyversions/vectrix?style=for-the-badge&labelColor=0f172a&logo=python&logoColor=white" alt="Python"></a>
2424
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-22d3ee?style=for-the-badge&labelColor=0f172a" alt="License"></a>
25-
<img src="https://img.shields.io/badge/Tests-275%20passed-10b981?style=for-the-badge&labelColor=0f172a&logo=pytest&logoColor=white" alt="Tests">
25+
<img src="https://img.shields.io/badge/Tests-387%20passed-10b981?style=for-the-badge&labelColor=0f172a&logo=pytest&logoColor=white" alt="Tests">
2626
</p>
2727

2828
<br>
@@ -101,9 +101,35 @@ A pure-numpy HMM (Baum-Welch + Viterbi) detects regime shifts. When a regime cha
101101

102102
Bottom-up, top-down, and MinTrace reconciliation for hierarchical time series.
103103

104+
### Rust Turbo Mode
105+
106+
Install `vectrix[turbo]` to unlock Rust-accelerated core loops. No Rust compiler needed — pre-built wheels for Linux, macOS (x86 + ARM), and Windows.
107+
108+
| Component | Without Turbo | With Turbo | Speedup |
109+
|:----------|:-------------|:-----------|:--------|
110+
| `forecast()` 200pts | 295ms | **52ms** | **5.6x** |
111+
| AutoETS fit | 348ms | **32ms** | **10.8x** |
112+
| AutoARIMA fit | 195ms | **35ms** | **5.6x** |
113+
| ETS filter (hot loop) | 0.17ms | **0.003ms** | **67x** |
114+
115+
Turbo is fully optional. Without it, Vectrix falls back to Numba JIT (if available) or pure Python. Your code doesn't change — just install and it's faster.
116+
117+
### Built-in Sample Datasets
118+
119+
7 ready-to-use datasets for quick testing:
120+
121+
```python
122+
from vectrix import loadSample, forecast
123+
124+
df = loadSample("airline") # 144 monthly observations
125+
result = forecast(df, date="date", value="passengers", steps=12)
126+
```
127+
128+
Available: `airline`, `retail`, `stock`, `temperature`, `energy`, `web`, `intermittent`
129+
104130
### Everything is Pure Python
105131

106-
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.
132+
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.
107133

108134
<br>
109135

@@ -114,9 +140,10 @@ pip install vectrix
114140
```
115141

116142
```python
117-
from vectrix import forecast
143+
from vectrix import forecast, loadSample
118144

119-
result = forecast("sales.csv", steps=12)
145+
df = loadSample("airline")
146+
result = forecast(df, date="date", value="passengers", steps=12)
120147
print(result)
121148
result.plot()
122149
```
@@ -128,11 +155,13 @@ result.plot()
128155
| | Vectrix | statsforecast | Prophet | Darts |
129156
|:--|:--:|:--:|:--:|:--:|
130157
| **Pure Python (no C/Fortran)** || ❌ (numba) | ❌ (cmdstan) | ❌ (torch) |
158+
| **Optional Rust acceleration** | ✅ (5-10x) ||||
131159
| **Dependencies** | 3 | 5+ | 10+ | 20+ |
132160
| **Auto model selection** |||||
133161
| **Flat-line defense** |||||
134162
| **Business constraints** | 8 types ||||
135163
| **Built-in regression** | R-style ||||
164+
| **Sample datasets** | 7 built-in ||||
136165

137166
<br>
138167

@@ -224,6 +253,7 @@ result.plot()
224253

225254
```bash
226255
pip install vectrix # Core (numpy + scipy + pandas)
256+
pip install "vectrix[turbo]" # + Rust acceleration (5-10x speedup)
227257
pip install "vectrix[numba]" # + Numba JIT (2-5x speedup)
228258
pip install "vectrix[ml]" # + LightGBM, XGBoost, scikit-learn
229259
pip install "vectrix[all]" # Everything
@@ -382,7 +412,11 @@ vectrix/
382412
├── hierarchy/ Bottom-up, top-down, MinTrace
383413
├── intervals/ Conformal + bootstrap intervals
384414
├── ml/ LightGBM, XGBoost wrappers
385-
└── global_model/ Cross-series forecasting
415+
├── global_model/ Cross-series forecasting
416+
└── datasets.py 7 built-in sample datasets
417+
418+
rust/ Optional Rust acceleration (vectrix-core)
419+
└── src/lib.rs ETS, ARIMA, Theta, SES hot loops (PyO3)
386420
```
387421

388422
<br>

README_KR.md

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@
1515
<p>
1616
<img src="https://img.shields.io/badge/3-Dependencies-818cf8?style=for-the-badge&labelColor=0f172a" alt="Dependencies">
1717
<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/No-Compiled%20Extensions-a78bfa?style=for-the-badge&labelColor=0f172a" alt="No Compiled Extensions">
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">
1919
</p>
2020

2121
<p>
2222
<a href="https://pypi.org/project/vectrix/"><img src="https://img.shields.io/pypi/v/vectrix?style=for-the-badge&color=6366f1&labelColor=0f172a&logo=pypi&logoColor=white" alt="PyPI"></a>
2323
<a href="https://pypi.org/project/vectrix/"><img src="https://img.shields.io/pypi/pyversions/vectrix?style=for-the-badge&labelColor=0f172a&logo=python&logoColor=white" alt="Python"></a>
2424
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-22d3ee?style=for-the-badge&labelColor=0f172a" alt="License"></a>
25-
<img src="https://img.shields.io/badge/Tests-275%20passed-10b981?style=for-the-badge&labelColor=0f172a&logo=pytest&logoColor=white" alt="Tests">
25+
<img src="https://img.shields.io/badge/Tests-387%20passed-10b981?style=for-the-badge&labelColor=0f172a&logo=pytest&logoColor=white" alt="Tests">
2626
</p>
2727

2828
<br>
@@ -101,9 +101,35 @@ print(report.summary())
101101

102102
Bottom-up, Top-down, MinTrace로 계층적 시계열을 조정합니다.
103103

104+
### Rust Turbo Mode
105+
106+
`vectrix[turbo]`를 설치하면 Rust로 작성된 핵심 루프가 활성화됩니다. Rust 컴파일러 불필요 — Linux, macOS (x86 + ARM), Windows용 사전 빌드 wheel 제공.
107+
108+
| 구성요소 | Turbo 없음 | Turbo 적용 | 속도 향상 |
109+
|:---------|:----------|:----------|:---------|
110+
| `forecast()` 200pts | 295ms | **52ms** | **5.6x** |
111+
| AutoETS fit | 348ms | **32ms** | **10.8x** |
112+
| AutoARIMA fit | 195ms | **35ms** | **5.6x** |
113+
| ETS 필터 (핫 루프) | 0.17ms | **0.003ms** | **67x** |
114+
115+
Turbo는 완전 선택사항입니다. 없으면 Numba JIT(설치 시) 또는 순수 Python으로 동작합니다. 코드 변경 불필요 — 설치만 하면 자동으로 빨라집니다.
116+
117+
### 내장 샘플 데이터셋
118+
119+
즉시 테스트 가능한 7개 데이터셋 내장:
120+
121+
```python
122+
from vectrix import loadSample, forecast
123+
124+
df = loadSample("airline") # 144개 월간 관측
125+
result = forecast(df, date="date", value="passengers", steps=12)
126+
```
127+
128+
사용 가능: `airline`, `retail`, `stock`, `temperature`, `energy`, `web`, `intermittent`
129+
104130
### 전부 순수 Python
105131

106-
위의 모든 기능 — 예측 모델, 레짐 감지, 회귀분석 진단, 제약조건 적용, 계층적 조정 — 이 NumPy, SciPy, Pandas만으로 구현되어 있습니다. 컴파일된 확장이나 시스템 의존성이 없습니다.
132+
위의 모든 기능 — 예측 모델, 레짐 감지, 회귀분석 진단, 제약조건 적용, 계층적 조정 — 이 NumPy, SciPy, Pandas만으로 구현되어 있습니다. Rust turbo는 선택사항이며 필수가 아닙니다.
107133

108134
<br>
109135

@@ -114,9 +140,10 @@ pip install vectrix
114140
```
115141

116142
```python
117-
from vectrix import forecast
143+
from vectrix import forecast, loadSample
118144

119-
result = forecast("sales.csv", steps=12)
145+
df = loadSample("airline")
146+
result = forecast(df, date="date", value="passengers", steps=12)
120147
print(result)
121148
result.plot()
122149
```
@@ -128,11 +155,13 @@ result.plot()
128155
| | Vectrix | statsforecast | Prophet | Darts |
129156
|:--|:--:|:--:|:--:|:--:|
130157
| **순수 Python (C/Fortran 없음)** || ❌ (numba) | ❌ (cmdstan) | ❌ (torch) |
158+
| **선택적 Rust 가속** | ✅ (5-10x) ||||
131159
| **의존성** | 3 | 5+ | 10+ | 20+ |
132160
| **자동 모델 선택** |||||
133161
| **평탄 예측 방어** |||||
134162
| **비즈니스 제약조건** | 8종 ||||
135163
| **내장 회귀분석** | R 스타일 ||||
164+
| **샘플 데이터셋** | 7종 내장 ||||
136165

137166
<br>
138167

@@ -224,6 +253,7 @@ result.plot()
224253

225254
```bash
226255
pip install vectrix # 핵심 (numpy + scipy + pandas)
256+
pip install "vectrix[turbo]" # + Rust 가속 (5-10배 속도 향상)
227257
pip install "vectrix[numba]" # + Numba JIT (2-5배 가속)
228258
pip install "vectrix[ml]" # + LightGBM, XGBoost, scikit-learn
229259
pip install "vectrix[all]" # 전체
@@ -382,7 +412,11 @@ vectrix/
382412
├── hierarchy/ Bottom-up, Top-down, MinTrace
383413
├── intervals/ Conformal + Bootstrap 구간
384414
├── ml/ LightGBM, XGBoost 래퍼
385-
└── global_model/ 크로스시리즈 예측
415+
├── global_model/ 크로스시리즈 예측
416+
└── datasets.py 7개 내장 샘플 데이터셋
417+
418+
rust/ 선택적 Rust 가속 (vectrix-core)
419+
└── src/lib.rs ETS, ARIMA, Theta, SES 핫 루프 (PyO3)
386420
```
387421

388422
<br>

docs/getting-started/installation.ko.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,31 @@
2222
## 선택적 추가 기능
2323

2424
```bash
25+
pip install "vectrix[turbo]" # Rust 가속 (5-10배 속도 향상, Rust 컴파일러 불필요)
2526
pip install "vectrix[numba]" # Numba JIT 가속 (2-5배 속도 향상)
2627
pip install "vectrix[ml]" # LightGBM, XGBoost, scikit-learn
28+
pip install "vectrix[foundation]" # Amazon Chronos-2, Google TimesFM 2.5
2729
pip install "vectrix[tutorials]" # 인터랙티브 marimo 튜토리얼
2830
pip install "vectrix[all]" # 전체
2931
```
3032

33+
## Rust Turbo Mode
34+
35+
`turbo` 옵션은 Rust로 컴파일된 네이티브 확장 `vectrix-core`를 설치합니다. 핵심 예측 루프가 5-10배 빨라집니다. 사전 빌드 wheel 제공:
36+
37+
- Linux (x86_64, manylinux)
38+
- macOS (x86_64 + Apple Silicon ARM)
39+
- Windows (x86_64)
40+
- Python 3.10, 3.11, 3.12, 3.13
41+
42+
Rust 컴파일러 불필요. 코드 변경 없이 설치만 하면 자동으로 빨라집니다.
43+
44+
| 구성요소 | Turbo 없음 | Turbo 적용 | 속도 향상 |
45+
|:---------|:----------|:----------|:---------|
46+
| `forecast()` 200pts | 295ms | **52ms** | **5.6x** |
47+
| AutoETS fit | 348ms | **32ms** | **10.8x** |
48+
| AutoARIMA fit | 195ms | **35ms** | **5.6x** |
49+
3150
## 설치 확인
3251

3352
```python

docs/getting-started/installation.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,31 @@
2222
## Optional Extras
2323

2424
```bash
25+
pip install "vectrix[turbo]" # Rust acceleration (5-10x speedup, no Rust compiler needed)
2526
pip install "vectrix[numba]" # Numba JIT acceleration (2-5x speedup)
2627
pip install "vectrix[ml]" # LightGBM, XGBoost, scikit-learn
28+
pip install "vectrix[foundation]" # Amazon Chronos-2, Google TimesFM 2.5
2729
pip install "vectrix[tutorials]" # Interactive marimo tutorials
2830
pip install "vectrix[all]" # Everything
2931
```
3032

33+
## Rust Turbo Mode
34+
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:
36+
37+
- Linux (x86_64, manylinux)
38+
- macOS (x86_64 + Apple Silicon ARM)
39+
- Windows (x86_64)
40+
- Python 3.10, 3.11, 3.12, 3.13
41+
42+
No Rust compiler is needed. The acceleration is transparent — your code doesn't change, it just runs faster.
43+
44+
| Component | Without Turbo | With Turbo | Speedup |
45+
|:----------|:-------------|:-----------|:--------|
46+
| `forecast()` 200pts | 295ms | **52ms** | **5.6x** |
47+
| AutoETS fit | 348ms | **32ms** | **10.8x** |
48+
| AutoARIMA fit | 195ms | **35ms** | **5.6x** |
49+
3150
## Verify
3251

3352
```python

docs/index.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,13 @@ Tested against the M3 and M4 forecasting competitions (OWA < 1.0 = beats Naive2)
141141
```
142142
NumPy + SciPy + Pandas only. Works on Python 3.10+.
143143

144+
=== "Rust Turbo"
145+
146+
```bash
147+
pip install "vectrix[turbo]"
148+
```
149+
5-10x faster with Rust-accelerated core loops. No Rust compiler needed — pre-built wheels for all platforms.
150+
144151
=== "With Numba"
145152

146153
```bash

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "vectrix"
3-
version = "0.0.2"
3+
version = "0.0.3"
44
description = "Zero-config time series forecasting & analysis library. Pure numpy + scipy implementation with 30+ models, regression, and adaptive intelligence."
55
readme = "README.md"
66
license = {text = "MIT"}

src/vectrix/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
)
7070
from .vectrix import Vectrix
7171

72-
__version__ = "0.0.2"
72+
__version__ = "0.0.3"
7373
__all__ = [
7474
"Vectrix",
7575
"ForecastResult",

src/vectrix/vectrix.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ class Vectrix:
6666
Dependencies: numpy, pandas, scipy (required), numba (optional)
6767
"""
6868

69-
VERSION = "0.0.2"
69+
VERSION = "0.0.3"
7070

7171
# 자체 구현 모델 목록
7272
NATIVE_MODELS = {

0 commit comments

Comments
 (0)