wickra-wasm 0.7.8 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
  Wickra is a multi-language technical-analysis library with a Rust core and
22
22
  native bindings for Python, Node.js and WebAssembly, plus a C ABI that C, C++,
23
- C# / .NET, Go, R and any other C-capable language links against. Every indicator is a
23
+ C# / .NET, Go, Java, R and any other C-capable language links against. Every indicator is a
24
24
  state machine that updates in O(1) per new data point, so live trading bots and
25
25
  historical backtests share the exact same implementation.
26
26
 
@@ -78,7 +78,7 @@ times to get there.
78
78
  metrics — every single one updating in **O(1) per tick**. TA-Lib ships ~150 and
79
79
  none of them stream.
80
80
  - **One Rust core, five first-class targets.** Native **Python · Node.js ·
81
- WebAssembly · Rust** plus a **C ABI** for C / C++, C# / .NET, Go, R and any other C-capable language —
81
+ WebAssembly · Rust** plus a **C ABI** for C / C++, C# / .NET, Go, Java, R and any other C-capable language —
82
82
  identical math, identical results, zero per-language reimplementation and zero
83
83
  GIL bottleneck.
84
84
  - **Correct by construction, not by hope.** Every `update` validates its input,
@@ -103,7 +103,7 @@ Every other library forces one of those compromises. Wickra doesn't:
103
103
  | Library | Install | Streaming | Languages | Indicators | Active |
104
104
  |------------------|-------------|-------------|-----------------------------|-----------:|--------|
105
105
  | **★ Wickra**| **clean** | **yes, O(1)** | **Rust · Python · Node · WASM** | **514** | **yes** |
106
- | | | | **C · C# · Go · R** | | |
106
+ | | | | **C · C# · Go · Java · R** | | |
107
107
  | kand | clean | yes | Python · WASM · Rust | ~60 | yes |
108
108
  | ta-rs | clean | yes | Rust only | ~30 | stale |
109
109
  | yata | clean | partial | Rust only | ~35 | yes |
@@ -175,7 +175,7 @@ construct it in signed mode (`Doji::new().signed()`, `Doji(signed=True)`,
175
175
  `new Doji(true)`) for a dragonfly / gravestone `±1` reading.
176
176
 
177
177
  Adding a new indicator means implementing one trait in Rust; every binding
178
- inherits it automatically (the C ABI — and the C#, Go and R bindings generated from
178
+ inherits it automatically (the C ABI — and the C#, Go, Java and R bindings generated from
179
179
  it — regenerate from the core).
180
180
 
181
181
  ## Languages
@@ -189,6 +189,7 @@ it — regenerate from the core).
189
189
  | C / C++ (C ABI) | header + library, see [`bindings/c`](bindings/c) | `examples/c/streaming.c` |
190
190
  | C# / .NET (C ABI) | `dotnet add package Wickra`, see [`bindings/csharp`](bindings/csharp) | `examples/csharp/streaming` |
191
191
  | Go (cgo, C ABI) | `go get github.com/wickra-lib/wickra/bindings/go`, see [`bindings/go`](bindings/go) | `examples/go/streaming` |
192
+ | Java (FFM, C ABI) | Maven Central `org.wickra:wickra`, see [`bindings/java`](bindings/java) | `examples/java` (`Streaming`) |
192
193
  | R (`.Call`, C ABI) | `R CMD INSTALL bindings/r`, see [`bindings/r`](bindings/r) | `examples/r/streaming.R` |
193
194
 
194
195
  Each binding ships several runnable examples (streaming, backtest, live feed);
@@ -262,7 +263,8 @@ wickra/
262
263
  │ ├── c/ C ABI (cdylib + staticlib) + generated include/wickra.h
263
264
  │ ├── csharp/ .NET binding over the C ABI (publishes on NuGet)
264
265
  │ ├── go/ Go binding over the C ABI via cgo (module tag)
265
- └── r/ R binding over the C ABI via .Call (R package)
266
+ ├── r/ R binding over the C ABI via .Call (R package)
267
+ │ └── java/ Java binding over the C ABI via the FFM API (Maven Central)
266
268
  ├── examples/ examples/README.md indexes every language
267
269
  │ ├── data/ real BTCUSDT OHLCV datasets, one per timeframe
268
270
  │ ├── rust/ Rust workspace member (`wickra-examples`)
@@ -272,7 +274,8 @@ wickra/
272
274
  │ ├── c/ C smoke + streaming, C++ RAII wrapper
273
275
  │ ├── csharp/ streaming, backtest, strategies (load `Wickra`)
274
276
  │ ├── go/ streaming, backtest, strategies (cgo binding)
275
- └── r/ streaming, backtest, strategies (.Call binding)
277
+ ├── r/ streaming, backtest, strategies (.Call binding)
278
+ │ └── java/ streaming, backtest, strategies (FFM binding)
276
279
  └── .github/workflows/ CI and release pipelines
277
280
  ```
278
281
 
@@ -316,6 +319,9 @@ cd bindings/go && go test ./...
316
319
  # R binding (requires a C toolchain / Rtools; links the C ABI above)
317
320
  WICKRA_INCLUDE_DIR="$PWD/bindings/c/include" WICKRA_LIB_DIR="$PWD/target/release" \
318
321
  R CMD INSTALL bindings/r
322
+
323
+ # Java binding (requires JDK 22+ and Maven; links the C ABI above)
324
+ mvn -f bindings/java test
319
325
  ```
320
326
 
321
327
  ## Testing
@@ -339,6 +345,8 @@ Every layer is covered; run the suites with the commands in
339
345
  (scalar/batch, multi-output, bars, profile, array input), reset, and lifecycle.
340
346
  - `bindings/r`: `testthat` cases covering one indicator per FFI archetype
341
347
  (scalar/batch, multi-output, bars, profile, array input), reset, and validation.
348
+ - `bindings/java`: JUnit cases covering one indicator per FFI archetype
349
+ (scalar/batch, multi-output, bars, profile, array input) plus batch equivalence.
342
350
 
343
351
  ## Contributing
344
352
 
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "kingchenc <support@wickra.org>"
6
6
  ],
7
7
  "description": "WASM bindings for the Wickra streaming-first technical indicators library.",
8
- "version": "0.7.8",
8
+ "version": "0.8.0",
9
9
  "license": "MIT OR Apache-2.0",
10
10
  "repository": {
11
11
  "type": "git",
Binary file