← Back to all sparks
C

checkmate

INFRA · APIS
Velocity0.0

Fast and Versatile Argument Checks

Infrastructure so widely depended on that its most consequential release changed nothing.

argument-validationr-internalsreverse-dependenciesinfrastructurecran
Current state
checkmate provides fast argument checks and is a dependency deep in the R package graph, which shapes everything about how it releases. The last five tags are small: a deprecated-internal-call cleanup, a complex-number edge case in allMissing(), a sprintf format fix. The most recent release removes calls to internal R functions that newer R versions no longer expose.
Where it's heading
The package is in the phase where its obligations outweigh its ambitions. When R-devel changed whether NULL counts as atomic, checkmate's published response was to keep the old behaviour specifically to avoid breaking reverse dependencies, which is the clearest statement of its position in the stack. New check functions still appear, but rarely, and the bulk of the work is tracking upstream R and its C API.
Prediction
Expect continued adaptation to R internals as the C API narrows, and any behaviour change to arrive with an explicit reverse-dependency justification rather than as a default flip.

Recent moves

  1. 6mo ago

    Removes deprecated internal R calls

    A one-line compatibility release dropping calls to internal R functions. It is the same kind of upstream-tracking work as the isFrame() removal a release earlier, and the pattern is what maintaining a package this deep in the dependency graph now costs.

    View source ↗
  2. 0y ago

    Complex-number allMissing() fix; internal isFrame() call dropped

    A bug fix for allMissing() on complex numbers where one of the real and imaginary parts was missing, plus removal of the internal C isFrame() call for recent R versions and documentation work. Corrections within existing behaviour.

    View source ↗
  3. 2y ago

    Long-integer sprintf format string fixed

    A single sprintf format string fix for long integers. The kind of release that exists because CRAN checks caught a compiler warning.

    View source ↗
  4. 2y ago

    Keeps NULL atomic to avoid breaking reverse dependencies

    The release notes announce a decision not to follow upstream: R-devel is changing so NULL is no longer considered atomic, and checkmate will hold the old behaviour until further notice. For a package this far down the dependency graph, publishing that commitment is more consequential than the checkAtomic() warning fix shipped alongside it.

    View source ↗
  5. 3y ago

    Adds checkPermutation and better long-vector handling

    The last release in the window to add a public check function. checkPermutation() joins the API, long vectors are handled better, and a bounds check for numeric vectors with infinite limits is corrected.

    View source ↗