chore(node, readme): SPDX license, Node 18 engines, bench hardware spec (R15, R18, R19)

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.
This commit is contained in:
kingchenc
2026-05-23 10:50:29 +02:00
parent 183ebec7ba
commit 961fc1f3dc
9 changed files with 30 additions and 16 deletions
+1 -1
View File
@@ -355,7 +355,7 @@ jobs:
pkg.repository = { type: 'git', url: 'https://github.com/kingchenc/wickra' }; pkg.repository = { type: 'git', url: 'https://github.com/kingchenc/wickra' };
pkg.homepage = 'https://github.com/kingchenc/wickra'; pkg.homepage = 'https://github.com/kingchenc/wickra';
pkg.bugs = { url: 'https://github.com/kingchenc/wickra/issues' }; 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)); fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2));
" "
+15 -1
View File
@@ -52,7 +52,21 @@ multi-language reach, and active maintenance.
## Benchmark: how much faster is "streaming-first"? ## 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 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 streaming gap widens linearly with how much history a batch-only library has
to recompute on every tick. to recompute on every tick.
+2 -2
View File
@@ -6,9 +6,9 @@
"files": [ "files": [
"wickra.darwin-arm64.node" "wickra.darwin-arm64.node"
], ],
"license": "SEE LICENSE IN LICENSE", "license": "PolyForm-Noncommercial-1.0.0",
"engines": { "engines": {
"node": ">= 16" "node": ">= 18"
}, },
"os": [ "os": [
"darwin" "darwin"
+2 -2
View File
@@ -6,9 +6,9 @@
"files": [ "files": [
"wickra.darwin-x64.node" "wickra.darwin-x64.node"
], ],
"license": "SEE LICENSE IN LICENSE", "license": "PolyForm-Noncommercial-1.0.0",
"engines": { "engines": {
"node": ">= 16" "node": ">= 18"
}, },
"os": [ "os": [
"darwin" "darwin"
@@ -6,9 +6,9 @@
"files": [ "files": [
"wickra.linux-arm64-gnu.node" "wickra.linux-arm64-gnu.node"
], ],
"license": "SEE LICENSE IN LICENSE", "license": "PolyForm-Noncommercial-1.0.0",
"engines": { "engines": {
"node": ">= 16" "node": ">= 18"
}, },
"os": [ "os": [
"linux" "linux"
+2 -2
View File
@@ -6,9 +6,9 @@
"files": [ "files": [
"wickra.linux-x64-gnu.node" "wickra.linux-x64-gnu.node"
], ],
"license": "SEE LICENSE IN LICENSE", "license": "PolyForm-Noncommercial-1.0.0",
"engines": { "engines": {
"node": ">= 16" "node": ">= 18"
}, },
"os": [ "os": [
"linux" "linux"
@@ -6,9 +6,9 @@
"files": [ "files": [
"wickra.win32-arm64-msvc.node" "wickra.win32-arm64-msvc.node"
], ],
"license": "SEE LICENSE IN LICENSE", "license": "PolyForm-Noncommercial-1.0.0",
"engines": { "engines": {
"node": ">= 16" "node": ">= 18"
}, },
"os": [ "os": [
"win32" "win32"
@@ -6,9 +6,9 @@
"files": [ "files": [
"wickra.win32-x64-msvc.node" "wickra.win32-x64-msvc.node"
], ],
"license": "SEE LICENSE IN LICENSE", "license": "PolyForm-Noncommercial-1.0.0",
"engines": { "engines": {
"node": ">= 16" "node": ">= 18"
}, },
"os": [ "os": [
"win32" "win32"
+2 -2
View File
@@ -5,7 +5,7 @@
"author": "kingchenc <kingchencp@gmail.com>", "author": "kingchenc <kingchencp@gmail.com>",
"main": "index.js", "main": "index.js",
"types": "index.d.ts", "types": "index.d.ts",
"license": "SEE LICENSE IN LICENSE", "license": "PolyForm-Noncommercial-1.0.0",
"keywords": [ "keywords": [
"trading", "trading",
"indicators", "indicators",
@@ -44,7 +44,7 @@
} }
}, },
"engines": { "engines": {
"node": ">= 16" "node": ">= 18"
}, },
"optionalDependencies": { "optionalDependencies": {
"wickra-linux-x64-gnu": "0.1.4", "wickra-linux-x64-gnu": "0.1.4",