Windmill
Windmill is dismantling the paywall between itself and the data stack
A side-by-side editorial comparison of vdiffr and waldo — release velocity, themes, recent moves, and the top alternatives to consider.
vdiffr finished its job in 2021 and has been tracking compilers ever since.
vdiffr generates deterministic SVG snapshots so plot changes show up as test failures. Its recent history is almost entirely toolchain: UCRT Windows compatibility twice, a revert to C++11 to work around a GCC issue, and renaming the internal SVG device so it stops colliding with svglite. The only functional additions in view are snapshot variants in 1.0.8 and a testthat fix so snapshots are no longer auto-deleted when a test errors or skips. The last release was October 2024.
waldo keeps shedding dependencies while teaching its diff engine new object systems
waldo produces the object comparisons that testthat failure messages are built from. The recent releases do two things: drop dependencies - tibble, rematch2 and fansi have all gone - and extend comparison to object systems that did not exist when it was written, notably S7. Correctness of missing-value and tolerance semantics accounts for most of the rest.
vdiffr generates deterministic SVG snapshots so plot changes show up as test failures. Its recent history is almost entirely toolchain: UCRT Windows compatibility twice, a revert to C++11 to work around a GCC issue, and renaming the internal SVG device so it stops colliding with svglite. The only functional additions in view are snapshot variants in 1.0.8 and a testthat fix so snapshots are no longer auto-deleted when a test errors or skips. The last release was October 2024.
The package reached its intended shape at 1.0.0, when snapshot management moved to testthat and vdiffr shed most of its own R and JavaScript code to become a reproducible SVG engine and nothing more. There is not much left to add to that, and the release stream since reads accordingly: it moves when a compiler, an R version, or testthat moves. For a testing dependency this is a healthy end state, though it does mean the package inherits whatever the graphics engine does to snapshot stability.
The entries do not support predicting a feature release. The likely next change is a compatibility fix prompted by a compiler or a testthat change, as every release since 1.0.2 has been.
waldo produces the object comparisons that testthat failure messages are built from. The recent releases do two things: drop dependencies - tibble, rematch2 and fansi have all gone - and extend comparison to object systems that did not exist when it was written, notably S7. Correctness of missing-value and tolerance semantics accounts for most of the rest.
This is a package deliberately shrinking its footprint while widening what it understands. Since it is imported by testthat, every dependency it drops is one fewer package in the check environment of most of CRAN, which is clearly the motivation. The comparison logic itself changes only when R gains a new way to represent objects.
Expect S7 support to deepen from basic to complete as S7 adoption grows, and further dependency removals; the diff algorithm itself looks settled.
Other Infra & APIs products tracked by Sparkpulse, ranked by recent ship velocity. Each card links to a full editorial trajectory and lets you pivot into a head-to-head comparison with either vdiffr or waldo.
Windmill is dismantling the paywall between itself and the data stack
Resend is wiring itself into every agent runtime it can reach, one standard at a time
The deployment client is being rebuilt around credentials it never has to store.
A package whose release calendar is written by whoever ships the next Rtools.
DNSControl v5 is feature complete and counting down to an August ship date
highr is finished software: one-line releases every year or two
See all vdiffr alternatives → · See all waldo alternatives →
Latest ship moves from both products, interleaved chronologically. ⚡ = editorial spark.
Both compete on the same themes — testing, maintenance — within Infra & APIs. vdiffr and waldo are shipping at a similar cadence (velocity 0.0 vs 0.0, both within Sparkpulse's "active" band). See the at-a-glance table above for a side-by-side breakdown of velocity, recent sparks, and editorial themes.
Sparkpulse doesn't pick a winner — we score release velocity, not feature parity. vdiffr and waldo are shipping at a similar cadence (velocity 0.0 vs 0.0, both within Sparkpulse's "active" band). For your specific use case, the alternatives sections above list other Infra & APIs products to evaluate alongside.
Top vdiffr alternatives in Infra & APIs are ranked by recent ship velocity. Browse the "vdiffr alternatives" section above for the current picks, or visit /alternatives/vdiffr for the full list with editorial commentary on each.
Top waldo alternatives in Infra & APIs are ranked by recent ship velocity. Browse the "waldo alternatives" section above for the current picks, or visit /alternatives/waldo for the full list with editorial commentary on each.