Skip to content

Version notes

Rhei is currently v1.5.0. Releases are tracked on GitHub Releases.

Versioning policy

Rhei follows Semantic Versioning for the public API:

  • MAJOR — breaking changes to HtapEngine, HtapConfig, CdcSource, SidecarConfig, the trait surface in rhei-core, or the on-disk SQLite schema (_rhei_cdc_log layout, reserved column names).
  • MINOR — new features, new optional config fields with backwards-compatible defaults, new feature flags.
  • PATCH — bug fixes, performance improvements, dependency bumps, doc additions.

The rh CLI follows the same versioning. The TOML config schema is forward-compatible within a MAJOR version — unknown keys are ignored, missing optional keys fall back to defaults.

Pinned dependencies

Some upstream versions are pinned to keep the Arrow ABI consistent across backends:

  • Arrow58 (must match duckdb 1.10501, datafusion 53, and connector_arrow 0.11)
  • Rust toolchain — stable, minimum 1.95
  • PyO30.28 for the Python bindings
  • arrow-flight58 for the FlightSQL server

Bumping any of these requires updating all together — they share an internal Arrow type lattice.

Recent highlights

VersionNotes
1.5.0Project rename Yoda → Rhei across all crates, CLI binary (ydrh), Python package, on-disk schema (_yoda_*_rhei_*), and docs. New brand identity and palette. No API surface changes — drop-in once names are updated.
1.4.0S3 / GCS object-store backends for DataFusion Parquet; sidecar watermark hardening; typed Arrow-batch bulk INSERT (~5.8× throughput restoration); RocksDB-backed CDC log (rocksdb-cdc); Arrow Flight SQL server (flight-sql); Python async bindings; live TUI dashboard.
1.3.xObservability — Prometheus metrics endpoint, structured JSON logs.
1.2.xPluggable storage modes for DataFusion (InMemory / ArrowIpc / Parquet).
1.1.xSidecar mode (timestamp-based CDC for SQLite + PostgreSQL sources).
1.0.xInitial public release: HTAP facade, trigger-based CDC, OLAP routing, temporal SCD-2 mode.

For the full per-PR history, see the GitHub release page or git log --oneline main.

Upgrading

From 1.4.x (Yoda) to 1.5.x (Rhei)

The 1.5 release renames the project from Yoda to Rhei. The API surface is unchanged, but every public name moves:

  • Cargo dependency: yoda = "1.4"rhei = "1.5". All sub-crates likewise: yoda-corerhei-core, etc.
  • Rust imports: use yoda::…use rhei::…, use yoda_core::…use rhei_core::….
  • CLI binary: ydrh (e.g. yd serverh serve). All subcommands and flags are unchanged.
  • Python package: pip install yodapip install rhei; import yodaimport rhei.
  • Env vars: YODA_TEST_E2E, YODA_TEST_POSTGRES, YODA_FLIGHT_AUTH_TOKENRHEI_*.
  • On-disk schema: the CDC log table _yoda_cdc_log and SCD-2 columns _yoda_valid_from / _yoda_valid_to / _yoda_operation are renamed to _rhei_*. Existing databases need a one-time ALTER TABLE … RENAME TO (or start fresh).

HtapEngine, HtapConfig, CdcSource, SidecarConfig, the trait surface, and TOML keys are unchanged.

From 1.3.x to 1.4.x

  • No breaking changes to HtapConfig or the trait surface.
  • New optional config fields (flight_port, flight_auth_token, metrics_port, rocksdb_cdc_path) are all behind feature flags or have safe defaults.

General upgrade procedure

sh
# Update Cargo.toml dependency:
rhei = "1.5"

# Verify with cargo check:
cargo check --workspace --all-features

# Run the test suite:
cargo test --workspace --all-features

If you store schema-registry state (schema_registry_path) on disk, the JSON format is forward-compatible — older registries load cleanly under newer Rhei versions.

Stability tiers

Not all crates carry the same stability promise:

CrateStabilityNotes
rheiStablePublic-facing facade; semver-tracked.
rhei-coreStableShared traits and types.
rhei-syncStableCdcSyncEngine, SqlParserRouter.
rhei-olap, rhei-duckdb, rhei-datafusionStableImplementation backends.
rhei-oltp-rusqliteStableDefault OLTP backend.
rhei-tokio-rusqliteStableStandalone (no Rhei-specific dependencies).
rhei-sidecarStableSidecar mode.
rhei-cdc-rocksdbExperimentalFeature rocksdb-cdc; API may change in a 1.x release.
rhei-flightExperimentalFeature flight-sql; the gRPC schema may evolve.

Experimental crates won't be removed without a deprecation cycle, but their public API may shift in a minor release if Arrow Flight SQL upstream changes or a better RocksDB schema emerges.

Released under the Apache-2.0 License.