← Back to all sparks
W

waldo

INFRA · APIS
Velocity0.0

Find and concisely describe the differences between two R objects

waldo keeps shedding dependencies while teaching its diff engine new object systems

testingdiffingdependenciess7maintenance
Current state
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.
Where it's heading
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.
Prediction
Expect S7 support to deepen from basic to complete as S7 adoption grows, and further dependency removals; the diff algorithm itself looks settled.

Recent moves

  1. 1y ago

    Compares weakrefs, ignores read-only S7 properties

    Continues the object-system thread: read-only S7 properties are skipped so only the underlying attribute data is compared, and comparing an S3 object against a base object of the same type now explains itself in more detail. Weakref support is the small addition.

    View source ↗
  2. 1y ago

    Only uses bit64 comparison when bit64 is installed

    A three-day follow-up to 0.6.0 guarding the integer64 comparison path behind an installed-package check. Pure cleanup after the dependency reduction in the prior release.

    View source ↗
  3. 1y ago

    Drops tibble and rematch2; adds basic S7 support

    The clearest expression of both threads at once - two more dependencies removed from a package that sits under testthat, and the first support for S7 objects along with the ability to tell apart objects differing only in their S4 bit. Numeric comparisons also print an extra digit so the difference is actually visible.

    View source ↗
  4. 1y ago

    Drops the fansi dependency

    A single-line release removing the fansi import. Notable only as another step in the dependency-shedding pattern that runs through this package's recent history.

    View source ↗
  5. 2y ago

    Fixes for upcoming R-devel changes

    A compatibility-only release ahead of changes in R-devel. Nothing user-visible - the kind of release this cohort ships when the language moves underneath it.

    View source ↗
  6. 3y ago

    Tolerance now governs both display and NaN equality

    A semantics change that reaches every test suite using testthat: NA_real_ and NaN are treated as unequal only when a tolerance is set, so expect_equal() and expect_identical() diverge on that pair by design. Tolerance is also taken into account when rendering the difference.

    View source ↗