Skip to content

✨ v0.10.3

Latest

Choose a tag to compare

@Robdel12 Robdel12 released this 19 May 16:57
· 3 commits to main since this release

Honeydiff v0.10.3

This release is all about speed without changing what Honeydiff reports.

The comparison hot paths now skip redundant perceptual work when pixels are already equal, avoid CIEDE2000 entirely for exact count-only comparisons, reuse Delta E results during anti-aliasing checks, and remove mutex contention from the parallel row scan. Clustering also moved to a leaner scanline labeling pass, and sRGB conversion now uses a small lookup table instead of recalculating the same values over and over.

The important bit: accuracy stays first. Honeydiff still uses the same CIEDE2000 thresholding, the same anti-aliasing semantics, and the same 8-connectivity clustering behavior. The release was verified with the workspace tests, clippy, release build, CLI smoke coverage, and Criterion benchmarks.

Performance Wins

Scenario Before After Impact
Full HD default comparison ~31.7 ms ~18.6 ms ~41% faster
4K default comparison ~133 ms ~77.1 ms ~42% faster
Strict threshold 0 synthetic comparison ~778 ms ~88.8 ms ~8.8x faster
Strict threshold 1 synthetic comparison ~764 ms ~88.7 ms ~8.6x faster
Tall exact/no-AA core comparison ~25.7 ms ~4.9 ms ~5.2x faster
Tall screenshot CLI default comparison ~1.05 s ~0.64 s ~39% faster
Tall screenshot CLI exact/no-AA comparison ~2.07 s ~0.66 s ~3.1x faster

What Changed

  • Added RGB equality short-circuits before perceptual color comparison.
  • Added an exact/no-AA/count-only fast path for strict comparisons.
  • Reused already computed Delta E values during anti-aliasing checks.
  • Reworked parallel comparison aggregation to avoid shared mutex contention.
  • Added an sRGB linearization lookup table for repeated RGB to Lab conversion.
  • Replaced hash-heavy clustering with scanline row-label vectors.
  • Added real fixture benchmarks for Vizzly-style screenshots and tall page captures.

Install

npm install @vizzly-testing/honeydiff@0.10.3

Full changelog: v0.10.2...v0.10.3