Skip to content

Releases: webarkit/WebARKitLib-rs

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 26 Jun 21:28

Milestone — Pure-Rust completeness, validation & polish

⚙️ Miscellaneous Tasks

  • (ar2) Allow too_many_arguments on SIMD get_similarity variants (#180)
  • Clear strict clippy lints in examples/tests/benches (#180)
  • (codecov) Exclude examples/benches from coverage targets (#180)
  • (coverage) Fix tarpaulin tests/ glob and mirror in codecov (#180)
  • Tighten clippy gate to --all-targets --all-features (#180)
  • Relocate strict clippy gate to kpm-build (ubuntu) job (#180)
  • (miri) Add Miri UB validation for pure-Rust code paths (#182)
  • (miri) Drop -Zmiri-strict-provenance (trips on third-party deps) (#182)
  • (miri) Switch to Tree Borrows to avoid crossbeam-epoch false positive (#182)
  • (miri) Enable -Zmiri-disable-isolation for tempfile-using tests (#182)
  • (miri) Enable -Zmiri-ignore-leaks for rayon thread pool (#194)
  • (miri) Promote to required gate, split workflow, add README badge (#182)
  • (miri) Skip docs-only changes via paths-ignore + same-name shim
  • (benchmarks) Harden against flaky external C-library downloads (#204)

⚡ Performance

  • (ci) Scope Miri job to unsafe boundaries via cfg_attr(miri, ignore) (#194)
  • (ci) Annotate remaining real-image tests (#194 follow-up)
  • (kpm) Gaussian scale-space pyramid — benchmark + rayon parallelization (#209)
  • (kpm) Box-filter Pyramid downsample — criterion benchmark + SIMD (#211)

🐛 Bug Fixes

  • (core) Clean up trivial clippy lints under --all-targets --all-features (#180)
  • (kpm) Tighten dual-mode FFI extern cfg to match caller cfg (#180)
  • (kpm) Replace unaligned transmute in hamming_distance_96 (#192)
  • (ci) Disable cargo-bin cache on kpm-build to stop stale rustup-init shim (#134)

💼 Other

  • (wasm) Make cc/bindgen optional, fix wasm dead-code (#161 goal 1)

📚 Documentation

  • (benches) Refresh BENCHMARKS.md for criterion 0.8
  • (agents) Codify #180 clippy conventions and un-ignore .agents/
  • (kpm) Mark box-filter Pyramid as kept-but-unused reference (#203)
  • (wasm) Note .fset3 / KPM detection in the NFT demo description (#161)
  • Update README + ARCHITECTURE for the v0.8.0 milestone

🕸️ WebAssembly & Emscripten

  • (wasm) Wire console logger + clean SIMD wasm build; add .fset3 asset (#161 goals 2,3)
  • (wasm) KPM detection binding + browser NFT demo (#161 goal 4)

🚀 Features

  • (kpm) Facade-parity convenience accessors on VisualDatabase + FeatureStore slices (#148)
  • (example) Nft_marker_gen .fset3 via RustFreakMatcher — drop ffi-backend (#179)

🚜 Refactor

  • (ar) Convert Default::default() + field reassign to struct-init (#180)
  • (kpm) Factor VisualDatabase::query matching loop + add query_from_keyframe (#147) (#217)

🧪 Testing

  • (core) Add unit tests for relocated math/pattern helpers (#180)
  • (homography) Widen cauchy_cost tolerance to 1e-5 for Miri (#194)
  • (kpm) Raise M9 coverage — exclude examples + edge tests (#177) (#218)
  • (ci) Verify ffi-backend tests + example link on macOS (#119)
    ## [0.7.0] - 2026-06-05

Milestone 9 — VisualDatabase & pure Rust backend

⚙️ Miscellaneous Tasks

  • (examples) Dump db_id pyramid in simple_nft_dual to aid #160 triage
  • (corner-error) Wire the absolute_corner_error gate into kpm-build (#166)
  • (submodule) Bump WebARKitLib for std::map matcher-determinism fix (refs #170)
  • (submodule) Retarget WebARKitLib pin to post-#39 merged master SHA (#170)
  • (bridge) Bump jsartoolkit-nft to 1.10.0 + sharp to 0.34.5 + regen sidecar + widen POSE_ROT_TOL (#170)
  • (examples) Convert simple_nft to arlog macros (PR 4/4 for #90)

🐛 Bug Fixes

  • (test) Regenerate kpm_regression baseline and close CI gap (#155)
  • (test) Restore Linux baseline + gate test_full_pipeline_pose to Linux
  • (tests) Adapt corner-error gate to cross-platform variance (drop pinball-demo, widen epsilon to 2.0 px) (#166)
  • (kpm) Use BTreeMap for Hough vote tally and VisualDatabase keyframes to remove Rust-side matcher nondeterminism (#170)

📚 Documentation

  • (kpm) Add end-to-end pose comparison to M9-2 design doc §10
  • Switch regen capture recipe from arlog_e! to arlog_i! (#155)
  • (examples) Clarify simple_nft_dual.rs reports homography-level comparison (#157)
  • (tests) Add README for annotated_frames fixtures (#166)
  • (readme) Mark M9 (#139) complete, refresh roadmap + nft_marker_gen

🚀 Features

  • (kpm) Port VisualDatabase to Rust (M9-1, #140)
  • (kpm) Move BHC feature index from FeatureMatcher onto Keyframe (#146)
  • (kpm) Port HoughSimilarityVoting::autoAdjustXYNumBins (#150)
  • (kpm) Implement RustFreakMatcher and DualFreakMatcher (M9-2, #141)
  • (examples) Add simple_nft_dual.rs with DualFreakMatcher and per-frame divergence reporting (#157)
  • (tools) Add annotate_corners HTML tool for absolute corner-error fixtures (#166)
  • (tools) Per-corner edit + cursor-centered wheel zoom in annotate_corners (#166)
  • (examples) Save C++ and Rust marker-outline PNGs in simple_nft_dual to visualize divergence
  • (tests) Add cross-stack parity gate vs jsartoolkitNFT-Node (jsartoolkitNFT#584 Track 2, refs #170, #166 Track B)
  • (kpm) Remove C++ FFI as default — pure Rust FreakMatcher complete (#142)
  • (kpm) M9 — pure Rust KPM/NFT pipeline complete (#176)

🧪 Testing

  • (kpm) Redefine M9 parity gate as corner reprojection (#152)
  • (fixtures) Add annotated corner fixtures for the absolute corner-error gate (#166)
  • (fixtures) Set annotator to kalwalt in the 5 annotated corner JSONs (#166)
  • (kpm) Add absolute corner-error regression gate against annotated ground truth (#166)
  • (fixtures) Replace blurry seq fixtures with screen-captured shots; drop nondeterministic frames (#166)
  • (kpm) Add temporary REGEN block to capture post-fix EXPECTED_FULL_POSE on Linux
  • (kpm) Regenerate test_full_pipeline_pose baseline against post-fix Linux values; drop REGEN block
  • (corner-error) Regen baseline post-fix on Linux + widen epsilon to 3.5 px (residual BHC variance) (#170)

## [0.6.1] - 2026-05-24

🐛 Bug Fixes

  • (ci) Remove invalid --ignore-timeouts flag from tarpaulin config
  • (ci) Add CODECOV_TOKEN to codecov upload step

🚀 Features

  • Add Tarpaulin-based code coverage report

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 05 Jun 15:56
da87651

Milestone 9 — VisualDatabase & pure Rust backend

⚙️ Miscellaneous Tasks

  • (examples) Dump db_id pyramid in simple_nft_dual to aid #160 triage
  • (corner-error) Wire the absolute_corner_error gate into kpm-build (#166)
  • (submodule) Bump WebARKitLib for std::map matcher-determinism fix (refs #170)
  • (submodule) Retarget WebARKitLib pin to post-#39 merged master SHA (#170)
  • (bridge) Bump jsartoolkit-nft to 1.10.0 + sharp to 0.34.5 + regen sidecar + widen POSE_ROT_TOL (#170)
  • (examples) Convert simple_nft to arlog macros (PR 4/4 for #90)

🐛 Bug Fixes

  • (test) Regenerate kpm_regression baseline and close CI gap (#155)
  • (test) Restore Linux baseline + gate test_full_pipeline_pose to Linux
  • (tests) Adapt corner-error gate to cross-platform variance (drop pinball-demo, widen epsilon to 2.0 px) (#166)
  • (kpm) Use BTreeMap for Hough vote tally and VisualDatabase keyframes to remove Rust-side matcher nondeterminism (#170)

📚 Documentation

  • (kpm) Add end-to-end pose comparison to M9-2 design doc §10
  • Switch regen capture recipe from arlog_e! to arlog_i! (#155)
  • (examples) Clarify simple_nft_dual.rs reports homography-level comparison (#157)
  • (tests) Add README for annotated_frames fixtures (#166)
  • (readme) Mark M9 (#139) complete, refresh roadmap + nft_marker_gen

🚀 Features

  • (kpm) Port VisualDatabase to Rust (M9-1, #140)
  • (kpm) Move BHC feature index from FeatureMatcher onto Keyframe (#146)
  • (kpm) Port HoughSimilarityVoting::autoAdjustXYNumBins (#150)
  • (kpm) Implement RustFreakMatcher and DualFreakMatcher (M9-2, #141)
  • (examples) Add simple_nft_dual.rs with DualFreakMatcher and per-frame divergence reporting (#157)
  • (tools) Add annotate_corners HTML tool for absolute corner-error fixtures (#166)
  • (tools) Per-corner edit + cursor-centered wheel zoom in annotate_corners (#166)
  • (examples) Save C++ and Rust marker-outline PNGs in simple_nft_dual to visualize divergence
  • (tests) Add cross-stack parity gate vs jsartoolkitNFT-Node (jsartoolkitNFT#584 Track 2, refs #170, #166 Track B)
  • (kpm) Remove C++ FFI as default — pure Rust FreakMatcher complete (#142)
  • (kpm) M9 — pure Rust KPM/NFT pipeline complete (#176)

🧪 Testing

  • (kpm) Redefine M9 parity gate as corner reprojection (#152)
  • (fixtures) Add annotated corner fixtures for the absolute corner-error gate (#166)
  • (fixtures) Set annotator to kalwalt in the 5 annotated corner JSONs (#166)
  • (kpm) Add absolute corner-error regression gate against annotated ground truth (#166)
  • (fixtures) Replace blurry seq fixtures with screen-captured shots; drop nondeterministic frames (#166)
  • (kpm) Add temporary REGEN block to capture post-fix EXPECTED_FULL_POSE on Linux
  • (kpm) Regenerate test_full_pipeline_pose baseline against post-fix Linux values; drop REGEN block
  • (corner-error) Regen baseline post-fix on Linux + widen epsilon to 3.5 px (residual BHC variance) (#170)

v0.6.1

Choose a tag to compare

@github-actions github-actions released this 24 May 13:12
e0a50f2

🐛 Bug Fixes

  • (ci) Remove invalid --ignore-timeouts flag from tarpaulin config
  • (ci) Add CODECOV_TOKEN to codecov upload step

🚀 Features

  • Add Tarpaulin-based code coverage report

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 18 May 15:21
8ea4310

Milestone 8 — FREAK descriptor & DoG detector

⚙️ Miscellaneous Tasks

  • (core) Add purecv dependency for milestone 8 refs #125 #126

🐛 Bug Fixes

  • (kpm) Relax dual-mode Gaussian-pyramid test to <= 1 ULP tolerance
  • (kpm) Disable FP contraction in C++ build to restore cross-platform parity
  • (kpm) Use full 15-digit C++ literals for orientation smoothing kernel
  • (kpm) Silence clippy::excessive_precision on SMOOTH_KERNEL

📚 Documentation

  • Add §3.5 documenting bilinear interpolation formula equivalence
  • Add §3.4 documenting the NONMAX_CHECK macro replacement
  • Update README and ARCHITECTURE with M8 milestone details

🚀 Features

  • (kpm) Port BoxFilterPyramid8u to Rust (M8 step 1)
  • (kpm) Port interpolate.h + BinomialPyramid32f to Rust (M8 step 2)
  • (kpm) Port DoG detector + OrientationAssignment to Rust (M8 step 3)
  • (kpm) Port FREAK descriptor + Keyframe to Rust (M8 step 4)

🧪 Testing

  • (kpm) Add dual-mode test for DoG detector with find_orientation=true

v0.5.1

Choose a tag to compare

@github-actions github-actions released this 14 May 11:13
c99bf76

⚙️ Miscellaneous Tasks

  • Convert generators to arlog_*! macros (PR 3/4 for #90)

🎨 Styling

  • Fix rustfmt import order in nft_marker_gen.rs

🐛 Bug Fixes

  • (examples) Use arlog_rel! for help banner and prompt UI per review

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 13 May 14:09
4764f70

Milestone 7 — Hough voting & feature matching in pure Rust

🚀 Features

  • (kpm) Implement Hough similarity voting algorithm (M7)
  • (kpm) Implement binary hierarchical clustering and k-medoids for FREAK descriptors
  • (kpm) Port FeatureStore and FeatureMatcher with three match variants
  • (kpm) Port ArrayShuffle for BHC parity with C++ baseline

🐛 Bug Fixes

  • (kpm) Fix arlog macro imports and unused variable warnings (#109)
  • (kpm) Apply clippy and fmt fixes to hough.rs for M7
  • (kpm) Resolve clippy warnings in clustering module
  • (kpm) Resolve remaining clippy warnings in clustering
  • (kpm) Include in kpm_c_api.cpp for GCC build
  • (kpm) Move include before matcher headers for GCC build
  • (build) Use platform-appropriate C++ stdlib (libc++ on macOS, libstdc++ on Linux)
  • (kpm) Use combined absolute+relative tolerance in M6-2 dual-mode tests
  • (kpm) Widen relative tolerance to 1e-5 for M6-2 dual-mode tests

🧪 Testing

  • (kpm) Add dual-mode FFI tests for FeatureMatcher (M7-3)
  • (kpm) Strengthen dual-mode FeatureMatcher tests with pair equality and global-best invariants

📚 Documentation

  • Add pre-commit verification workflow and arlog import pattern to CLAUDE.md

🎨 Styling

  • Fix formatting from cargo fmt

⚙️ Miscellaneous Tasks

  • Run dual-mode tests in CI to enforce C++ parity
  • Scope dual-mode tests to --lib to avoid pre-existing integration test failures

v0.4.1

Choose a tag to compare

@github-actions github-actions released this 12 May 18:57
ddba7c3

Patch release — Matrix code GlobalID, paramGL ports, and quality fixes

🚀 Features

  • (matrix) Add ARMatrixCodeType::GlobalID variant and MatchOk.global_id field
  • (bch) Implement BCH(127,64,22) decoder for AR_MATRIX_CODE_GLOBAL_ID
  • (matrix) Add 14x14 GlobalID bit extraction with 4-direction traversal
  • (matrix) Wire AR_MATRIX_CODE_GLOBAL_ID into ar_matrix_code_get_id and ar_get_marker_info
  • (matrix) Add GlobalID support to matrix code type and update parsing logic
  • (core) Implement ar_param_change_size and argl_camera_frustum_rh
  • (param_gl) Port remaining three paramGL.c functions to param_gl.rs

🐛 Bug Fixes

  • (param_gl) Fix clippy::doc_overindented_list_items on line 249
  • (arlog) Scope test log capture to the thread running the arlog test

🚜 Refactor

  • (param) Change ar_param_change_size to mutate ARParam in-place

📚 Documentation

  • (param_gl) Fix C source reference from argl.c to paramGL.c

⚙️ Miscellaneous Tasks

  • Finish converting load_nft.rs to arlog_*! macros

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 06 May 12:32
f9dbb24

Milestone 6 — Math & homography in pure Rust

🐛 Bug Fixes

  • (kpm) Satisfy clippy on freak::math constants and helpers
  • (bench) Resolve SIMD benchmark compilation errors

📚 Documentation

  • (kpm) Clarify SolveLinearSystem2x2 is dead in OUR build context

🚀 Features

  • (kpm) Port FREAK math utilities from C++ (Milestone 6 Phase 1-3)
  • (kpm) Port linear algebra and linear solvers (M6-2)
  • (kpm) Port homography pipeline + Padé matrix exp (M6-3)

🧪 Testing

  • (kpm) Add dual-mode validation for FREAK math fast-paths
  • (kpm) Add dual-mode validation for M6-2 linear solvers
  • (kpm) Add dual-mode validation for M6-3 homography pipeline

v0.3.8

Choose a tag to compare

@github-actions github-actions released this 04 May 15:29
cf6a50e

Last action before Milestone 6 — Math & homography in pure Rust

⚙️ Miscellaneous Tasks

  • Pass --features log-helpers when running simple example
  • Remove accidental .DS_Store from repo changes
  • Convert println!/eprintln! to arlog_*! in examples and bench

🎨 Styling

  • Apply cargo fmt --all (fixes CI fmt check)
  • (core) Fix formatting issues
  • (marker) Apply cargo fmt
  • (diagnostic) Apply stable rustfmt wrapping (#104 CI)

🐛 Bug Fixes

  • (clippy) Clear all warnings and add clippy -D warnings to CI
  • (clippy) Fix 5 CI-only clippy warnings (explicit_counter_loop, manual_checked_ops)
  • (marker) Populate cf_patt/id_patt and copy to final id/cf per mode
  • (core) Port confidence_cutoff from C and add regression tests (issue #92)
  • (marker) Wire cutoff_phase from MatchOk/MatchError result codes (#88)
  • (marker) Resolve merge conflict in cutoff_phase tests
  • (simple,marker) Honour the buff/pixel_format contract (#103)

📚 Documentation

  • (issue-86) Add implementation plan
  • Update CLAUDE.md with documentation and style guidelines
  • (issue-103) Correct findings — Rust/C cf close but not byte-equal

🚀 Features

  • (marker) Add finalize_marker_id_cf_dir helper
  • (types) Add MatchOk, MatchError, From for ARMarkerInfoCutoffPhase
  • (core) Add ar_detect_marker orchestrator for full marker detection pipeline
  • (types) Add AR tracking history mode constants (#101)
  • (marker) Port arDetectMarker tracking history pipeline (#96)
  • (diagnostic) Add dump_patt + diff_patt for issue #103

🚜 Refactor

  • (core) Move AR modules into ar/ subfolder (closes #82)
  • (types) Defer MatchOk.global_id field to issue #89
  • (pattern) Pattern_match returns Result<MatchOk, MatchError>
  • (matrix) Ar_matrix_code_get_id returns Result<MatchOk, MatchError>

🧪 Testing

  • (marker) Add failing tests for finalize_marker_id_cf_dir helper
  • (marker) Add confidence_cutoff edge case and mode-specific unit tests (#96)
  • (marker) Extract history phases as helpers and add 12 unit tests (#96)

v0.3.7

Choose a tag to compare

@github-actions github-actions released this 23 Apr 18:52
3760668

🐛 Bug Fixes

  • Replace PNG banner with JPG version in README and assets