Skip to content

NEDB v2.4.468 — Tri-Distribution Release

Latest

Choose a tag to compare

@ethgr0wth ethgr0wth released this 27 Jun 20:45
7042d20

Target: master / main · © Interchained LLC × Claude

One engine, three products, one version — live across npm, PyPI, and crates.io with full macOS + Linux + Windows native addons.


TL;DR

NEDB now ships as three version-aligned distributions built from a single repo and published on a single tag:

Product What it is npm pip cargo
nedb-engine The flagship — the complete engine nedb-engine nedb-engine nedb-engine
crypto-database Verifiable v2/v3 — content-addressed Merkle DAG, AS OF / TRACE time-travel, BLAKE2b tamper-evidence crypto-database cryptodb crypto-database
aof-db Fast / lightweight — append-only op-log, minimal footprint aof-db aof-db aof-db

All three are at 2.4.468 on every registry. crypto-database publishes its Python wheel as cryptodb (the crypto-database name is held by a third party on PyPI).


Install

# npm (native addon: macOS arm64/x64 · Linux x64 · Windows x64)
npm install nedb-engine        #  npm install crypto-database        #  npm install aof-db

# PyPI
pip install nedb-engine        #  pip install cryptodb               #  pip install aof-db

# crates.io
cargo add nedb-engine          #  cargo add crypto-database          #  cargo add aof-db

What's new in this line

  • Three real, independently-built distributions. Not relabels — each ships its own native .node, wheel, and crate under its own name, built from forks submoduled under distributions/. The central codemagic.yaml builds all six macOS wheels and release-distros.yml publishes the distros; the forks carry no CI of their own.
  • Distro npm packages now bundle macOS native addons. The publish step waits for Codemagic's <distro>.darwin-arm64/-x64.node and assembles them alongside the Linux/Windows builds before npm publish — so crypto-database and aof-db install natively on all four platform targets, not just Linux/Windows.
  • One-command releases. scripts/release.py "vFROM" "vTO" bumps the flagship and both forks, repoints submodules, opens + merges the release PRs, and tags — firing CI/CD across all three products. Idempotent and safe to re-run.
  • Version realignment. Everything resolves to 2.4.468 by default on every registry.

Verified live

npm        nedb-engine 2.4.468 (latest)   crypto-database 2.4.468 (latest)   aof-db 2.4.468 (latest)
PyPI       nedb-engine 2.4.468            cryptodb 2.4.468                    aof-db 2.4.468
crates.io  nedb-engine 2.4.468            crypto-database 2.4.468            aof-db 2.4.468

Distro npm tarballs confirmed to contain all four native addons, e.g. crypto-database@2.4.468:
crypto-database.darwin-arm64.node · crypto-database.darwin-x64.node · crypto-database.linux-x64-gnu.node · crypto-database.win32-x64-msvc.node (identical four-platform set for aof-db).


Under the hood (fixes that brought it green)

  • Engine-version alignment. The engine crate (rust/nedb-v2, package nedb-engine) had been stranded at 2.4.3 while each distribution's wrapper crate required ^2.4.x, so cargo couldn't resolve and the napi/Codemagic builds failed. Every version-bearing line — engine, wrappers, clients, and the maturin project — is now aligned.
  • release-distros startup_failure. Three if: conditions used double-quoted "refs/tags/"; GitHub Actions expressions require single quotes, so the workflow was valid YAML but an invalid workflow (no jobs, no logs). Restored to 'refs/tags/'.
  • Codemagic distro paths. After the distribution rename, the macOS build steps were updated to distributions/crypto-database / distributions/aof-db.

Releasing (for maintainers)

python3 scripts/release.py "vFROM" "vTO"
# e.g.
python3 scripts/release.py "v2.4.68" "v2.4.468"

Both args require the leading v. The tool is idempotent — repos already at TO are skipped (no empty PRs), an existing tag is left in place, and it always proceeds through the remaining steps. It never force-pushes master and never commits to it directly. Requires GITHUB_TOKEN (repo + workflow).


Known follow-ups

  • Per-distribution defaults. The three engines are currently identical; the next step is divergent defaults at the wrapper seam (crypto-database → verifiable v2/v3 on; aof-db → fast append-only) so each behaves as its name promises with no flags.
  • nedbd-v2 server-binary naming. The bundled daemon binary is uploaded un-suffixed to the shared release; per-distro naming would prevent a distro shipping another product's nedbd-v2.
  • Release-tool pre-flight. Add an npm/PyPI/crates name-availability (and "too-similar") check to scripts/release.py before a tag is spent.