From d59cd44043cf6660b469a57dc252a35eddc7c8dc Mon Sep 17 00:00:00 2001 From: kingchenc Date: Sat, 13 Jun 2026 23:34:24 +0200 Subject: [PATCH] docs: standardise language naming + binding security sections (#290) * docs: standardise language naming and add binding security sections Canonical binding list everywhere: Rust, Python, Node.js, WASM, C, C++, C#, Go, Java, R. Use C# (not .NET) as the language label, WASM (not WebAssembly) in prose, and frame the C ABI as a hub rather than a list item. - Bump stale indicator counts (200+ -> 514) and family count (sixteen -> twenty-four) in the Node/Python/WASM and docs READMEs. - Add a short Security section to all eight binding READMEs. - Relabel benchmark rows (C -> C / C++, C# / .NET -> C#). - Fix the 'language stecker' wording in the C#/Go/R API intros. - Documentation only; no code or public API changes. * release.yml: extend install snippets and expose version output Add the missing registry installs to the release body (dotnet, go, Gradle/ Maven Central, r-universe) alongside cargo/pip/npm, and expose a v-stripped 'version' output from the tag step for the Gradle coordinate. Also fix the C-ABI language order in the assets note (C# before Go). * release.yml: correct the release body (10 languages, all registries) Reframe the tagline to '10 languages' (native Rust/Python/Node.js/WASM + a C ABI hub for C, C++, C#, Go, Java, R) instead of '4 language registries', note that C#/Java/Go/R publish to NuGet/Maven/Go/r-universe via their own jobs, and tidy the Node.js label and the C-ABI hub list. --- .github/ISSUE_TEMPLATE/bug_report.md | 4 +-- .github/ISSUE_TEMPLATE/bug_report_detailed.md | 6 ++-- .github/ISSUE_TEMPLATE/feature_request.md | 2 +- .../ISSUE_TEMPLATE/performance_regression.md | 2 +- .github/ISSUE_TEMPLATE/question.md | 2 +- .github/PULL_REQUEST_TEMPLATE.md | 2 +- .github/PULL_REQUEST_TEMPLATE/detailed.md | 4 +-- .github/workflows/release.yml | 28 +++++++++++++++---- ARCHITECTURE.md | 8 +++--- BENCHMARKS.md | 12 ++++---- CHANGELOG.md | 9 ++++++ CONTRIBUTING.md | 4 +-- README.md | 16 +++++------ ROADMAP.md | 4 +-- SUPPORT.md | 2 +- THREAT_MODEL.md | 4 +-- bindings/c/README.md | 15 +++++++--- bindings/csharp/README.md | 19 +++++++++---- bindings/go/README.md | 11 ++++++-- bindings/java/README.md | 13 +++++++-- bindings/node/README.md | 15 +++++++--- bindings/python/README.md | 15 +++++++--- bindings/r/README.md | 11 ++++++-- bindings/wasm/README.md | 21 +++++++++----- docs/README.md | 6 ++-- examples/README.md | 4 +-- examples/csharp/README.md | 4 +-- examples/wasm/README.md | 4 +-- 28 files changed, 166 insertions(+), 81 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 5d5d5cca..2463b1fa 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -30,9 +30,9 @@ assignees: "" ## Environment - Wickra version: -- Language / binding: +- Language / binding: - OS and architecture: -- Rust / Python / Node / .NET version (If relevant): +- Rust / Python / Node.js / .NET version (If relevant): ## Additional context diff --git a/.github/ISSUE_TEMPLATE/bug_report_detailed.md b/.github/ISSUE_TEMPLATE/bug_report_detailed.md index 959abad7..79a844dd 100644 --- a/.github/ISSUE_TEMPLATE/bug_report_detailed.md +++ b/.github/ISSUE_TEMPLATE/bug_report_detailed.md @@ -15,9 +15,9 @@ assignees: [] - [ ] Rust crate (`wickra`) - [ ] Python (`pip install wickra`) - [ ] Node.js (`npm install wickra`) -- [ ] WebAssembly +- [ ] WASM - [ ] C ABI (`bindings/c`) -- [ ] C# / .NET (`Wickra` on NuGet) +- [ ] C# (`Wickra` on NuGet) - [ ] Go (`bindings/go`) - [ ] Java (`org.wickra:wickra` on Maven Central) - [ ] R (`bindings/r`) @@ -31,7 +31,7 @@ assignees: [] | Binding version | `e.g. python 0.4.2 / node 0.4.2` | | OS / arch | `e.g. Windows 11 x86_64, Linux glibc` | | Rust toolchain | `rustc --version` (If building from source) | -| Python / Node / .NET version | `python --version` / `node --version` / `dotnet --version` | +| Python / Node.js / .NET version | `python --version` / `node --version` / `dotnet --version` | ## Minimal reproducer diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 86c0fbc8..ef9113da 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -26,7 +26,7 @@ assignees: "" - [ ] Should be exposed in the Node binding - [ ] Should be exposed in the WASM binding - [ ] Should be exposed in the C ABI -- [ ] Should be exposed in the C# / .NET binding +- [ ] Should be exposed in the C# binding - [ ] Should be exposed in the Go binding - [ ] Should be exposed in the Java binding - [ ] Should be exposed in the R binding diff --git a/.github/ISSUE_TEMPLATE/performance_regression.md b/.github/ISSUE_TEMPLATE/performance_regression.md index 037778c8..1a4e9aeb 100644 --- a/.github/ISSUE_TEMPLATE/performance_regression.md +++ b/.github/ISSUE_TEMPLATE/performance_regression.md @@ -13,7 +13,7 @@ assignees: [] ## Affected code path - Indicator / API: `e.g. EMA.update` -- Binding: `Rust / Python / Node / Wasm / C ABI / C# (.NET) / Go / Java / R` +- Binding: `Rust / Python / Node.js / WASM / C / C++ / C# / Go / Java / R` - Hot loop or one-shot call? ## Versions compared diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md index 7f8173df..54f62afc 100644 --- a/.github/ISSUE_TEMPLATE/question.md +++ b/.github/ISSUE_TEMPLATE/question.md @@ -33,4 +33,4 @@ import wickra as ta ## Environment (Only if relevant) - Wickra version: `e.g. 0.4.2` -- Binding: `Rust / Python / Node / Wasm / C ABI / C# (.NET) / Go / Java / R` +- Binding: `Rust / Python / Node.js / WASM / C / C++ / C# / Go / Java / R` diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 2a0fff61..4c885748 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -22,7 +22,7 @@ - [ ] `cargo clippy --workspace --all-targets -- -D warnings` is clean. - [ ] `cargo test --workspace` passes. - [ ] New behaviour has tests; bug fixes have a regression test. -- [ ] Public API changes are mirrored in the Python / Node / WASM bindings, and the C ABI + C# + Go + Java + R bindings are regenerated +- [ ] Public API changes are mirrored in the Python / Node.js / WASM bindings, and the C ABI + C# + Go + Java + R bindings are regenerated and their type stubs (If applicable). - [ ] The relevant page on the [documentation site](https://docs.wickra.org) and the `README.md` are updated (If applicable). Docs edits go to a diff --git a/.github/PULL_REQUEST_TEMPLATE/detailed.md b/.github/PULL_REQUEST_TEMPLATE/detailed.md index f709a312..fbc02bee 100644 --- a/.github/PULL_REQUEST_TEMPLATE/detailed.md +++ b/.github/PULL_REQUEST_TEMPLATE/detailed.md @@ -22,9 +22,9 @@ Please fill in the sections below. Delete any that don't apply. - [ ] Rust crate (`crates/wickra`) - [ ] Python binding (`bindings/python`) - [ ] Node.js binding (`bindings/node`) -- [ ] WebAssembly binding (`bindings/wasm`) +- [ ] WASM binding (`bindings/wasm`) - [ ] C ABI (`bindings/c`) -- [ ] C# / .NET binding (`bindings/csharp`) +- [ ] C# binding (`bindings/csharp`) - [ ] Go binding (`bindings/go`) - [ ] Java binding (`bindings/java`) - [ ] R binding (`bindings/r`) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c85c6ead..b33e5e71 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -876,6 +876,7 @@ jobs: # bundle to this same release without re-resolving it. outputs: tag: ${{ steps.tag.outputs.tag }} + version: ${{ steps.tag.outputs.version }} steps: - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: @@ -904,6 +905,7 @@ jobs: exit 1 fi echo "tag=$tag" >> "$GITHUB_OUTPUT" + echo "version=${tag#v}" >> "$GITHUB_OUTPUT" echo "::notice::attaching assets to release $tag" - name: Download all build artifacts @@ -941,7 +943,7 @@ jobs: # the provenance bundle is attached (P24, immutability-ready). draft: true body: | - Wickra ${{ github.ref_name }} — streaming-first technical indicators across 4 language registries plus a C ABI. + Wickra ${{ github.ref_name }} — streaming-first technical indicators for 10 languages: native Rust, Python, Node.js, WASM plus a C ABI hub for C, C++, C#, Go, Java, R. ### Install @@ -950,21 +952,37 @@ jobs: pip install wickra npm install wickra npm install wickra-wasm + dotnet add package Wickra + go get github.com/wickra-lib/wickra-go + ``` + + Java (Gradle, Maven Central): + + ```gradle + implementation("org.wickra:wickra:${{ steps.tag.outputs.version }}") + ``` + + R (r-universe): + + ```r + install.packages("wickra", repos = "https://wickra-lib.r-universe.dev") ``` ### Attached assets - Pre-built artefacts for every supported platform — the same files that - were uploaded to crates.io, PyPI, and npm by this workflow run. + Pre-built artefacts for every supported platform — the same files this + workflow run published to crates.io, PyPI, and npm. C# ships to NuGet, + Java to Maven Central, Go to the wickra-go module, and R to r-universe + via their own release jobs. - `*.whl` / `wickra-*.tar.gz` — Python wheels + sdist (5 platforms, ABI3 ≥ 3.9) - - `wickra.*.node` — native Node bindings (linux-x64-gnu, darwin-x64, + - `wickra.*.node` — native Node.js bindings (linux-x64-gnu, darwin-x64, darwin-arm64, win32-x64-msvc) - `wickra-*.tgz` — npm-pack tarballs (main package + per-platform subpackages + WASM) - `*.crate` — cargo source crates (wickra-core, wickra-data, wickra) - `wickra-c-.tar.gz` — C ABI: `include/wickra.h` + `wickra.hpp` and the cdylib/staticlib per target (linux/macos/windows × x64/arm64), - the hub for C / C++ / Go / C# / Java / R + the hub for C, C++, C#, Go, Java and R ### Auto-generated changelog diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index e14f0de8..5a2bfa9e 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -31,7 +31,7 @@ or replace lives behind a separate crate boundary. ┌────────────┼────────────┬────────────────┐ │ │ │ │ ┌──▼───────┐ ┌──▼───────┐ ┌──▼───────────┐ ┌──▼──────────────────┐ -│ Python │ │ Node │ │ WASM │ │ C ABI (cbindgen) │ +│ Python │ │ Node.js │ │ WASM │ │ C ABI (cbindgen) │ │ (PyO3) │ │ (napi-rs)│ │(wasm-bindgen)│ │ cdylib + header │ └──────────┘ └──────────┘ └──────────────┘ └─────────┬───────────┘ │ linked by @@ -41,11 +41,11 @@ or replace lives behind a separate crate boundary. └─────────────────────┘ ``` -Python, Node and WASM are *native* Rust bindings (PyO3 / napi-rs / +Python, Node.js and WASM are *native* Rust bindings (PyO3 / napi-rs / wasm-bindgen). The C ABI is the *hub* every other C-capable language links against: it builds to a `cdylib`/`staticlib` plus a generated `wickra.h`, and downstream languages link that one artifact rather than each re-wrapping the -core. C and C++ link it directly; the **C# / .NET** binding (`bindings/csharp`, +core. C and C++ link it directly; the **C#** binding (`bindings/csharp`, on NuGet), the **Go** binding (`bindings/go`, cgo), the **R** binding (`bindings/r`, `.Call`) and the **Java** binding (`bindings/java`, the Java FFM API / Panama, on Maven Central) are all generated from `wickra.h`. @@ -57,7 +57,7 @@ API / Panama, on Maven Central) are all generated from `wickra.h`. | `wickra-data` | `crates/wickra-data` | CSV reader, tick aggregator, resampler, live exchange feeds (feature-gated) | `tokio`, `tokio-tungstenite` (live), `serde_json` | | `wickra-python` | `bindings/python` | `_wickra` PyO3 module + Python package | `pyo3`, `numpy`, depends on `wickra-core` | | `wickra-node` | `bindings/node` | NAPI-RS native binding | `napi`, depends on `wickra-core` | -| `wickra-wasm` | `bindings/wasm` | WebAssembly binding | `wasm-bindgen`, depends on `wickra-core` | +| `wickra-wasm` | `bindings/wasm` | WASM binding | `wasm-bindgen`, depends on `wickra-core` | | `wickra-c` | `bindings/c` | C ABI hub — `cdylib`/`staticlib` + generated `wickra.h` (cbindgen) | depends on `wickra-core` | | `wickra-examples` | `examples/rust` | runnable binary examples | depends on `wickra`, `wickra-data` | diff --git a/BENCHMARKS.md b/BENCHMARKS.md index fd0f8c3d..db27dbb6 100644 --- a/BENCHMARKS.md +++ b/BENCHMARKS.md @@ -98,8 +98,8 @@ python -m benchmarks.compare_libraries ## 3. Per-binding throughput — the cost of the boundary The sections above compare Wickra against other libraries, which only exists for -Python and Rust (there is no comparable streaming TA library for C, C#, Go, Java, -R or WebAssembly to benchmark against). Every binding calls the **same** Rust +Python and Rust (there is no comparable streaming TA library for C, C++, C#, Go, Java, +R or WASM to benchmark against). Every binding calls the **same** Rust core, so these per-binding benchmarks are **not** a speed claim and **not** a cross-library ratio — they document the raw cost of crossing each language's FFI boundary, in million updates per second (Mupd/s). @@ -127,12 +127,12 @@ AMD Ryzen 9 9950X): | Target | streaming (Mupd/s) | batch (Mupd/s) | |----------------------|-------------------:|---------------:| | Rust core (no FFI) | 391 | 500 | -| C | 383 | 330 | -| C# / .NET | 337 | 244 | +| C / C++ | 383 | 330 | +| C# | 337 | 244 | | Python | 33 | 488 | | Java | 28 | 175 | | Go | 24 | 400 | -| WebAssembly | 19 | 167 | +| WASM | 19 | 167 | | Node.js | 17 | 10 | | R | 0.1 | 193 | @@ -160,7 +160,7 @@ node bindings/node/benchmarks/throughput.js # native napi- cargo build -p wickra-c --release # the C ABI hub cmake -S bindings/c/benchmarks -B build/cbench && cmake --build build/cbench \ && ./build/cbench/throughput # raw C ABI -dotnet run -c Release --project bindings/csharp/benchmarks # C# / .NET (P/Invoke) +dotnet run -c Release --project bindings/csharp/benchmarks # C# (P/Invoke) ( cd bindings/go/benchmarks && go run . ) # Go (cgo) mvn -q -f bindings/java install -DskipTests \ && mvn -q -f bindings/java/benchmarks exec:exec -Dexec.mainClass=org.wickra.benchmarks.Throughput diff --git a/CHANGELOG.md b/CHANGELOG.md index 33599c21..b078b055 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed +- Standardised programming-language naming and ordering across all docs, READMEs, + the documentation site, marketing site, organization profile and GitHub + repository descriptions. Canonical list: + `Rust, Python, Node.js, WASM, C, C++, C#, Go, Java, R`. Uses C# (not .NET) as + the language label, lists C and C++ separately, prefers `Node.js` and `WASM` in + prose, and frames the C ABI as a hub (`C ABI hub → …`) rather than a + language-list entry. Documentation only — no code or public API changes. + ## [0.9.0] - 2026-06-13 Maintenance release: Java build-dependency updates and CI/Dependabot diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a643faec..53af715c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -22,7 +22,7 @@ licensed as above, without any additional terms or conditions. | `bindings/node` | napi-rs bindings (`wickra` on npm). | | `bindings/wasm` | wasm-bindgen bindings (`wickra-wasm` on npm). | | `bindings/c` | C ABI — `cdylib` + `staticlib` + generated `include/wickra.h`. The hub for C / C++ and any C-capable language. | -| `bindings/csharp` | .NET binding over the C ABI (`Wickra` on NuGet) — `[LibraryImport]` P/Invoke generated from `wickra.h`. | +| `bindings/csharp` | C# binding over the C ABI (`Wickra` on NuGet) — `[LibraryImport]` P/Invoke generated from `wickra.h`. | | `bindings/go` | Go binding over the C ABI via cgo (module tag `bindings/go/vX.Y.Z`) — wrappers generated from `wickra.h`. | | `bindings/r` | R binding over the C ABI via `.Call` (R package) — C glue + R wrappers generated from `wickra.h`. | | `bindings/java` | Java binding over the C ABI via the FFM API (Panama, Maven Central) — wrappers generated from `wickra.h`. | @@ -107,7 +107,7 @@ installed. Dependabot also keeps the `.github/requirements` pins current. - **Streaming parity.** An indicator's `batch` output must equal the sequence of `update` calls. - **Bindings.** A change to a public indicator API must be mirrored across the - Python, Node, and WASM bindings, including their type stubs / `.d.ts`. The C ABI + Python, Node.js, and WASM bindings, including their type stubs / `.d.ts`. The C ABI (`bindings/c`) is generated from the core, so regenerate it from the core and commit `src/lib.rs` + `include/wickra.h`. The C# binding (`bindings/csharp`) is generated from `wickra.h`, so regenerate and commit its `Generated/*.g.cs` too. diff --git a/README.md b/README.md index 68938b3c..0629a686 100644 --- a/README.md +++ b/README.md @@ -22,8 +22,8 @@ **Streaming-first technical indicators. Install with `pip install wickra` — no system dependencies.** Wickra is a multi-language technical-analysis library with a Rust core and -native bindings for Python, Node.js and WebAssembly, plus a C ABI that C, C++, -C# / .NET, Go, Java, R and any other C-capable language links against. Every indicator is a +native bindings for Python, Node.js and WASM, plus a C ABI that C, C++, +C#, Go, Java, R and any other C-capable language links against. Every indicator is a state machine that updates in O(1) per new data point, so live trading bots and historical backtests share the exact same implementation. @@ -81,8 +81,8 @@ times to get there. breadth, Renko/Kagi/Point&Figure bars, Ehlers DSP cycles, risk/performance metrics — every single one updating in **O(1) per tick**. TA-Lib ships ~150 and none of them stream. -- **One Rust core, five first-class targets.** Native **Python · Node.js · - WebAssembly · Rust** plus a **C ABI** for C / C++, C# / .NET, Go, Java, R and any other C-capable language — +- **One Rust core, five first-class targets.** Native **Rust · Python · Node.js · + WASM** plus a **C ABI** for C, C++, C#, Go, Java, R and any other C-capable language — identical math, identical results, zero per-language reimplementation and zero GIL bottleneck. - **Correct by construction, not by hope.** Every `update` validates its input, @@ -106,7 +106,7 @@ Every other library forces one of those compromises. Wickra doesn't: | Library | Install | Streaming | Languages | Indicators | Active | |------------------|-------------|-------------|-----------------------------|-----------:|--------| -| **★ Wickra**| **clean** | **yes, O(1)** | **Rust · Python · Node · WASM · C · C# · Go · Java · R** | **514** | **yes** | +| **★ Wickra**| **clean** | **yes, O(1)** | **Rust · Python · Node.js · WASM · C · C++ · C# · Go · Java · R** | **514** | **yes** | | kand | clean | yes | Python · WASM · Rust | ~60 | yes | | ta-rs | clean | yes | Rust only | ~30 | stale | | yata | clean | partial | Rust only | ~35 | yes | @@ -190,7 +190,7 @@ it — regenerate from the core). | Browser / WASM | `npm install wickra-wasm` | `examples/wasm/index.html` | | Rust | `cargo add wickra` | `examples/rust/src/bin/backtest.rs` | | C / C++ (C ABI) | header + library, see [`bindings/c`](bindings/c) | `examples/c/streaming.c` | -| C# / .NET (C ABI) | `dotnet add package Wickra`, see [`bindings/csharp`](bindings/csharp) | `examples/csharp/streaming` | +| C# (C ABI) | `dotnet add package Wickra`, see [`bindings/csharp`](bindings/csharp) | `examples/csharp/streaming` | | Go (cgo, C ABI) | `go get github.com/wickra-lib/wickra/bindings/go`, see [`bindings/go`](bindings/go) | `examples/go/streaming` | | Java (FFM, C ABI) | Maven Central `org.wickra:wickra`, see [`bindings/java`](bindings/java) | `examples/java` (`Streaming`) | | R (`.Call`, C ABI) | `R CMD INSTALL bindings/r`, see [`bindings/r`](bindings/r) | `examples/r/streaming.R` | @@ -264,7 +264,7 @@ wickra/ │ ├── node/ napi-rs (publishes on npm) │ ├── wasm/ wasm-bindgen (browsers, bundlers, Node) │ ├── c/ C ABI (cdylib + staticlib) + generated include/wickra.h -│ ├── csharp/ .NET binding over the C ABI (publishes on NuGet) +│ ├── csharp/ C# binding over the C ABI (publishes on NuGet) │ ├── go/ Go binding over the C ABI via cgo (module tag) │ ├── r/ R binding over the C ABI via .Call (R package) │ └── java/ Java binding over the C ABI via the FFM API (Maven Central) @@ -312,7 +312,7 @@ cargo build -p wickra-c --release cmake -S examples/c -B examples/c/build -DWICKRA_LIB_DIR="$PWD/target/release" cmake --build examples/c/build && ctest --test-dir examples/c/build --output-on-failure -# C# / .NET binding (requires the .NET 8 SDK; links the C ABI above) +# C# binding (requires the .NET 8 SDK; links the C ABI above) dotnet test bindings/csharp/Wickra.Tests/Wickra.Tests.csproj # Go binding (requires a C compiler for cgo; links the C ABI above) diff --git a/ROADMAP.md b/ROADMAP.md index ba0a7524..eaaf37c1 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -21,8 +21,8 @@ minor releases; breaking changes are called out in the changelog. versioning stability for a 1.0 release. - **Performance.** Keep per-tick updates O(1) and maintain the benchmark suite; investigate further allocation and cache improvements. -- **Bindings parity.** Keep the Python, Node.js and WebAssembly bindings — plus - the C ABI and the C# / .NET, Go, Java and R bindings generated from it — in lockstep with the +- **Bindings parity.** Keep the Python, Node.js and WASM bindings — plus + the C ABI and the C#, Go, Java and R bindings generated from it — in lockstep with the Rust core, including type stubs and platform coverage. - **Documentation.** Maintain a deep-dive page per indicator on , plus quickstarts and cookbook material. diff --git a/SUPPORT.md b/SUPPORT.md index 43da8d4d..f9053bd2 100644 --- a/SUPPORT.md +++ b/SUPPORT.md @@ -7,7 +7,7 @@ Thanks for using Wickra! Here is where to get help, depending on what you need. Most questions are answered in the documentation: - **Docs site:** — quickstarts for Rust, Python, - Node.js, WebAssembly, C, C#, Go, Java and R, a per-indicator reference, warmup periods, the + Node.js, WASM, C, C++, C#, Go, Java and R, a per-indicator reference, warmup periods, the data layer, and an FAQ. - **README:** — installation and a quick overview. diff --git a/THREAT_MODEL.md b/THREAT_MODEL.md index 68a1ca38..b0f0c97d 100644 --- a/THREAT_MODEL.md +++ b/THREAT_MODEL.md @@ -3,8 +3,8 @@ This document describes Wickra's attack surface and the threats considered, together with their mitigations. It complements the security assurance case in [`SECURITY.md`](SECURITY.md). Wickra is a computational technical-analysis -library (a Rust core with Python, Node.js and WebAssembly bindings plus a C ABI -and the .NET, Go, Java and R bindings built on it), +library (a Rust core with Python, Node.js and WASM bindings plus a C ABI +and the C#, Go, Java and R bindings built on it), not a network service or trading system; the attack surface is correspondingly small. diff --git a/bindings/c/README.md b/bindings/c/README.md index 958d66dc..cd90fd57 100644 --- a/bindings/c/README.md +++ b/bindings/c/README.md @@ -9,12 +9,12 @@ library plus a generated `wickra.h` — no system dependencies.** Wickra is a multi-language technical-analysis library with a Rust core and -bindings for Python, Node.js and WebAssembly, plus a C ABI for C/C++, C#, Go, Java, R and any +bindings for Python, Node.js and WASM, plus a C ABI for C, C++, C#, Go, Java, R and any other C-capable language. Every indicator is an O(1) streaming state machine, so live trading bots and historical backtests share the exact same implementation. This package is the **C ABI hub**: it compiles the core to a C-compatible shared/static library plus a generated header, so any -C-capable language (C, C++, Go, C#, Java, R) links against one artifact instead +C-capable language (C, C++, C#, Go, Java, R) links against one artifact instead of re-wrapping every indicator natively. ## Install @@ -77,10 +77,17 @@ the main repository and documentation site: - **Docs** (C quickstart, cookbook, TA-Lib migration): - **Runnable examples:** [`examples/c/`](https://github.com/wickra-lib/wickra/tree/main/examples/c) -Wickra ships native bindings for Python, Node.js, WebAssembly and Rust, plus this -C ABI hub that any C-capable language (C, C++, Go, C#, Java, R) links against — +Wickra ships native bindings for Python, Node.js, WASM and Rust, plus this +C ABI hub that any C-capable language (C, C++, C#, Go, Java, R) links against — all exposing the same indicators from the shared Rust core. +## Security + +Found a security issue? **Please don't open a public issue.** Report it privately +via the affected repository's *Security* tab (*"Report a vulnerability"*) or email +**support@wickra.org** with a subject line starting `[wickra security]`. Full +policy: . + ## Disclaimer Wickra is an indicator toolkit, not a trading system. The values it computes diff --git a/bindings/csharp/README.md b/bindings/csharp/README.md index f3b65b41..76613c85 100644 --- a/bindings/csharp/README.md +++ b/bindings/csharp/README.md @@ -1,18 +1,18 @@ -# Wickra — .NET +# Wickra — C# [![CI](https://github.com/wickra-lib/wickra/actions/workflows/ci.yml/badge.svg)](https://github.com/wickra-lib/wickra/actions/workflows/ci.yml) [![codecov](https://codecov.io/gh/wickra-lib/wickra/branch/main/graph/badge.svg)](https://codecov.io/gh/wickra-lib/wickra) [![NuGet](https://img.shields.io/nuget/v/Wickra.svg?logo=nuget&color=blue)](https://www.nuget.org/packages/Wickra) [![License: MIT OR Apache-2.0](https://img.shields.io/badge/license-MIT_OR_Apache--2.0-blue)](https://github.com/wickra-lib/wickra#license) -**Streaming-first technical indicators for .NET. `dotnet add package Wickra` — +**Streaming-first technical indicators for C#. `dotnet add package Wickra` — prebuilt native library, no system dependencies.** Wickra is a multi-language technical-analysis library with a Rust core and -bindings for Python, Node.js and WebAssembly, plus a C ABI for C/C++, C#, Go, Java, R and any +bindings for Python, Node.js and WASM, plus a C ABI for C, C++, C#, Go, Java, R and any other C-capable language. Every indicator is an O(1) streaming state machine, so live trading bots and historical backtests share -the exact same implementation. This package is the .NET binding; it consumes the +the exact same implementation. This package is the C# binding; it consumes the C ABI hub through `[LibraryImport]` P/Invoke and exposes all 514 streaming-first indicators as idiomatic `IDisposable` classes. @@ -73,10 +73,17 @@ the main repository and documentation site: - **Docs** (quickstarts, cookbook, TA-Lib migration): - **Runnable examples:** [`examples/csharp/`](https://github.com/wickra-lib/wickra/tree/main/examples/csharp) -Wickra ships native bindings for Python, Node.js, WebAssembly and Rust, plus a -C ABI hub that any C-capable language (C, C++, Go, C#, Java, R) links against — +Wickra ships native bindings for Python, Node.js, WASM and Rust, plus a +C ABI hub that any C-capable language (C, C++, C#, Go, Java, R) links against — all exposing the same indicators from the shared, `unsafe`-forbidden Rust core. +## Security + +Found a security issue? **Please don't open a public issue.** Report it privately +via the affected repository's *Security* tab (*"Report a vulnerability"*) or email +**support@wickra.org** with a subject line starting `[wickra security]`. Full +policy: . + ## Disclaimer Wickra is an indicator toolkit, not a trading system. The values it computes diff --git a/bindings/go/README.md b/bindings/go/README.md index 79af41dc..6749c272 100644 --- a/bindings/go/README.md +++ b/bindings/go/README.md @@ -8,7 +8,7 @@ **Streaming-first technical indicators for Go, over the Wickra C ABI hub via cgo.** Wickra is a multi-language technical-analysis library with a Rust core and -bindings for Python, Node.js and WebAssembly, plus a C ABI for C/C++, C#, Go, Java, R and +bindings for Python, Node.js and WASM, plus a C ABI for C, C++, C#, Go, Java, R and any other C-capable language. Every indicator is an O(1) streaming state machine, so live trading bots and historical backtests share the exact same implementation. This package is the Go binding; it consumes the C ABI hub through @@ -108,10 +108,17 @@ main repository and documentation site: - **Docs** (quickstarts, cookbook, TA-Lib migration): - **Runnable examples:** [`examples/go/`](https://github.com/wickra-lib/wickra/tree/main/examples/go) -Wickra ships native bindings for Python, Node.js, WebAssembly and Rust, plus a +Wickra ships native bindings for Python, Node.js, WASM and Rust, plus a C ABI hub that any C-capable language (C, C++, C#, Go, Java, R) links against — all exposing the same indicators from the shared, `unsafe`-forbidden Rust core. +## Security + +Found a security issue? **Please don't open a public issue.** Report it privately +via the affected repository's *Security* tab (*"Report a vulnerability"*) or email +**support@wickra.org** with a subject line starting `[wickra security]`. Full +policy: . + ## Disclaimer Wickra is an indicator toolkit, not a trading system. The values it computes are diff --git a/bindings/java/README.md b/bindings/java/README.md index 95e62bc6..cc2f572c 100644 --- a/bindings/java/README.md +++ b/bindings/java/README.md @@ -9,7 +9,7 @@ & Memory API — prebuilt native library, no JNI, no system dependencies.** Wickra is a multi-language technical-analysis library with a Rust core and -bindings for Python, Node.js and WebAssembly, plus a C ABI for C/C++, C#, Go, Java, R +bindings for Python, Node.js and WASM, plus a C ABI for C, C++, C#, Go, Java, R and any other C-capable language. Every indicator is an O(1) streaming state machine, so live trading bots and historical backtests share the exact same implementation. This package is the Java binding; it consumes the C ABI hub @@ -98,10 +98,17 @@ the main repository and documentation site: - **Docs** (quickstarts, cookbook, TA-Lib migration): - **Runnable examples:** [`examples/java/`](https://github.com/wickra-lib/wickra/tree/main/examples/java) -Wickra ships native bindings for Python, Node.js, WebAssembly and Rust, plus a -C ABI hub that any C-capable language (C, C++, Go, C#, Java, R) links against — +Wickra ships native bindings for Python, Node.js, WASM and Rust, plus a +C ABI hub that any C-capable language (C, C++, C#, Go, Java, R) links against — all exposing the same indicators from the shared, `unsafe`-forbidden Rust core. +## Security + +Found a security issue? **Please don't open a public issue.** Report it privately +via the affected repository's *Security* tab (*"Report a vulnerability"*) or email +**support@wickra.org** with a subject line starting `[wickra security]`. Full +policy: . + ## Disclaimer Wickra is an indicator toolkit, not a trading system. The values it computes diff --git a/bindings/node/README.md b/bindings/node/README.md index 5854f55d..faccedee 100644 --- a/bindings/node/README.md +++ b/bindings/node/README.md @@ -9,11 +9,11 @@ prebuilt native binary, no system dependencies.** Wickra is a multi-language technical-analysis library with a Rust core and -bindings for Python, Node.js and WebAssembly, plus a C ABI for C/C++, C#, Go, Java, R and any +bindings for Python, Node.js and WASM, plus a C ABI for C, C++, C#, Go, Java, R and any other C-capable language. Every indicator is an O(1) streaming state machine, so live trading bots and historical backtests share the exact same implementation. This package is the Node.js binding (napi-rs); -it exposes 200+ streaming-first indicators across sixteen families. +it exposes all 514 streaming-first indicators across twenty-four families. ## Install @@ -68,10 +68,17 @@ the main repository and documentation site: - **Docs** (quickstarts, cookbook, TA-Lib migration): - **Runnable examples:** [`examples/node/`](https://github.com/wickra-lib/wickra/tree/main/examples/node) -Wickra ships native bindings for Python, Node.js, WebAssembly and Rust, plus a -C ABI hub that any C-capable language (C, C++, Go, C#, Java, R) links against — +Wickra ships native bindings for Python, Node.js, WASM and Rust, plus a +C ABI hub that any C-capable language (C, C++, C#, Go, Java, R) links against — all exposing the same indicators from the shared, `unsafe`-forbidden Rust core. +## Security + +Found a security issue? **Please don't open a public issue.** Report it privately +via the affected repository's *Security* tab (*"Report a vulnerability"*) or email +**support@wickra.org** with a subject line starting `[wickra security]`. Full +policy: . + ## Disclaimer Wickra is an indicator toolkit, not a trading system. The values it computes diff --git a/bindings/python/README.md b/bindings/python/README.md index cfe38bc2..e01301d8 100644 --- a/bindings/python/README.md +++ b/bindings/python/README.md @@ -9,11 +9,11 @@ system dependencies, no C build tooling.** Wickra is a multi-language technical-analysis library with a Rust core and -bindings for Python, Node.js and WebAssembly, plus a C ABI for C/C++, C#, Go, Java, R and any +bindings for Python, Node.js and WASM, plus a C ABI for C, C++, C#, Go, Java, R and any other C-capable language. Every indicator is an O(1) streaming state machine, so live trading bots and historical backtests share the exact same implementation. This package is the Python binding (PyO3); it -exposes 200+ streaming-first indicators across sixteen families. +exposes all 514 streaming-first indicators across twenty-four families. ## Install @@ -73,10 +73,17 @@ the main repository and documentation site: - **Docs** (quickstarts, cookbook, TA-Lib migration): - **Runnable examples:** [`examples/python/`](https://github.com/wickra-lib/wickra/tree/main/examples/python) -Wickra ships native bindings for Python, Node.js, WebAssembly and Rust, plus a -C ABI hub that any C-capable language (C, C++, Go, C#, Java, R) links against — +Wickra ships native bindings for Python, Node.js, WASM and Rust, plus a +C ABI hub that any C-capable language (C, C++, C#, Go, Java, R) links against — all exposing the same indicators from the shared, `unsafe`-forbidden Rust core. +## Security + +Found a security issue? **Please don't open a public issue.** Report it privately +via the affected repository's *Security* tab (*"Report a vulnerability"*) or email +**support@wickra.org** with a subject line starting `[wickra security]`. Full +policy: . + ## Disclaimer Wickra is an indicator toolkit, not a trading system. The values it computes diff --git a/bindings/r/README.md b/bindings/r/README.md index 2d81bf1e..db14d983 100644 --- a/bindings/r/README.md +++ b/bindings/r/README.md @@ -7,7 +7,7 @@ **Streaming-first technical indicators for R, over the Wickra C ABI hub via `.Call`.** Wickra is a multi-language technical-analysis library with a Rust core and -bindings for Python, Node.js and WebAssembly, plus a C ABI for C/C++, C#, Go, Java, R +bindings for Python, Node.js and WASM, plus a C ABI for C, C++, C#, Go, Java, R and any other C-capable language. Every indicator is an O(1) streaming state machine, so live trading and historical backtests share the exact same implementation. This package is the R binding; it reaches the C ABI hub through @@ -79,10 +79,17 @@ main repository and documentation site: - **Docs** (quickstarts, cookbook, TA-Lib migration): - **Runnable examples:** [`examples/r/`](https://github.com/wickra-lib/wickra/tree/main/examples/r) -Wickra ships native bindings for Python, Node.js, WebAssembly and Rust, plus a +Wickra ships native bindings for Python, Node.js, WASM and Rust, plus a C ABI hub that any C-capable language (C, C++, C#, Go, Java, R) links against — all exposing the same indicators from the shared, `unsafe`-forbidden Rust core. +## Security + +Found a security issue? **Please don't open a public issue.** Report it privately +via the affected repository's *Security* tab (*"Report a vulnerability"*) or email +**support@wickra.org** with a subject line starting `[wickra security]`. Full +policy: . + ## Disclaimer Wickra is an indicator toolkit, not a trading system. The values it computes are diff --git a/bindings/wasm/README.md b/bindings/wasm/README.md index 0ce0f92a..ac06844c 100644 --- a/bindings/wasm/README.md +++ b/bindings/wasm/README.md @@ -1,4 +1,4 @@ -# Wickra — WebAssembly +# Wickra — WASM [![CI](https://github.com/wickra-lib/wickra/actions/workflows/ci.yml/badge.svg)](https://github.com/wickra-lib/wickra/actions/workflows/ci.yml) [![codecov](https://codecov.io/gh/wickra-lib/wickra/branch/main/graph/badge.svg)](https://codecov.io/gh/wickra-lib/wickra) @@ -9,12 +9,12 @@ wickra-wasm` — pure WebAssembly, runs anywhere a modern JS engine does.** Wickra is a multi-language technical-analysis library with a Rust core and -bindings for Python, Node.js and WebAssembly, plus a C ABI for C/C++, C#, Go, Java, R and any +bindings for Python, Node.js and WASM, plus a C ABI for C, C++, C#, Go, Java, R and any other C-capable language. Every indicator is an O(1) streaming state machine, so live trading dashboards and historical backtests -share the exact same implementation. This package is the WebAssembly binding -(wasm-bindgen, built for the `web` target); it exposes 200+ streaming-first -indicators across sixteen families. +share the exact same implementation. This package is the WASM binding +(wasm-bindgen, built for the `web` target); it exposes all 514 streaming-first +indicators across twenty-four families. ## Install @@ -67,10 +67,17 @@ the main repository and documentation site: - **Docs** (quickstarts, cookbook, TA-Lib migration): - **Runnable browser examples:** [`examples/wasm/`](https://github.com/wickra-lib/wickra/tree/main/examples/wasm) -Wickra ships native bindings for Python, Node.js, WebAssembly and Rust, plus a -C ABI hub that any C-capable language (C, C++, Go, C#, Java, R) links against — +Wickra ships native bindings for Python, Node.js, WASM and Rust, plus a +C ABI hub that any C-capable language (C, C++, C#, Go, Java, R) links against — all exposing the same indicators from the shared, `unsafe`-forbidden Rust core. +## Security + +Found a security issue? **Please don't open a public issue.** Report it privately +via the affected repository's *Security* tab (*"Report a vulnerability"*) or email +**support@wickra.org** with a subject line starting `[wickra security]`. Full +policy: . + ## Disclaimer Wickra is an indicator toolkit, not a trading system. The values it computes diff --git a/docs/README.md b/docs/README.md index 36660bc0..15d089c7 100644 --- a/docs/README.md +++ b/docs/README.md @@ -14,11 +14,13 @@ That includes: [Java](https://docs.wickra.org/Quickstart-Java), and [R](https://docs.wickra.org/Quickstart-R). - A per-indicator deep dive for every one of the **514 indicators** across - the sixteen families (Moving Averages, Momentum Oscillators, Trend & + the twenty-four families (Moving Averages, Momentum Oscillators, Trend & Directional, Price Oscillators, Volatility & Bands, Bands & Channels, Trailing Stops, Volume, Price Statistics, Ehlers / Cycle DSP, Pivots & S/R, DeMark, Ichimoku & Charts, Candlestick Patterns, Market Profile, - Risk / Performance) — see the + Risk / Performance, Microstructure, Derivatives, Alt-Chart Bars, Market + Breadth, Seasonality & Session, Chart Patterns, Harmonic Patterns, + Fibonacci) — see the [indicators overview](https://docs.wickra.org/Indicators-Overview). - **Reference pages**: [warmup periods](https://docs.wickra.org/Warmup-Periods), [streaming vs batch](https://docs.wickra.org/Streaming-vs-Batch), diff --git a/examples/README.md b/examples/README.md index 90b15ec7..8f265b0e 100644 --- a/examples/README.md +++ b/examples/README.md @@ -48,7 +48,7 @@ three `strategy_*`) build against the bundled datasets and run under `ctest`. run in CI; run them by hand. `parallel_assets` links OpenMP when the toolchain provides it and falls back to a single-threaded run otherwise. -## C# / .NET — `examples/csharp/` +## C# — `examples/csharp/` Build the C ABI library first (`cargo build -p wickra-c --release`), then run any example with the .NET 8 SDK; the binding resolves the native library automatically. @@ -173,7 +173,7 @@ cd ../../examples/node && npm install # links wickra + installs `ws` | `strategy_macd_adx.js` | Hourly BTCUSDT trend-follower: MACD crossover entries gated by ADX(14) > 20. | `node strategy_macd_adx.js` | | `strategy_bollinger_squeeze.js` | Daily BTCUSDT Bollinger-squeeze breakout with ATR(14) trailing stop. | `node strategy_bollinger_squeeze.js` | -## WebAssembly — `examples/wasm/` +## WASM — `examples/wasm/` Build the WASM module first (one-time): diff --git a/examples/csharp/README.md b/examples/csharp/README.md index 43b3e403..da1cf515 100644 --- a/examples/csharp/README.md +++ b/examples/csharp/README.md @@ -1,6 +1,6 @@ -# Wickra examples — C# / .NET +# Wickra examples — C# -Runnable .NET examples for the [Wickra .NET binding](../../bindings/csharp). +Runnable C# examples for the [Wickra C# binding](../../bindings/csharp). Each example is a small console project that references the `Wickra` project and resolves the native library automatically (from `target/release` during local development, or the NuGet `runtimes/` layout when packaged). diff --git a/examples/wasm/README.md b/examples/wasm/README.md index f4a0c0fd..5ae5818a 100644 --- a/examples/wasm/README.md +++ b/examples/wasm/README.md @@ -1,6 +1,6 @@ # Wickra WASM examples -Browser demos for the `wickra-wasm` WebAssembly binding. Every demo loads +Browser demos for the `wickra-wasm` WASM binding. Every demo loads the module the same way (`init()` then construct indicators) so the patterns transfer one-to-one to your own page. @@ -61,4 +61,4 @@ indicators tracks those. - [Quickstart: WASM](https://docs.wickra.org/Quickstart-WASM) — module-load flow, `wasm-pack` targets, and the streaming API. - [examples/README.md](../README.md) — cross-language index, including - the Rust, Python, Node, C and C# siblings of every demo above. + the Rust, Python, Node.js, C and C# siblings of every demo above.