CBTF
A fuzzer for R packages that grew from one argument at a time to parallel runs across whole namespaces.
A side-by-side editorial comparison of ggdist and lifecontingencies — release velocity, themes, recent moves, and the top alternatives to consider.
The grammar of uncertainty visualization, now drawing the uncertainty in its own estimates.
ggdist supplies ggplot2 with a compositional vocabulary for distributions — slabs, intervals, dotplots and the sub-geometries that combine them. The last three years moved it from a drawing library to an estimation library: bounded density estimation with Sheather-Jones bandwidth became the default, weights propagate through every density, interval and point summary, and blurred dotplots render Monte Carlo standard error as visual fuzz. The 2025 release rounds this out with per-geometry thickness subscales and settable global defaults.
An actuarial mainstay spends its releases on CI plumbing, not on new mathematics.
lifecontingencies is a long-running R package for actuarial life-contingency mathematics. Its three most recent tags show a maintainer keeping the infrastructure alive rather than extending the library: 1.5.2 is entirely author-metadata corrections, CI workflow repairs and release automation, 1.4.4 moved presentValue() onto Rcpp, and 1.4.1 states outright that it is identical to the version before it. The 1.5.2 notes jump from 1.4.4, so whatever happened in between never reached this feed.
ggdist supplies ggplot2 with a compositional vocabulary for distributions — slabs, intervals, dotplots and the sub-geometries that combine them. The last three years moved it from a drawing library to an estimation library: bounded density estimation with Sheather-Jones bandwidth became the default, weights propagate through every density, interval and point summary, and blurred dotplots render Monte Carlo standard error as visual fuzz. The 2025 release rounds this out with per-geometry thickness subscales and settable global defaults.
Two threads run in parallel and keep converging. One is statistical: pluggable density estimators arrived first, then became the default, then gained weights and quantile histograms. The other is compositional: sub-geometries acquired their own guides, then their own scales, so a slab's thickness axis is now a first-class annotated dimension. Cadence has stretched from twice-yearly to roughly annual, with the recent work tightening existing surface rather than opening new.
Subguides gained subscales a release later, so the remaining asymmetry is in the sub-geometry system rather than the statistics; expect the next release to continue that fill-in work.
lifecontingencies is a long-running R package for actuarial life-contingency mathematics. Its three most recent tags show a maintainer keeping the infrastructure alive rather than extending the library: 1.5.2 is entirely author-metadata corrections, CI workflow repairs and release automation, 1.4.4 moved presentValue() onto Rcpp, and 1.4.1 states outright that it is identical to the version before it. The 1.5.2 notes jump from 1.4.4, so whatever happened in between never reached this feed.
The one genuine engineering thread is performance: rewriting presentValue() in Rcpp targets the innermost loop of every annuity and insurance valuation the package performs. Everything since has been about keeping CRAN checks green across platforms — TinyTeX install order, cross-platform caching, automated release tagging — plus a set of Italian actuarial benchmark tests that pin results against published tables. That is maintenance discipline on a stable API, not expansion.
Expect further patch tags carrying CI and documentation work, with any Rcpp performance work extending from presentValue() into adjacent valuation functions if it continues at all.
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 ggdist or lifecontingencies.
A fuzzer for R packages that grew from one argument at a time to parallel runs across whole namespaces.
An atlas of the tree of life that keeps publishing what it got wrong, and stopped shipping the trees it does not own.
Land-change analysis in R that has spent six years defending one download link.
The machine-learning arm of a forecast reconciliation toolkit, four months old and already sharing its sibling's plumbing.
Forecast reconciliation with a real object model, five years after it started returning bare matrices.
A textbook data package whose whole job is to stay installable, and whose releases prove how much work that is.
See all ggdist alternatives → · See all lifecontingencies alternatives →
Latest ship moves from both products, interleaved chronologically. ⚡ = editorial spark.
Both compete on the same themes — r-package — within Infra & APIs. lifecontingencies is currently shipping more aggressively (velocity 2.5 vs 0.0), with 0 editorial sparks in the last 30 days against 0. 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. lifecontingencies is currently shipping more aggressively (velocity 2.5 vs 0.0), with 0 editorial sparks in the last 30 days against 0. For your specific use case, the alternatives sections above list other Infra & APIs products to evaluate alongside.
Top ggdist alternatives in Infra & APIs are ranked by recent ship velocity. Browse the "ggdist alternatives" section above for the current picks, or visit /alternatives/ggdist for the full list with editorial commentary on each.
Top lifecontingencies alternatives in Infra & APIs are ranked by recent ship velocity. Browse the "lifecontingencies alternatives" section above for the current picks, or visit /alternatives/lifecontingencies for the full list with editorial commentary on each.