Skip to content

Releases: NoKV-Lab/NoKV

v1.0.0-alpha.1

v1.0.0-alpha.1 Pre-release
Pre-release

Choose a tag to compare

@feichai0017 feichai0017 released this 08 Jun 02:41
cee155a

NoKV is now a single-node, agent-native copy-on-write filesystem β€” "git for live, large, derived state." This first alpha consolidates the pivot from a distributed KV/DFS into a focused CoW workspace runtime for AI agents and ML pipelines.

Where git versions small text at dev time, NoKV gives snapshot / clone / diff / rollback over live filesystem namespaces (code + data + model weights) at runtime speed β€” O(metadata), not O(data) β€” and at scale.

Highlights

Copy-on-write workspace operations

  • snapshot β€” zero-copy MVCC version pin of a subtree (read-only, GC-protected).
  • clone β€” writable fork; shares object blocks zero-copy (same generation β†’ same object keys); diverges on write (CoW); O(metadata). Spin up 100 agent workspaces off one base; each writes its own delta over shared blocks.
  • diff β€” Added / Removed / Modified between two subtrees; unchanged shared files are skipped.
  • rollback β€” revert a workspace to a prior snapshot via clone-from-snapshot + atomic graft (keeps inode identity); discarded delta becomes GC-reclaimable, restored blocks survive.
  • CLI: nokv clone, nokv diff (snapshot / rollback exposed at the service/RPC layer).

See docs/cow-workspaces.md.

Architecture

  • Single-node metadata engine (Holt 0.5.4) β€” local hot path, no quorum, no Redis/TiKV round-trip.
  • Object data on S3-compatible storage (RustFS / S3 via OpenDAL); 4 MiB block / 64 MiB chunk.
  • Structural zero-copy object layout: blocks/{mount}/{inode}/{generation}/{chunk}/{block} β€” forks share blocks by construction.
  • Durability ordering: object-first, metadata-atomic-after β†’ a crash leaves GC-able orphan objects, never a dangling pointer.
  • The distributed/Raft metadata layer was removed in favor of a focused single-writer-owner model (read-only snapshots are shared by many readers).

Correctness & performance

  • Write path: ~213 MiB/s sequential (release build), durable β€” close drains to S3.
  • Six write-path correctness bugs root-caused and fixed (overlapping staged blocks from FUSE re-dispatch, manifest bloat past the metadata value limit, silent zero-fill on getattr, stale dentry CAS on mid-write setattr, body-wipe after chmod, xattr rejection).
  • GC safety β€” the owns_block_object_key invariant: an inode reclaims only blocks it minted; retained snapshot pins protect still-shared base blocks.
  • 322 tests passing; clippy -D warnings clean.

Scope & boundaries

  • Single-node: one writer-owner per workspace; many readers share snapshots.
  • POSIX via FUSE (Unix-only).
  • Not yet in this alpha: cloud sharding + owner leases, derivation lineage, branch/merge, a FUSE control surface for clone.

Distribution

GitHub release only β€” not published to crates.io. No crate version was changed.

v0.9.0

Choose a tag to compare

@feichai0017 feichai0017 released this 14 May 18:01

Highlights

  • Added the native fsmeta service path for distributed metadata workloads, including rooted mount lifecycle, WatchSubtree, SnapshotSubtree, quota fences, hard links, subtree authority handoff, fsmeta contract tests, and Docker/benchmark harnesses.
  • Introduced and hardened the Peras metadata fast path: compiler proof hardening, isolated benchmark coverage, operation-id scoping, read-path materialization, and release-blocking CLI startup safety for authority key loading.
  • Strengthened the distributed storage substrate with Eunomia authority grants, dynamic coordinator duty grants, rooted store membership, scan retry budgets, follower read modes, dependency-aware async apply, batched 2PC/RPC paths, and WAL/raftlog durability improvements.
  • Expanded release and evaluation surfaces: GHCR image publishing, Docker Compose demo hardening, official fsmeta workload profiles, fsmeta median/long benchmark CI, DCO enforcement, VitePress docs, repository code contract, TLA artifacts, and correctness/chaos smoke coverage.

Install

Binary archives are attached for Linux and macOS on amd64/arm64. Each archive includes nokv, nokv-config, nokv-fsmeta, fsmeta diagnostic tools, README.md, LICENSE, and raft_config.example.json.

shasum -a 256 -c checksums.txt

Container images are published as:

ghcr.io/feichai0017/nokv:v0.9.0
ghcr.io/feichai0017/nokv:0.9.0
ghcr.io/feichai0017/nokv:0.9
ghcr.io/feichai0017/nokv:latest

Docker Hub mirrors use the same tags when Docker Hub publishing is available:

docker.io/feichai0017/nokv:v0.9.0
docker.io/feichai0017/nokv:0.9.0
docker.io/feichai0017/nokv:0.9
docker.io/feichai0017/nokv:latest

What's Changed

  • feat(fsmeta): add native metadata service, fsmeta executor, server/client split, benchmark workloads, WatchSubtree, SnapshotSubtree, rooted mounts, quota fences, hard links, and subtree authority handoff.
  • feat(eunomia): add dynamic coordinator duty grants and authority protocol hardening.
  • feat(raftstore): add follower read modes, dependency-aware async apply, batched proposals, bounded scan retry, and 2PC rerouting/cleanup hardening.
  • feat(wal/raftlog): enforce durability and retention contracts, batch fsync durability requests, rebuild segment catalogs, and shard raft WAL managers.
  • perf(fsmeta): optimize placement, key shape routing, read paths, atomic mutate fast paths, TSO coalescing, and fsmeta benchmark paths.
  • perf(lsm): shard data-plane WAL managers, add shard hint cache, reduce read-path allocations, and improve write/read/compaction paths.
  • docs: replace mdBook with VitePress, add NoKV code contract, refresh public architecture/fsmeta docs, and document Peras architecture boundaries.
  • bench: add official fsmeta workload profiles, fsmeta benchmark profile bundles, Docker benchmark CI, and improved benchmark diagnostics.
  • ci: add GHCR Docker image publishing, DCO enforcement, CodeQL/Codecov stabilization, and updated GitHub Actions dependencies.
  • fix(root): defer grant key loading until authority use so release binaries can run read-only CLI commands without grant key environment variables.

Additional Changes

This release includes many cleanup and hardening commits across control-plane protocol vocabulary, package boundaries, error taxonomy, fsmeta recovery, coordinator liveness, meta-root timing, Docker demo reliability, test deflaking, generated artifacts, and security/dependency updates.

New Contributors

No first-time contributors in this release.

Full Changelog: feichai0017/NoKV@v0.8.0...v0.9.0

v0.8.0

Choose a tag to compare

@feichai0017 feichai0017 released this 16 Apr 14:11

Highlights

  • Added the namespace listing research line, including a hardened listing contract, benchmark tooling, and paper-oriented framing for direct-children / stable pagination style namespace access.
  • Expanded the metadata-root and control-plane substrate with separated deployment, transport-backed replication, freshness / catch-up semantics, allocator fencing, and clearer rooted publish lifecycle boundaries.
  • Reorganized NoKV as a more maintainable distributed storage research platform: single-node engine code now lives under engine/*, DB/runtime boundaries were tightened, benchmark outputs were unified, and the top-level docs now explicitly describe the repository as an extensible research base.

What's Changed

Additional Changes

New Contributors

No first-time contributors in this release.

Full Changelog: feichai0017/NoKV@v0.7.2...v0.8.0

v0.7.2

Choose a tag to compare

@feichai0017 feichai0017 released this 30 Mar 01:03

Highlights

  • Hardened the single-node write path around a bounded MPSC commit queue, including correctness fixes for publish/wake behavior, a long-lived consumer session, batch draining, and sync-pipeline cleanup.
  • Tightened distributed truth-source and runtime boundaries: local region truth now stays apply/bootstrap-driven, peer region metadata is explicitly a local mirror, and scheduler-side PD publishing is kept separate from local catalog updates.
  • Clarified client routing/degraded behavior with explicit route-availability errors, unified retry entrypoints for single-key and multi-key flows, lazy store dialing, and cleaner transport/retry boundaries.
  • Aligned top-level architecture and runtime documentation with the current code paths.

What's Changed

Additional Changes

New Contributors

No first-time contributors in this release.

Full Changelog: feichai0017/NoKV@v0.7.1...v0.7.2

v0.7.1

Choose a tag to compare

@feichai0017 feichai0017 released this 23 Mar 12:27

Highlights

  • Added practical LSM range-filter pruning for point reads and bounded scans, including exact-candidate point fast paths, table-internal block-range pruning, and read-path cleanup.
  • Tightened value separation and value-log defaults: CF/keyspace-aware routing landed, ordinary multi-bucket vlog routing remains enabled, ValueThreshold moved to 2048, and HotRing is now narrowed to an optional write-hot detector/throttling tool instead of a default data-path strategy.
  • Continued correctness and boundary cleanup across startup recovery, WAL/LSM integration, iterator semantics, range tombstones, region metadata APIs, and stale internal wrappers.

What's Changed

Additional Changes

New Contributors

Full Changelog: feichai0017/NoKV@v0.7.0...v0.7.1

v0.7.0

Choose a tag to compare

@feichai0017 feichai0017 released this 03 Mar 05:02

Highlights

  • Added PD-based control plane integration for distributed mode (routing, metadata persistence, allocator bootstrap).
  • Removed standalone/local transaction APIs from the embedded path; transaction semantics are now aligned with distributed Percolator flow.
  • Continued iterator and LSM correctness improvements.

What's Changed

Additional Changes

New Contributors

Full Changelog: feichai0017/NoKV@v0.6.1...v0.7.0

v0.6.1

Choose a tag to compare

@feichai0017 feichai0017 released this 25 Feb 17:05

What's Changed

New Contributors

Full Changelog: feichai0017/NoKV@v0.6.0...v0.6.1

v0.6.0

Choose a tag to compare

@feichai0017 feichai0017 released this 16 Feb 01:31

What's Changed

New Contributors

Full Changelog: feichai0017/NoKV@v0.5.0...v0.6.0

Release v0.5.0

Choose a tag to compare

@feichai0017 feichai0017 released this 07 Feb 16:36

v0.5.0

Highlights

  • Bucketed ValueLog (hashkv) with hot/cold routing for better large-value isolation and GC control
  • HotRing externalized and split into read/write tracking; new write-hot metrics exposed
  • TOML-based engine config loader for embedded deployments

Storage / ValueLog

  • Bucketed ValueLog with hot/cold buckets
  • Parallel VLog GC with compaction/backlog pressure control
  • Fixes for GC skip thresholds and candidate filtering

HotRing & Observability

  • Read/write HotRing split to avoid read hotness impacting write throttling
  • Added HotWriteKeys / HotWriteRing metrics
  • HotRing defaults and config normalization tuned

Config & UX

  • New TOML loader: LoadOptionsFile / ApplyOptionsFile
  • Example config: nokv.options.toml

Fixes

  • Hardened raftstore reads and MVCC scans
  • Iterator ordering and write-throttle alignment fixes

Docs

  • Expanded HotRing/VLog/Compaction docs
  • DBDB badge

Release v0.4.2

Choose a tag to compare

@feichai0017 feichai0017 released this 22 Jan 14:04

This release provides critical security fixes, cache stability improvements, and enhanced CI/CD integration. It addresses issues identified by CodeQL and optimizes the W-TinyLFU cache implementation for long-term stability.

πŸš€ Key Highlights

πŸ›‘οΈ Security Fixes

  • LSM/FID Boundary Check: Fixed a high-severity integer overflow vulnerability in SSTable file ID parsing (utils.FID). This prevents potential memory corruption or logical errors when processing large file IDs. (Addressed CodeQL scan alert).

⚑ Cache Optimization (W-TinyLFU)

  • Automatic Freshness (Reset Mechanism): Fixed a bug where the threshold for Frequency Sketch and Bloom Filter resets was uninitialized. Resets now trigger every 10 * size operations, preventing historical data from polluting the frequency estimates.
  • Improved Entry Validation: Added explicit bounds checks in the Set path for the internal cache. Key hashes exceeding uint32 are now handled safely without silent truncation, ensuring consistency with the Get logic.

πŸ›  Infrastructure & CI/CD

  • AI-Powered Code Review: Integrated CodeRabbit for automated PR reviews, configured specifically for the Go toolchain (go-vet, golangci-lint).
  • Dependency Updates: Bumped github.com/panjf2000/ants/v2 to v2.11.4 for improved concurrency pooling stability.

πŸ“ˆ What's Changed

  • fix(cache): initialize reset threshold for TinyLFU by @feichai0017
  • fix(security): prevent integer overflow in FID parsing by @feichai0017
  • chore: add .coderabbit.yaml for intelligent PR analysis
  • deps: upgrade ants/v2 pool manager

πŸ”— Full Changelog
For a detailed list of all 100 commits since v0.4.1, please refer to the commit history
(feichai0017/NoKV@v0.4.1...v0.4.2).