Compare commits

...

9 Commits

Author SHA1 Message Date
kingchenc 4d04ab8227 ci(links): exclude GitHub stargazers/network-members from link check (#358)
GitHub returns 404 for /stargazers and /network/members to anonymous clients
(anti-scraping); the README social-footer badges link there, so the lychee link
check (the non-blocking ci.yml job and the standalone links.yml, both using this
config) flagged them as dead. The pages are live in a browser. Exclude them.
2026-07-08 18:29:05 +02:00
kingchenc 7d4ca8c572 fix(deps): bump crossbeam-epoch to 0.9.20 (RUSTSEC-2026-0204) (#359)
RustSec published RUSTSEC-2026-0204: an invalid pointer dereference in the
fmt::Pointer impl for crossbeam-epoch's Atomic and Shared when the underlying
pointer is invalid. It reaches us transitively via crossbeam-deque. The fix is
a lock-only patch bump to the already-compatible 0.9.20 (no Cargo.toml or code
change). cargo-deny's advisories check now passes.
2026-07-08 18:08:37 +02:00
kingchenc d31e127ae2 ci(zizmor): suppress impostor-commit on the dtolnay/rust-toolchain pin (#357)
dtolnay/rust-toolchain moved from rolling stable/nightly branches to version
tags, so the pinned (still valid, still immutable) SHA is no longer reachable
from a branch and zizmor flags it as an impostor-commit. Add the same
`# zizmor: ignore[impostor-commit]` marker the shazam/copilot repos already
use. Comment-only; the action SHA is unchanged.
2026-07-06 12:19:51 +02:00
kingchenc ffc80754d8 docs(readme): bust Camo cache on the star-history image (#356)
The star-history snapshot in the .github repo was briefly overwritten
with a data-less chart; GitHub's Camo image proxy cached that blank SVG.
Append a ?v cache-buster to the <img> URL so Camo refetches the restored
snapshot (same technique as the self-updating banner) and the star curve
renders again.
2026-07-05 23:40:03 +02:00
kingchenc f2b92f89ee docs: add an Ecosystem section to the README (#355)
* docs: add an Ecosystem section to the README

Link the products built on the Wickra core — wickra-exchange,
wickra-backtest, wickra-terminal, wickra-screener and wickra-xray — plus
wickra-radar / wickra-copilot / wickra-shazam as coming soon, and the
docs and marketing sites.

* docs(readme): surface the ecosystem teaser at the top, under the live demo

* docs: list all eight ecosystem products as shipped

wickra-radar, wickra-copilot and wickra-shazam are now live, so drop
the 'coming soon'/'on the way' wording and link them like the rest.
2026-07-04 17:24:16 +02:00
dependabot[bot] 350230cd07 deps(actions): bump the github-actions group with 9 updates (#354)
Bumps the github-actions group with 9 updates:

| Package | From | To |
| --- | --- | --- |
| [actions/setup-python](https://github.com/actions/setup-python) | `6.2.0` | `6.3.0` |
| [taiki-e/install-action](https://github.com/taiki-e/install-action) | `2.82.1` | `2.82.5` |
| [actions/cache](https://github.com/actions/cache) | `5.0.5` | `6.1.0` |
| [actions/setup-go](https://github.com/actions/setup-go) | `6.4.0` | `6.5.0` |
| [r-lib/actions/setup-r](https://github.com/r-lib/actions) | `2.12.0` | `2.12.1` |
| [r-lib/actions/setup-r-dependencies](https://github.com/r-lib/actions) | `2.12.0` | `2.12.1` |
| [actions/setup-java](https://github.com/actions/setup-java) | `5.3.0` | `5.4.0` |
| [actions/attest-build-provenance](https://github.com/actions/attest-build-provenance) | `4.1.0` | `4.1.1` |
| [zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action) | `0.5.6` | `0.5.7` |


Updates `actions/setup-python` from 6.2.0 to 6.3.0
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/a309ff8b426b58ec0e2a45f0f869d46889d02405...ece7cb06caefa5fff74198d8649806c4678c61a1)

Updates `taiki-e/install-action` from 2.82.1 to 2.82.5
- [Release notes](https://github.com/taiki-e/install-action/releases)
- [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/install-action/compare/8b3c737da4b541bf0fb5a3e0488ff20535badac9...bffeee26d4db9be238a4ea78d8826604ebcb594d)

Updates `actions/cache` from 5.0.5 to 6.1.0
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/27d5ce7f107fe9357f9df03efb73ab90386fccae...55cc8345863c7cc4c66a329aec7e433d2d1c52a9)

Updates `actions/setup-go` from 6.4.0 to 6.5.0
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/4a3601121dd01d1626a1e23e37211e3254c1c06c...924ae3a1cded613372ab5595356fb5720e22ba16)

Updates `r-lib/actions/setup-r` from 2.12.0 to 2.12.1
- [Release notes](https://github.com/r-lib/actions/releases)
- [Changelog](https://github.com/r-lib/actions/blob/v2-branch/NEWS.md)
- [Commits](https://github.com/r-lib/actions/compare/a51a8012b0aab7c32ef9d19bf54da93f3254335e...d3c5be51b12e724e68f33216ca3c148b66d5f0b6)

Updates `r-lib/actions/setup-r-dependencies` from 2.12.0 to 2.12.1
- [Release notes](https://github.com/r-lib/actions/releases)
- [Changelog](https://github.com/r-lib/actions/blob/v2-branch/NEWS.md)
- [Commits](https://github.com/r-lib/actions/compare/a51a8012b0aab7c32ef9d19bf54da93f3254335e...d3c5be51b12e724e68f33216ca3c148b66d5f0b6)

Updates `actions/setup-java` from 5.3.0 to 5.4.0
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/ad2b38190b15e4d6bdf0c97fb4fca8412226d287...1bcf9fb12cf4aa7d266a90ae39939e61372fe520)

Updates `actions/attest-build-provenance` from 4.1.0 to 4.1.1
- [Release notes](https://github.com/actions/attest-build-provenance/releases)
- [Changelog](https://github.com/actions/attest-build-provenance/blob/main/RELEASE.md)
- [Commits](https://github.com/actions/attest-build-provenance/compare/a2bbfa25375fe432b6a289bc6b6cd05ecd0c4c32...0f67c3f4856b2e3261c31976d6725780e5e4c373)

Updates `zizmorcore/zizmor-action` from 0.5.6 to 0.5.7
- [Release notes](https://github.com/zizmorcore/zizmor-action/releases)
- [Commits](https://github.com/zizmorcore/zizmor-action/compare/5f14fd08f7cf1cb1609c1e344975f152c7ee938d...192e21d79ab29983730a13d1382995c2307fbcaa)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: taiki-e/install-action
  dependency-version: 2.82.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: actions/cache
  dependency-version: 6.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
- dependency-name: actions/setup-go
  dependency-version: 6.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: r-lib/actions/setup-r
  dependency-version: 2.12.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: r-lib/actions/setup-r-dependencies
  dependency-version: 2.12.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: actions/setup-java
  dependency-version: 5.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: actions/attest-build-provenance
  dependency-version: 4.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: zizmorcore/zizmor-action
  dependency-version: 0.5.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-03 18:44:18 +02:00
dependabot[bot] 71df1798b8 deps(nuget): Bump the nuget group with 1 update (#353)
Bumps Microsoft.NET.Test.Sdk from 18.6.0 to 18.7.0

---
updated-dependencies:
- dependency-name: Microsoft.NET.Test.Sdk
  dependency-version: 18.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-03 18:33:43 +02:00
dependabot[bot] 6a86660e30 deps(maven): bump org.wickra:wickra (#352)
Bumps the maven group with 1 update in the /bindings/java/benchmarks directory: [org.wickra:wickra](https://github.com/wickra-lib/wickra).


Updates `org.wickra:wickra` from 0.9.6 to 0.9.7
- [Release notes](https://github.com/wickra-lib/wickra/releases)
- [Changelog](https://github.com/wickra-lib/wickra/blob/main/CHANGELOG.md)
- [Commits](https://github.com/wickra-lib/wickra/compare/v0.9.6...v0.9.7)

---
updated-dependencies:
- dependency-name: org.wickra:wickra
  dependency-version: 0.9.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-03 18:31:34 +02:00
kingchenc 45c11da4fc release: bump 0.9.8 -> 0.9.9 (#351)
* release: bump 0.9.8 -> 0.9.9

* ci(lychee): exclude the CHANGELOG version-compare links

The CHANGELOG compare URLs point at the release tag created *after* the bump is
merged; ci.yml runs on push/PR (never on the tag), so the tag never exists when
lychee runs and 'compare/vX...vY' / 'compare/vY...HEAD' 404. Excluded by the same
pattern mechanism already used for the crates.io / npm package URLs — one pattern
covers every future version, no per-release change needed.
2026-06-29 23:54:48 +02:00
30 changed files with 137 additions and 101 deletions
+2 -2
View File
@@ -23,7 +23,7 @@ runs:
using: composite
steps:
- id: first
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable branch, 2026-03-27
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # zizmor: ignore[impostor-commit] pinned to the stable-tag SHA (2026-03-27); tag-pinned, not a branch commit
continue-on-error: true
with:
toolchain: ${{ inputs.toolchain }}
@@ -39,7 +39,7 @@ runs:
- name: Retry the Rust toolchain install
if: steps.first.outcome == 'failure'
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable branch, 2026-03-27
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # zizmor: ignore[impostor-commit] pinned to the stable-tag SHA (2026-03-27); tag-pinned, not a branch commit
with:
toolchain: ${{ inputs.toolchain }}
components: ${{ inputs.components }}
+2 -2
View File
@@ -61,7 +61,7 @@ jobs:
- name: Set up Python
id: setup_python
continue-on-error: true
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: "3.11"
cache: pip
@@ -76,7 +76,7 @@ jobs:
- name: Set up Python (retry)
if: steps.setup_python.outcome == 'failure'
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: "3.11"
cache: pip
+17 -17
View File
@@ -134,7 +134,7 @@ jobs:
- name: Set up Python
id: setup_python
continue-on-error: true
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: "3.12"
@@ -147,7 +147,7 @@ jobs:
- name: Set up Python (retry)
if: steps.setup_python.outcome == 'failure'
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: "3.12"
@@ -209,7 +209,7 @@ jobs:
- name: Set up Python
id: setup_python
continue-on-error: true
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: "3.12"
@@ -222,7 +222,7 @@ jobs:
- name: Set up Python (retry)
if: steps.setup_python.outcome == 'failure'
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: "3.12"
@@ -345,7 +345,7 @@ jobs:
timeout-minutes: 6
- name: Install cargo-llvm-cov
uses: taiki-e/install-action@8b3c737da4b541bf0fb5a3e0488ff20535badac9 # v2.82.1
uses: taiki-e/install-action@bffeee26d4db9be238a4ea78d8826604ebcb594d # v2.82.5
timeout-minutes: 10 # fail fast on a stuck download instead of hanging the job
with:
tool: cargo-llvm-cov
@@ -415,7 +415,7 @@ jobs:
# attributes the modern nightly compiler rejects, so the install
# never gets off the ground. The prebuilt binary avoids the entire
# transitive-dep compile.
uses: taiki-e/install-action@8b3c737da4b541bf0fb5a3e0488ff20535badac9 # v2.82.1
uses: taiki-e/install-action@bffeee26d4db9be238a4ea78d8826604ebcb594d # v2.82.5
timeout-minutes: 10 # fail fast on a stuck download instead of hanging the job
with:
tool: cargo-fuzz
@@ -470,7 +470,7 @@ jobs:
- name: Set up Python
id: setup_python
continue-on-error: true
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: ${{ matrix.python-version }}
cache: pip
@@ -485,7 +485,7 @@ jobs:
- name: Set up Python (retry)
if: steps.setup_python.outcome == 'failure'
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: ${{ matrix.python-version }}
cache: pip
@@ -549,7 +549,7 @@ jobs:
# same taiki-e prebuilt-binary installer we already use for
# cargo-llvm-cov and cargo-fuzz; it tracks the latest wasm-pack
# release, which has `--features` as a top-level flag (since 0.12).
uses: taiki-e/install-action@8b3c737da4b541bf0fb5a3e0488ff20535badac9 # v2.82.1
uses: taiki-e/install-action@bffeee26d4db9be238a4ea78d8826604ebcb594d # v2.82.5
timeout-minutes: 10 # fail fast on a stuck download instead of hanging the job
with:
tool: wasm-pack
@@ -676,7 +676,7 @@ jobs:
timeout-minutes: 6
- name: Install cbindgen
uses: taiki-e/install-action@8b3c737da4b541bf0fb5a3e0488ff20535badac9 # v2.82.1
uses: taiki-e/install-action@bffeee26d4db9be238a4ea78d8826604ebcb594d # v2.82.5
timeout-minutes: 10 # fail fast on a stuck download instead of hanging the job
with:
tool: cbindgen
@@ -735,7 +735,7 @@ jobs:
# local store instead of hitting nuget.org every run. No packages.lock.json
# exists, so key on the project files; never block the job on a slow restore.
- name: Cache NuGet packages
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
continue-on-error: true
timeout-minutes: 6
with:
@@ -802,7 +802,7 @@ jobs:
- name: Set up Go
id: setup-go
continue-on-error: true
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0
with:
go-version: "stable"
cache: false
@@ -816,7 +816,7 @@ jobs:
- name: Set up Go (retry)
if: steps.setup-go.outcome == 'failure'
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0
with:
go-version: "stable"
cache: false
@@ -937,7 +937,7 @@ jobs:
run: cargo build -p wickra-c --release
- name: Set up R
uses: r-lib/actions/setup-r@a51a8012b0aab7c32ef9d19bf54da93f3254335e # v2
uses: r-lib/actions/setup-r@d3c5be51b12e724e68f33216ca3c148b66d5f0b6 # v2
with:
r-version: "release"
use-public-rspm: true
@@ -947,7 +947,7 @@ jobs:
# compiling testthat / knitr and their deps from source — the slow, flaky
# path that previously blew past the job timeout on the ubuntu runner.
- name: Install R dependencies (cached binaries)
uses: r-lib/actions/setup-r-dependencies@a51a8012b0aab7c32ef9d19bf54da93f3254335e # v2
uses: r-lib/actions/setup-r-dependencies@d3c5be51b12e724e68f33216ca3c148b66d5f0b6 # v2
with:
working-directory: bindings/r
extra-packages: |
@@ -1052,7 +1052,7 @@ jobs:
- name: Set up JDK 25
id: setup-java
continue-on-error: true
uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0
with:
distribution: temurin
java-version: "25"
@@ -1067,7 +1067,7 @@ jobs:
- name: Set up JDK 25 (retry)
if: steps.setup-java.outcome == 'failure'
uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0
with:
distribution: temurin
java-version: "25"
+6 -6
View File
@@ -111,7 +111,7 @@ jobs:
# consumers can audit the published dependency tree without
# re-resolving Cargo.lock.
- name: Install cargo-cyclonedx
uses: taiki-e/install-action@8b3c737da4b541bf0fb5a3e0488ff20535badac9 # v2.82.1
uses: taiki-e/install-action@bffeee26d4db9be238a4ea78d8826604ebcb594d # v2.82.5
timeout-minutes: 10 # fail fast on a stuck download instead of hanging the job
with:
tool: cargo-cyclonedx
@@ -165,7 +165,7 @@ jobs:
- name: Set up Python
id: setup_python
continue-on-error: true
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: "3.11"
- name: Wait before Python retry
@@ -176,7 +176,7 @@ jobs:
sleep 30
- name: Set up Python (retry)
if: steps.setup_python.outcome == 'failure'
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: "3.11"
- name: Sync root README into bindings/python so it ships with the wheel
@@ -548,7 +548,7 @@ jobs:
- name: Install wasm-pack (latest, via prebuilt binary)
# See the matching note in ci.yml: jetli's default installs an old
# 0.10.x wasm-pack whose build subcommand rejects --features.
uses: taiki-e/install-action@8b3c737da4b541bf0fb5a3e0488ff20535badac9 # v2.82.1
uses: taiki-e/install-action@bffeee26d4db9be238a4ea78d8826604ebcb594d # v2.82.5
timeout-minutes: 10 # fail fast on a stuck download instead of hanging the job
with:
tool: wasm-pack
@@ -804,7 +804,7 @@ jobs:
# setup-java writes a settings.xml with the 'central' server credentials
# (mapped from the env vars below) and imports the GPG signing key.
- name: Set up JDK 25 + Maven Central credentials + GPG
uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0
with:
distribution: temurin
java-version: "25"
@@ -1076,7 +1076,7 @@ jobs:
merge-multiple: true
- name: Attest build provenance
id: attest
uses: actions/attest-build-provenance@a2bbfa25375fe432b6a289bc6b6cd05ecd0c4c32 # v4.1.0
uses: actions/attest-build-provenance@0f67c3f4856b2e3261c31976d6725780e5e4c373 # v4.1.1
with:
subject-path: |
artifacts/crates/*.crate
+1 -1
View File
@@ -17,7 +17,7 @@ jobs:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: "3.12"
- name: Audit repo-metadata.toml drift
+1 -1
View File
@@ -37,4 +37,4 @@ jobs:
persist-credentials: false
- name: Run zizmor
uses: zizmorcore/zizmor-action@5f14fd08f7cf1cb1609c1e344975f152c7ee938d # v0.5.6
uses: zizmorcore/zizmor-action@192e21d79ab29983730a13d1382995c2307fbcaa # v0.5.7
+9 -1
View File
@@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [0.9.9] - 2026-06-28
Maintenance release. No library or binding code changes from `0.9.8`; this
re-release simply runs through the corrected release workflow (the `0.9.8` npm
publish required a hotfix to the napi-rs 3 `napi artifacts` invocation, now in
place), so the published `0.9.9` artifacts are byte-identical to `0.9.8`.
## [0.9.8] - 2026-06-28
Maintenance release. The library API and every indicator are unchanged from
@@ -1915,7 +1922,8 @@ public API changes.
optional Binance live feed.
- Bindings for Python, Node.js, and WebAssembly.
[Unreleased]: https://github.com/wickra-lib/wickra/compare/v0.9.8...HEAD
[Unreleased]: https://github.com/wickra-lib/wickra/compare/v0.9.9...HEAD
[0.9.9]: https://github.com/wickra-lib/wickra/compare/v0.9.8...v0.9.9
[0.9.8]: https://github.com/wickra-lib/wickra/compare/v0.9.7...v0.9.8
[0.9.7]: https://github.com/wickra-lib/wickra/compare/v0.9.6...v0.9.7
[0.9.6]: https://github.com/wickra-lib/wickra/compare/v0.9.5...v0.9.6
Generated
+11 -11
View File
@@ -277,9 +277,9 @@ dependencies = [
[[package]]
name = "crossbeam-epoch"
version = "0.9.18"
version = "0.9.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
checksum = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f"
dependencies = [
"crossbeam-utils",
]
@@ -1838,7 +1838,7 @@ dependencies = [
[[package]]
name = "wickra"
version = "0.9.8"
version = "0.9.9"
dependencies = [
"approx",
"criterion",
@@ -1849,7 +1849,7 @@ dependencies = [
[[package]]
name = "wickra-bench"
version = "0.9.8"
version = "0.9.9"
dependencies = [
"criterion",
"kand",
@@ -1861,7 +1861,7 @@ dependencies = [
[[package]]
name = "wickra-c"
version = "0.9.8"
version = "0.9.9"
dependencies = [
"tokio",
"wickra-core",
@@ -1870,7 +1870,7 @@ dependencies = [
[[package]]
name = "wickra-core"
version = "0.9.8"
version = "0.9.9"
dependencies = [
"approx",
"proptest",
@@ -1880,7 +1880,7 @@ dependencies = [
[[package]]
name = "wickra-data"
version = "0.9.8"
version = "0.9.9"
dependencies = [
"approx",
"csv",
@@ -1899,7 +1899,7 @@ dependencies = [
[[package]]
name = "wickra-examples"
version = "0.9.8"
version = "0.9.9"
dependencies = [
"serde_json",
"tokio",
@@ -1909,7 +1909,7 @@ dependencies = [
[[package]]
name = "wickra-node"
version = "0.9.8"
version = "0.9.9"
dependencies = [
"napi",
"napi-build",
@@ -1921,7 +1921,7 @@ dependencies = [
[[package]]
name = "wickra-python"
version = "0.9.8"
version = "0.9.9"
dependencies = [
"bytemuck",
"pyo3",
@@ -1932,7 +1932,7 @@ dependencies = [
[[package]]
name = "wickra-wasm"
version = "0.9.8"
version = "0.9.9"
dependencies = [
"console_error_panic_hook",
"js-sys",
+3 -3
View File
@@ -14,7 +14,7 @@ members = [
exclude = ["fuzz"]
[workspace.package]
version = "0.9.8"
version = "0.9.9"
authors = ["kingchenc <support@wickra.org>"]
edition = "2021"
rust-version = "1.86"
@@ -26,8 +26,8 @@ keywords = ["finance", "trading", "indicators", "technical-analysis", "ta"]
categories = ["finance", "mathematics", "science"]
[workspace.dependencies]
wickra-core = { path = "crates/wickra-core", version = "0.9.8" }
wickra-data = { path = "crates/wickra-data", version = "0.9.8" }
wickra-core = { path = "crates/wickra-core", version = "0.9.9" }
wickra-data = { path = "crates/wickra-data", version = "0.9.9" }
thiserror = "2"
rayon = "1.10"
+19 -1
View File
@@ -27,6 +27,8 @@
> **▶ Live demo:** all 514 indicators over real Binance market data, computed live in your browser — **[live.wickra.org](https://live.wickra.org)** · zero backend, powered by `wickra-wasm`.
**Part of the [Wickra ecosystem](#ecosystem):** the same data-driven core and ten-language binding surface also power [wickra-exchange](https://github.com/wickra-lib/wickra-exchange), [wickra-backtest](https://github.com/wickra-lib/wickra-backtest), [wickra-terminal](https://github.com/wickra-lib/wickra-terminal), [wickra-screener](https://github.com/wickra-lib/wickra-screener), [wickra-xray](https://github.com/wickra-lib/wickra-xray), [wickra-radar](https://github.com/wickra-lib/wickra-radar), [wickra-copilot](https://github.com/wickra-lib/wickra-copilot) and [wickra-shazam](https://github.com/wickra-lib/wickra-shazam).
Wickra is a multi-language technical-analysis library with a Rust core and
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
@@ -440,6 +442,22 @@ order-book, trade, profile, alt-chart bars, footprint). This catches FFI wiring
bugs the math-only core tests cannot see — it has already found and fixed real
cross-language marshalling bugs in the Java and R bindings.
## Ecosystem
Wickra is the core library. The same data-driven core + ten-language binding
pattern powers a family of products built on it:
- [**wickra-exchange**](https://github.com/wickra-lib/wickra-exchange) — unified market-data + execution across ten crypto exchanges
- [**wickra-backtest**](https://github.com/wickra-lib/wickra-backtest) — event-driven backtester over the Wickra core
- [**wickra-terminal**](https://github.com/wickra-lib/wickra-terminal) — the trading terminal: a TUI and a browser renderer over the stack
- [**wickra-screener**](https://github.com/wickra-lib/wickra-screener) — parallel multi-symbol screening over 514 streaming indicators
- [**wickra-xray**](https://github.com/wickra-lib/wickra-xray) — market-microstructure explorer: footprint, order-book heatmap, liquidation map, funding/OI divergence
- [**wickra-radar**](https://github.com/wickra-lib/wickra-radar) — perp-universe alert radar: OI delta, funding flip, book imbalance, liquidation clusters, OI/price divergence
- [**wickra-copilot**](https://github.com/wickra-lib/wickra-copilot) — local market copilot grounded in real order-book, liquidation and funding microstructure
- [**wickra-shazam**](https://github.com/wickra-lib/wickra-shazam) — match an asset's current microstructure fingerprint against its entire history
Docs live at [docs.wickra.org](https://docs.wickra.org) ([wickra-docs](https://github.com/wickra-lib/wickra-docs)); the marketing site and in-browser demo at [wickra.org](https://wickra.org) ([webpage](https://github.com/wickra-lib/webpage)).
## Contributing
Contributions are very welcome — issues, bug reports, ideas, and pull requests
@@ -512,6 +530,6 @@ The library is provided **as is**, without warranty of any kind; see
<p align="center">
<a href="https://star-history.com/#wickra-lib/wickra&Date">
<img alt="Wickra star history" width="640"
src="https://raw.githubusercontent.com/wickra-lib/.github/main/profile/badges/star-history.svg">
src="https://raw.githubusercontent.com/wickra-lib/.github/main/profile/badges/star-history.svg?v=2">
</a>
</p>
+3 -3
View File
@@ -2,13 +2,13 @@
## Supported versions
Wickra is pre-1.0. Security fixes are applied to the latest released `0.9.8`
Wickra is pre-1.0. Security fixes are applied to the latest released `0.9.9`
version only; please upgrade to the newest release before reporting an issue.
| Version | Supported |
| --- | --- |
| 0.9.8 (latest) | :white_check_mark: |
| < 0.9.8 | :x: |
| 0.9.9 (latest) | :white_check_mark: |
| < 0.9.9 | :x: |
## Reporting a vulnerability
@@ -9,7 +9,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.6.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.7.0" />
<PackageReference Include="xunit" Version="2.9.3" />
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5" />
</ItemGroup>
+1 -1
View File
@@ -11,7 +11,7 @@
<!-- NuGet package metadata -->
<PackageId>Wickra</PackageId>
<Version>0.9.8</Version>
<Version>0.9.9</Version>
<Authors>kingchenc</Authors>
<Description>High-performance streaming technical-analysis indicators (514 indicators) for .NET, backed by the native Rust core via the Wickra C ABI.</Description>
<PackageLicenseExpression>MIT OR Apache-2.0</PackageLicenseExpression>
+2 -2
View File
@@ -38,14 +38,14 @@ Maven:
<dependency>
<groupId>org.wickra</groupId>
<artifactId>wickra</artifactId>
<version>0.9.8</version>
<version>0.9.9</version>
</dependency>
```
Gradle:
```kotlin
implementation("org.wickra:wickra:0.9.8")
implementation("org.wickra:wickra:0.9.9")
```
The native library ships prebuilt per platform (Linux, macOS, Windows — x64 and
+1 -1
View File
@@ -21,7 +21,7 @@
<dependency>
<groupId>org.wickra</groupId>
<artifactId>wickra</artifactId>
<version>0.9.6</version>
<version>0.9.7</version>
</dependency>
</dependencies>
+1 -1
View File
@@ -6,7 +6,7 @@
<groupId>org.wickra</groupId>
<artifactId>wickra</artifactId>
<version>0.9.8</version>
<version>0.9.9</version>
<packaging>jar</packaging>
<name>Wickra</name>
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wickra-darwin-arm64",
"version": "0.9.8",
"version": "0.9.9",
"description": "Native binding for wickra (macOS Apple Silicon). Installed automatically as an optional dependency of wickra on matching platforms.",
"main": "wickra.darwin-arm64.node",
"files": [
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wickra-darwin-x64",
"version": "0.9.8",
"version": "0.9.9",
"description": "Native binding for wickra (macOS Intel). Installed automatically as an optional dependency of wickra on matching platforms.",
"main": "wickra.darwin-x64.node",
"files": [
@@ -1,6 +1,6 @@
{
"name": "wickra-linux-arm64-gnu",
"version": "0.9.8",
"version": "0.9.9",
"description": "Native binding for wickra (linux arm64 GNU). Installed automatically as an optional dependency of wickra on matching platforms.",
"main": "wickra.linux-arm64-gnu.node",
"files": [
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wickra-linux-x64-gnu",
"version": "0.9.8",
"version": "0.9.9",
"description": "Native binding for wickra (linux x64 GNU). Installed automatically as an optional dependency of wickra on matching platforms.",
"main": "wickra.linux-x64-gnu.node",
"files": [
@@ -1,6 +1,6 @@
{
"name": "wickra-win32-arm64-msvc",
"version": "0.9.8",
"version": "0.9.9",
"description": "Native binding for wickra (Windows arm64 MSVC). Installed automatically as an optional dependency of wickra on matching platforms.",
"main": "wickra.win32-arm64-msvc.node",
"files": [
@@ -1,6 +1,6 @@
{
"name": "wickra-win32-x64-msvc",
"version": "0.9.8",
"version": "0.9.9",
"description": "Native binding for wickra (Windows x64 MSVC). Installed automatically as an optional dependency of wickra on matching platforms.",
"main": "wickra.win32-x64-msvc.node",
"files": [
+20 -20
View File
@@ -1,12 +1,12 @@
{
"name": "wickra",
"version": "0.9.8",
"version": "0.9.9",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "wickra",
"version": "0.9.8",
"version": "0.9.9",
"license": "MIT OR Apache-2.0",
"devDependencies": {
"@napi-rs/cli": "^3.7.2"
@@ -15,12 +15,12 @@
"node": ">= 22"
},
"optionalDependencies": {
"wickra-darwin-arm64": "0.9.8",
"wickra-darwin-x64": "0.9.8",
"wickra-linux-arm64-gnu": "0.9.8",
"wickra-linux-x64-gnu": "0.9.8",
"wickra-win32-arm64-msvc": "0.9.8",
"wickra-win32-x64-msvc": "0.9.8"
"wickra-darwin-arm64": "0.9.9",
"wickra-darwin-x64": "0.9.9",
"wickra-linux-arm64-gnu": "0.9.9",
"wickra-linux-x64-gnu": "0.9.9",
"wickra-win32-arm64-msvc": "0.9.9",
"wickra-win32-x64-msvc": "0.9.9"
}
},
"node_modules/@emnapi/core": {
@@ -1846,8 +1846,8 @@
"license": "ISC"
},
"node_modules/wickra-darwin-arm64": {
"version": "0.9.8",
"resolved": "https://registry.npmjs.org/wickra-darwin-arm64/-/wickra-darwin-arm64-0.9.8.tgz",
"version": "0.9.9",
"resolved": "https://registry.npmjs.org/wickra-darwin-arm64/-/wickra-darwin-arm64-0.9.9.tgz",
"integrity": "sha512-4eZiBR/yGUdr4nzhEUFy2i69XgNx64iI2ax/LPamsThgylC0KpHOZKK19QzJ2d9KbK4C8nMjME5FLuR+4GNEwQ==",
"cpu": [
"arm64"
@@ -1862,8 +1862,8 @@
}
},
"node_modules/wickra-darwin-x64": {
"version": "0.9.8",
"resolved": "https://registry.npmjs.org/wickra-darwin-x64/-/wickra-darwin-x64-0.9.8.tgz",
"version": "0.9.9",
"resolved": "https://registry.npmjs.org/wickra-darwin-x64/-/wickra-darwin-x64-0.9.9.tgz",
"integrity": "sha512-6hf8zI3QPjTFp4zCpmgUwDvNtu6jHqNUHKD5e55POo0CgA52HkpyxSPtVm8TGTIZDI7kPjlbOdBM8CJ76mmXwA==",
"cpu": [
"x64"
@@ -1878,8 +1878,8 @@
}
},
"node_modules/wickra-linux-arm64-gnu": {
"version": "0.9.8",
"resolved": "https://registry.npmjs.org/wickra-linux-arm64-gnu/-/wickra-linux-arm64-gnu-0.9.8.tgz",
"version": "0.9.9",
"resolved": "https://registry.npmjs.org/wickra-linux-arm64-gnu/-/wickra-linux-arm64-gnu-0.9.9.tgz",
"integrity": "sha512-kSe6y0xBMSiqdPLXNjwop5WZdHtvdBNKSEBCwZ4hFq33p4apW25/wrlzv9/oDuyD4kuPabJEhCCnFOplh58CUg==",
"cpu": [
"arm64"
@@ -1894,8 +1894,8 @@
}
},
"node_modules/wickra-linux-x64-gnu": {
"version": "0.9.8",
"resolved": "https://registry.npmjs.org/wickra-linux-x64-gnu/-/wickra-linux-x64-gnu-0.9.8.tgz",
"version": "0.9.9",
"resolved": "https://registry.npmjs.org/wickra-linux-x64-gnu/-/wickra-linux-x64-gnu-0.9.9.tgz",
"integrity": "sha512-tWBWS4qz7hxM4xnpFb59bhf6TaLwXq0Z3jEa/2l7r8PiHA94g8r8S53NRMiT+4yiL5hSWe/nUiC/YXdRrhEZ4g==",
"cpu": [
"x64"
@@ -1910,8 +1910,8 @@
}
},
"node_modules/wickra-win32-arm64-msvc": {
"version": "0.9.8",
"resolved": "https://registry.npmjs.org/wickra-win32-arm64-msvc/-/wickra-win32-arm64-msvc-0.9.8.tgz",
"version": "0.9.9",
"resolved": "https://registry.npmjs.org/wickra-win32-arm64-msvc/-/wickra-win32-arm64-msvc-0.9.9.tgz",
"integrity": "sha512-EXIckHxAtF75PUGDKRzXyqMe9ldP0JjSdu68WFN6iJfp+McYrGu6h40TEJlQ/oUEIoPqiZB/xhVyo/el5Lg7zw==",
"cpu": [
"arm64"
@@ -1926,8 +1926,8 @@
}
},
"node_modules/wickra-win32-x64-msvc": {
"version": "0.9.8",
"resolved": "https://registry.npmjs.org/wickra-win32-x64-msvc/-/wickra-win32-x64-msvc-0.9.8.tgz",
"version": "0.9.9",
"resolved": "https://registry.npmjs.org/wickra-win32-x64-msvc/-/wickra-win32-x64-msvc-0.9.9.tgz",
"integrity": "sha512-Yfsqq1Xwp6hdxMyLze411vNdo7BDwI6+lPSe7A9XdqyPecNDbtKwYLpsal2r8EHbNzqM+R8XnuRtUaEQS5VlUQ==",
"cpu": [
"x64"
+7 -7
View File
@@ -1,6 +1,6 @@
{
"name": "wickra",
"version": "0.9.8",
"version": "0.9.9",
"description": "Streaming-first technical indicators: incremental, fast, install-free. Node bindings powered by Rust.",
"author": "kingchenc <support@wickra.org>",
"main": "index.js",
@@ -47,12 +47,12 @@
"node": ">= 22"
},
"optionalDependencies": {
"wickra-linux-x64-gnu": "0.9.8",
"wickra-linux-arm64-gnu": "0.9.8",
"wickra-darwin-x64": "0.9.8",
"wickra-darwin-arm64": "0.9.8",
"wickra-win32-x64-msvc": "0.9.8",
"wickra-win32-arm64-msvc": "0.9.8"
"wickra-linux-x64-gnu": "0.9.9",
"wickra-linux-arm64-gnu": "0.9.9",
"wickra-darwin-x64": "0.9.9",
"wickra-darwin-arm64": "0.9.9",
"wickra-win32-x64-msvc": "0.9.9",
"wickra-win32-arm64-msvc": "0.9.9"
},
"scripts": {
"build": "napi build --platform --release",
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "maturin"
[project]
name = "wickra"
version = "0.9.8"
version = "0.9.9"
description = "Streaming-first technical indicators: incremental, fast, install-free."
readme = "README.md"
license = "MIT OR Apache-2.0"
+1 -1
View File
@@ -1,7 +1,7 @@
Package: wickra
Type: Package
Title: Streaming-First Technical Indicators
Version: 0.9.8
Version: 0.9.9
Authors@R: person("kingchenc", role = c("aut", "cre"), email = "support@wickra.org")
Description: R bindings for the Wickra technical-analysis library over its C ABI
hub. Exposes 514 indicators, each an O(1) streaming state machine shared with
+1 -1
View File
@@ -27,7 +27,7 @@ workspace = true
# (rayon) feature on — the WASM binding needs a rayon-free build and the data
# layer never uses the parallel batch path. Native bindings re-enable `parallel`
# through their own wickra-core dependency (cargo unifies the features).
wickra-core = { path = "../wickra-core", version = "0.9.8", default-features = false }
wickra-core = { path = "../wickra-core", version = "0.9.9", default-features = false }
thiserror = { workspace = true }
csv = "1.3"
serde = { version = "1", features = ["derive"] }
+2 -2
View File
@@ -6,7 +6,7 @@
<groupId>org.wickra.examples</groupId>
<artifactId>wickra-examples</artifactId>
<version>0.9.8</version>
<version>0.9.9</version>
<packaging>jar</packaging>
<name>Wickra Java examples</name>
@@ -21,7 +21,7 @@
<dependency>
<groupId>org.wickra</groupId>
<artifactId>wickra</artifactId>
<version>0.9.8</version>
<version>0.9.9</version>
</dependency>
</dependencies>
+7 -7
View File
@@ -14,7 +14,7 @@
},
"../../bindings/node": {
"name": "wickra",
"version": "0.9.8",
"version": "0.9.9",
"license": "MIT OR Apache-2.0",
"devDependencies": {
"@napi-rs/cli": "^2.18.0"
@@ -23,12 +23,12 @@
"node": ">= 20"
},
"optionalDependencies": {
"wickra-darwin-arm64": "0.9.8",
"wickra-darwin-x64": "0.9.8",
"wickra-linux-arm64-gnu": "0.9.8",
"wickra-linux-x64-gnu": "0.9.8",
"wickra-win32-arm64-msvc": "0.9.8",
"wickra-win32-x64-msvc": "0.9.8"
"wickra-darwin-arm64": "0.9.9",
"wickra-darwin-x64": "0.9.9",
"wickra-linux-arm64-gnu": "0.9.9",
"wickra-linux-x64-gnu": "0.9.9",
"wickra-win32-arm64-msvc": "0.9.9",
"wickra-win32-x64-msvc": "0.9.9"
}
},
"node_modules/wickra": {
+12 -2
View File
@@ -13,11 +13,21 @@ accept = [200, 206, 429]
scheme = ["https", "http"]
exclude_all_private = true
# Known false positives (the URLs are valid; lychee just can't verify them as a
# non-browser client):
# Known false positives (the URLs are valid; lychee just can't verify them at
# check time):
# - crates.io and npmjs.com return 403/404 to non-browser requests
# (anti-scraping); the package pages are live in a browser.
# - GitHub serves 404 for /stargazers and /network/members to anonymous clients
# (anti-scraping). The README social-footer badges link there; the pages are
# live in a browser.
# - the CHANGELOG version-compare links point at the release tag that is created
# *after* the bump is merged. ci.yml runs on push/PR (never on the tag), so the
# tag never exists when lychee runs and the compare URL 404s. One pattern
# covers every future version — no per-release exclude needed.
exclude = [
'crates\.io/crates/',
'www\.npmjs\.com/package/',
'github\.com/wickra-lib/wickra/compare/',
'github\.com/wickra-lib/wickra/stargazers',
'github\.com/wickra-lib/wickra/network/members',
]