Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
1169263
chore(deps): upgrade criterion 0.5.1 → 0.8
kalwalt Jun 10, 2026
a30b033
doc(benches): refresh BENCHMARKS.md for criterion 0.8
kalwalt Jun 10, 2026
1b3a3e4
fix(core): clean up trivial clippy lints under --all-targets --all-fe…
kalwalt Jun 10, 2026
224d766
test(core): add unit tests for relocated math/pattern helpers (#180)
kalwalt Jun 10, 2026
f8521eb
fix(kpm): tighten dual-mode FFI extern cfg to match caller cfg (#180)
kalwalt Jun 11, 2026
a0e4388
refactor(ar): convert Default::default() + field reassign to struct-i…
kalwalt Jun 11, 2026
e1b036c
chore(ar2): allow too_many_arguments on SIMD get_similarity variants …
kalwalt Jun 11, 2026
b14df4c
chore: clear strict clippy lints in examples/tests/benches (#180)
kalwalt Jun 11, 2026
09e5904
chore(codecov): exclude examples/benches from coverage targets (#180)
kalwalt Jun 11, 2026
53aeb4a
ci(coverage): fix tarpaulin tests/ glob and mirror in codecov (#180)
kalwalt Jun 11, 2026
a5e185a
ci: tighten clippy gate to --all-targets --all-features (#180)
kalwalt Jun 11, 2026
2cf9467
ci: relocate strict clippy gate to kpm-build (ubuntu) job (#180)
kalwalt Jun 11, 2026
5d244aa
docs(agents): codify #180 clippy conventions and un-ignore .agents/
kalwalt Jun 12, 2026
b94a720
ci(miri): add Miri UB validation for pure-Rust code paths (#182)
kalwalt Jun 12, 2026
0e2eba9
ci(miri): drop -Zmiri-strict-provenance (trips on third-party deps) (…
kalwalt Jun 12, 2026
b9a49ce
ci(miri): switch to Tree Borrows to avoid crossbeam-epoch false posit…
kalwalt Jun 12, 2026
8185703
ci(miri): enable -Zmiri-disable-isolation for tempfile-using tests (#…
kalwalt Jun 12, 2026
6e064d3
fix(kpm): replace unaligned transmute in hamming_distance_96 (#192)
kalwalt Jun 12, 2026
5952fd6
perf(ci): scope Miri job to unsafe boundaries via cfg_attr(miri, igno…
kalwalt Jun 12, 2026
55e0f46
perf(ci): annotate remaining real-image tests (#194 follow-up)
kalwalt Jun 13, 2026
e3d31b7
test(homography): widen cauchy_cost tolerance to 1e-5 for Miri (#194)
kalwalt Jun 13, 2026
960d7ae
ci(miri): enable -Zmiri-ignore-leaks for rayon thread pool (#194)
kalwalt Jun 13, 2026
66f836b
ci(miri): promote to required gate, split workflow, add README badge …
kalwalt Jun 13, 2026
97d6bfb
ci(miri): skip docs-only changes via paths-ignore + same-name shim
kalwalt Jun 14, 2026
db70e09
perf(kpm): Gaussian scale-space pyramid — benchmark + rayon paralleli…
kalwalt Jun 15, 2026
ec28cc9
perf(kpm): box-filter Pyramid downsample — criterion benchmark + SIMD…
kalwalt Jun 15, 2026
64d1170
doc(kpm): mark box-filter Pyramid as kept-but-unused reference (#203)
kalwalt Jun 22, 2026
45c79ca
ci(benchmarks): harden against flaky external C-library downloads (#204)
kalwalt Jun 22, 2026
94e7b2d
build(wasm): make cc/bindgen optional, fix wasm dead-code (#161 goal 1)
kalwalt Jun 22, 2026
5da470c
feat(wasm): wire console logger + clean SIMD wasm build; add .fset3 a…
kalwalt Jun 22, 2026
c088fa9
feat(wasm): KPM detection binding + browser NFT demo (#161 goal 4)
kalwalt Jun 22, 2026
d511d00
doc(wasm): note .fset3 / KPM detection in the NFT demo description (#…
kalwalt Jun 22, 2026
03fd9d7
feat(kpm): facade-parity convenience accessors on VisualDatabase + Fe…
kalwalt Jun 23, 2026
5b6fbee
refactor(kpm): factor VisualDatabase::query matching loop + add query…
kalwalt Jun 26, 2026
2fcefa2
test(kpm): raise M9 coverage — exclude examples + edge tests (#177) (…
kalwalt Jun 26, 2026
f756e15
feat(example): nft_marker_gen .fset3 via RustFreakMatcher — drop ffi-…
kalwalt Jun 24, 2026
63bda44
fix(ci): disable cargo-bin cache on kpm-build to stop stale rustup-in…
kalwalt Jun 26, 2026
d7d48b1
test(ci): verify ffi-backend tests + example link on macOS (#119)
kalwalt Jun 26, 2026
02651b3
doc: update README + ARCHITECTURE for the v0.8.0 milestone
kalwalt Jun 26, 2026
28c75f6
chore(release): v0.8.0
kalwalt Jun 26, 2026
be0799f
test(core): cover error/validation branches in ar/pattern.rs + kpm/fr…
kalwalt Jul 14, 2026
e64d94e
fix(ci): commit Cargo.lock for reproducible coverage/CI (#224)
kalwalt Jul 14, 2026
13988ae
doc(maintainers): document committed Cargo.lock + deliberate dep updates
kalwalt Jul 14, 2026
b450c06
refactor(ar,ar2): group params in private helpers + document allows (…
kalwalt Jul 15, 2026
a3ba9ea
perf(kpm): add dedicated kpm_bench.rs Criterion benchmark (#225)
kalwalt Jul 15, 2026
42b5685
doc(benches): document kpm_bench + drop stale "no KPM benchmark" clai…
kalwalt Jul 16, 2026
c447f31
doc(kpm): correct stale backend docs + document KPM public API (#226)
kalwalt Jul 16, 2026
eb70446
fix(kpm): exempt bindgen-generated bindings from the missing_docs gat…
kalwalt Jul 16, 2026
f6cb29a
doc(contributing): document the libclang/bindgen ffi-backend build fa…
kalwalt Jul 17, 2026
198b531
doc(wasm): add JS/TS integration guide + link from README (#226)
kalwalt Jul 17, 2026
b871289
doc(ar2,icp): document the AR2 tracking + ICP public API (#226)
kalwalt Jul 20, 2026
c376faf
doc(core): document remaining public API + enable crate-wide missing_…
kalwalt Jul 21, 2026
a5bda9e
doc(kpm): rationale comments for kpm/freak too_many_arguments allows …
kalwalt Aug 6, 2026
467a97e
chore(release): v0.8.1
kalwalt Aug 6, 2026
ca6c51b
Merge branch 'main' into dev — reconcile divergent release history (k…
kalwalt Aug 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@
debug/
target/

# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
Cargo.lock
# Cargo.lock is committed for reproducible CI (coverage/tarpaulin, dual-mode
# parity, benchmarks) — it pins the exact dependency graph so a freshly
# published transitive crate can't silently break a CI job (#224). This does
# NOT constrain downstream crates.io consumers: Cargo ignores a dependency's
# lockfile. Update deliberately with `cargo update`.

# These are backup files generated by rustfmt
**/*.rs.bk
Expand Down
34 changes: 33 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,39 @@
# Changelog - webarkit/webarkitlib-rs
# Changelog - webarkit/webarkitlib-rs

All notable changes to this project will be documented in this file.

## [0.8.1] - 2026-08-06

## Stabilization & DX — benchmarks, coverage, and full API documentation

### ⚡ Performance

- *(kpm)* Add dedicated kpm_bench.rs Criterion benchmark (#225)

### 🐛 Bug Fixes

- *(ci)* Commit Cargo.lock for reproducible coverage/CI (#224)
- *(kpm)* Exempt bindgen-generated bindings from the missing_docs gate (#226)

### 📚 Documentation

- *(maintainers)* Document committed Cargo.lock + deliberate dep updates
- *(benches)* Document kpm_bench + drop stale "no KPM benchmark" claim (#225)
- *(kpm)* Correct stale backend docs + document KPM public API (#226)
- *(contributing)* Document the libclang/bindgen ffi-backend build failure (#226)
- *(wasm)* Add JS/TS integration guide + link from README (#226)
- *(ar2,icp)* Document the AR2 tracking + ICP public API (#226)
- *(core)* Document remaining public API + enable crate-wide missing_docs (#226)
- *(kpm)* Rationale comments for kpm/freak too_many_arguments allows (#83)

### 🚜 Refactor

- *(ar,ar2)* Group params in private helpers + document allows (#83)

### 🧪 Testing

- *(core)* Cover error/validation branches in ar/pattern.rs + kpm/freak/pyramid.rs (#224)

## [0.8.0] - 2026-06-26

## Milestone — Pure-Rust completeness, validation & polish
Expand Down
52 changes: 52 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,58 @@ Run the following commands in the project root:

If you add a new feature, make sure to include appropriate tests in `src/**/tests.rs` or as integration tests.

## Troubleshooting the build

### `ffi-backend` / `--all-features` fails in `build.rs` with a bindgen panic

The default build is **pure Rust and needs no C++ toolchain** — you only hit
this when you opt into the C++ FreakMatcher via `--features ffi-backend`
(or `--all-features`, or `dual-mode`, which implies it).

**Symptom**

```text
error: failed to run custom build command for `webarkitlib-rs`
thread 'main' panicked at .../bindgen-0.72.1/lib.rs:917:13:
assertion `left == right` failed: "x86_64-pc-windows-msvc" "x86_64-pc-windows-msvc"
left: 4
right: 8
```

**Cause** — `LIBCLANG_PATH` points at a `libclang` built for a **32-bit**
target, so bindgen sees a pointer width of `4` while the host target
(`x86_64`) expects `8`. The confusing part is that both sides of the
assertion print the same triple; only the widths differ.

A common way to end up here on Windows is having a cross-compilation
toolchain's `libclang` on `LIBCLANG_PATH` — for example the Xtensa clang
that ships with the [esp-rs](https://github.com/esp-rs) toolchain
(`~/.rustup/toolchains/esp/xtensa-esp32-elf-clang/...`), which targets the
32-bit ESP32.

**Fix** — point `LIBCLANG_PATH` at an `x86_64` `libclang` for the shell you
build this repo in:

```powershell
$env:LIBCLANG_PATH = "C:\Program Files\LLVM\bin"
cargo clippy --workspace --all-targets --all-features -- -D warnings
```

The `x64` libclang bundled with Visual Studio works too:
`C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin`.

**Set it per-session, not globally**, if you also do embedded work — the
cross-toolchain needs its own `LIBCLANG_PATH`. For the same reason we do
**not** ship a `.cargo/config.toml` `[env]` override: it would need
`force = true` to beat an already-set variable, and cargo's `[env]` has no
per-OS conditionals, so it would push a Windows path onto Linux CI and
override its `libclang-dev`.

> Worth fixing rather than ignoring: without it you cannot run the
> `--all-features` gate locally, so breakage that only exists behind
> `ffi-backend` (e.g. lints firing on bindgen-generated code) reaches CI
> instead of your machine.

## Commit Message Conventions

To maintain a clean and automated release history, this project strictly adheres to the [Conventional Commits](https://www.conventionalcommits.org/) specification.
Expand Down
Loading
Loading