From 961fc1f3dc3c42a9165fdf2371173ff8e1a9a6a4 Mon Sep 17 00:00:00 2001 From: kingchenc Date: Sat, 23 May 2026 10:50:29 +0200 Subject: [PATCH] chore(node, readme): SPDX license, Node 18 engines, bench hardware spec (R15, R18, R19) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit R15 — `bindings/node/package.json` and all six per-platform subpackage templates (`npm/{darwin-arm64,darwin-x64,linux-arm64-gnu,linux-x64-gnu, win32-arm64-msvc,win32-x64-msvc}/package.json`) plus the WASM `release.yml` enrich step switch the `license` field from the npm convention `SEE LICENSE IN LICENSE` to the SPDX identifier `PolyForm-Noncommercial-1.0.0`. npm's license search and downstream tooling can now surface the actual license. R18 — every `engines.node` field is bumped from `>= 16` to `>= 18`. The package's test script (`node --test __tests__/`) uses the built-in `node --test` runner that landed in Node 18; advertising support for Node 16 / 17 was a guarantee we never verified (CI tests on Node 18 / 20 only) and would have produced a confusing error on those versions. R19 — README's benchmark section gains an explicit hardware / software-version block and reframes the absolute µs values as a relative-speedup snapshot rather than a universal contract. Also tells the reader how to reproduce locally (`pip install -e bindings/python[bench]` + `python -m benchmarks.compare_libraries`) and where the CI artefact lives. Side effects: - R16 / R17 (built wheel under `bindings/python/dist/` and `examples/node/node_modules/`) — verified that both are already covered by `.gitignore` (`*.whl`, `dist/`, `**/node_modules/`) and were never tracked by git. The local directories have been cleared; no `.gitignore` change needed and no committed file removed. --- .github/workflows/release.yml | 2 +- README.md | 16 +++++++++++++++- bindings/node/npm/darwin-arm64/package.json | 4 ++-- bindings/node/npm/darwin-x64/package.json | 4 ++-- bindings/node/npm/linux-arm64-gnu/package.json | 4 ++-- bindings/node/npm/linux-x64-gnu/package.json | 4 ++-- bindings/node/npm/win32-arm64-msvc/package.json | 4 ++-- bindings/node/npm/win32-x64-msvc/package.json | 4 ++-- bindings/node/package.json | 4 ++-- 9 files changed, 30 insertions(+), 16 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2b53b838..0267bc9b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -355,7 +355,7 @@ jobs: pkg.repository = { type: 'git', url: 'https://github.com/kingchenc/wickra' }; pkg.homepage = 'https://github.com/kingchenc/wickra'; pkg.bugs = { url: 'https://github.com/kingchenc/wickra/issues' }; - pkg.license = 'SEE LICENSE IN LICENSE'; + pkg.license = 'PolyForm-Noncommercial-1.0.0'; fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2)); " diff --git a/README.md b/README.md index a9867524..cc9da99e 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,21 @@ multi-language reach, and active maintenance. ## Benchmark: how much faster is "streaming-first"? -Reproduced on this machine with `python -m benchmarks.compare_libraries`. +The numbers below were measured on a single developer workstation and are not +guaranteed to reproduce identically on different hardware — absolute µs values +depend on CPU, memory clock and OS scheduler. Read them as **relative +speedups** between libraries on identical input, not as a universal +performance contract. + +- **Reproduced on:** Windows 11 Pro 26200, AMD Ryzen 9 7950X3D, 64 GB DDR5, + Rust 1.92 (release profile, `lto = "fat"`, `codegen-units = 1`), + Python 3.12, Node 20. +- **Reproduce yourself:** `pip install -e bindings/python[bench]` then + `python -m benchmarks.compare_libraries`. The script auto-detects every + installed peer library and runs them on the same generated inputs as + Wickra. The CI job `cross-library-bench` runs the same script on every + push and uploads the raw report as a build artefact. + Lower µs/op = faster. Wickra wins every batch category outright, and the streaming gap widens linearly with how much history a batch-only library has to recompute on every tick. diff --git a/bindings/node/npm/darwin-arm64/package.json b/bindings/node/npm/darwin-arm64/package.json index 790575d3..3f1ab105 100644 --- a/bindings/node/npm/darwin-arm64/package.json +++ b/bindings/node/npm/darwin-arm64/package.json @@ -6,9 +6,9 @@ "files": [ "wickra.darwin-arm64.node" ], - "license": "SEE LICENSE IN LICENSE", + "license": "PolyForm-Noncommercial-1.0.0", "engines": { - "node": ">= 16" + "node": ">= 18" }, "os": [ "darwin" diff --git a/bindings/node/npm/darwin-x64/package.json b/bindings/node/npm/darwin-x64/package.json index 7157020d..4ec5f26e 100644 --- a/bindings/node/npm/darwin-x64/package.json +++ b/bindings/node/npm/darwin-x64/package.json @@ -6,9 +6,9 @@ "files": [ "wickra.darwin-x64.node" ], - "license": "SEE LICENSE IN LICENSE", + "license": "PolyForm-Noncommercial-1.0.0", "engines": { - "node": ">= 16" + "node": ">= 18" }, "os": [ "darwin" diff --git a/bindings/node/npm/linux-arm64-gnu/package.json b/bindings/node/npm/linux-arm64-gnu/package.json index 529b5791..f3a3958c 100644 --- a/bindings/node/npm/linux-arm64-gnu/package.json +++ b/bindings/node/npm/linux-arm64-gnu/package.json @@ -6,9 +6,9 @@ "files": [ "wickra.linux-arm64-gnu.node" ], - "license": "SEE LICENSE IN LICENSE", + "license": "PolyForm-Noncommercial-1.0.0", "engines": { - "node": ">= 16" + "node": ">= 18" }, "os": [ "linux" diff --git a/bindings/node/npm/linux-x64-gnu/package.json b/bindings/node/npm/linux-x64-gnu/package.json index dfb3d294..f8fcf274 100644 --- a/bindings/node/npm/linux-x64-gnu/package.json +++ b/bindings/node/npm/linux-x64-gnu/package.json @@ -6,9 +6,9 @@ "files": [ "wickra.linux-x64-gnu.node" ], - "license": "SEE LICENSE IN LICENSE", + "license": "PolyForm-Noncommercial-1.0.0", "engines": { - "node": ">= 16" + "node": ">= 18" }, "os": [ "linux" diff --git a/bindings/node/npm/win32-arm64-msvc/package.json b/bindings/node/npm/win32-arm64-msvc/package.json index 0c4a1a0f..0018047c 100644 --- a/bindings/node/npm/win32-arm64-msvc/package.json +++ b/bindings/node/npm/win32-arm64-msvc/package.json @@ -6,9 +6,9 @@ "files": [ "wickra.win32-arm64-msvc.node" ], - "license": "SEE LICENSE IN LICENSE", + "license": "PolyForm-Noncommercial-1.0.0", "engines": { - "node": ">= 16" + "node": ">= 18" }, "os": [ "win32" diff --git a/bindings/node/npm/win32-x64-msvc/package.json b/bindings/node/npm/win32-x64-msvc/package.json index 1b5cabbc..c59693f0 100644 --- a/bindings/node/npm/win32-x64-msvc/package.json +++ b/bindings/node/npm/win32-x64-msvc/package.json @@ -6,9 +6,9 @@ "files": [ "wickra.win32-x64-msvc.node" ], - "license": "SEE LICENSE IN LICENSE", + "license": "PolyForm-Noncommercial-1.0.0", "engines": { - "node": ">= 16" + "node": ">= 18" }, "os": [ "win32" diff --git a/bindings/node/package.json b/bindings/node/package.json index 13dad6d7..ce229e69 100644 --- a/bindings/node/package.json +++ b/bindings/node/package.json @@ -5,7 +5,7 @@ "author": "kingchenc ", "main": "index.js", "types": "index.d.ts", - "license": "SEE LICENSE IN LICENSE", + "license": "PolyForm-Noncommercial-1.0.0", "keywords": [ "trading", "indicators", @@ -44,7 +44,7 @@ } }, "engines": { - "node": ">= 16" + "node": ">= 18" }, "optionalDependencies": { "wickra-linux-x64-gnu": "0.1.4",