tidyr
tidyr replaced separate() with a family that says what it does.
A side-by-side editorial comparison of dbt Core and performance — release velocity, themes, recent moves, and the top alternatives to consider.
The Rust rewrite crosses from alpha to beta, and it can now bind SQL without touching the warehouse.
dbt is running two release lines at once. The 1.x Python line reached 1.12.0 in July, a GA that removed the experimental dbt login command and the bundled dbt-state plugin outright while adding the v2 semantic layer YAML parsing. The 2.0 Fusion line — the Rust engine — moved through five alphas and reached its first beta on August 10, carrying catalog-free binding, dbt state explain, redundant-test skipping, and a lint rule system that understands node selection.
performance keeps adding ways to check a model you have already fitted.
performance is at 0.17.1, which added check_priors() for prior predictive checks on Bayesian models and gave check_overdispersion(), check_model() and check_predictions() arguments to control residual type and plot range. The releases before it are a similar mix: a -2LL criterion column in test_likelihoodratio(), Bayesian predictive checks routed through modelbased, and in 0.16.0 a set of breaking renames including RMSA to the correct RMSR.
dbt is running two release lines at once. The 1.x Python line reached 1.12.0 in July, a GA that removed the experimental dbt login command and the bundled dbt-state plugin outright while adding the v2 semantic layer YAML parsing. The 2.0 Fusion line — the Rust engine — moved through five alphas and reached its first beta on August 10, carrying catalog-free binding, dbt state explain, redundant-test skipping, and a lint rule system that understands node selection.
Fusion is being built to do statically what dbt-core did by asking the warehouse. Catalog-free binding lets SQL bind without introspection, tests get skipped when they are provably redundant, and dbt State speculatively submits nodes while the dependency prefetch is still in flight — all of it trading round-trips for compile-time analysis. Meanwhile 1.x is absorbing the v2 semantic layer YAML piece by piece, which puts metrics and entities into the model graph itself. Adapter breadth keeps widening in parallel, with Databricks service principal auth, Redshift group grants, and ClickHouse materialization configs.
With beta.1 out, the next milestones are further betas hardening the Fusion feature set toward parity, and continued v2 semantic YAML work landing in the 1.x line.
performance is at 0.17.1, which added check_priors() for prior predictive checks on Bayesian models and gave check_overdispersion(), check_model() and check_predictions() arguments to control residual type and plot range. The releases before it are a similar mix: a -2LL criterion column in test_likelihoodratio(), Bayesian predictive checks routed through modelbased, and in 0.16.0 a set of breaking renames including RMSA to the correct RMSR.
Two consistent habits. Diagnostics keep gaining arguments to narrow what is examined — ppc_range, x_limits, maximum_dots, show_ci — which reads as a package being used on models large and awkward enough that the defaults stopped working. And simulated residuals via DHARMa keep displacing standard ones as the basis for the checks themselves.
With check_priors() newly added and Bayesian predictive checks now routed through modelbased, the next release most likely extends the Bayesian diagnostic set rather than reworking the frequentist checks.
Other Analytics 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 dbt Core or performance.
tidyr replaced separate() with a family that says what it does.
modeltime built conformal intervals in, then went quiet on features.
CmdStanPy is clearing deprecations ahead of a 2.0 it keeps announcing.
DoWhy adds one estimation method a year and keeps its identification edge.
OpenHouse is hardening the seams where table policies and jobs quietly fail.
silx 3.0 moved its default Qt binding to PySide6 — a migration for everyone embedding it.
See all dbt Core alternatives → · See all performance alternatives →
Latest ship moves from both products, interleaved chronologically. ⚡ = editorial spark.
They serve adjacent needs but don't currently overlap on shipped themes. dbt Core is currently shipping more aggressively (velocity 7.5 vs 0.0), with 2 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. dbt Core is currently shipping more aggressively (velocity 7.5 vs 0.0), with 2 editorial sparks in the last 30 days against 0. For your specific use case, the alternatives sections above list other Analytics products to evaluate alongside.
Top dbt Core alternatives in Analytics are ranked by recent ship velocity. Browse the "dbt Core alternatives" section above for the current picks, or visit /alternatives/dbt-core for the full list with editorial commentary on each.
Top performance alternatives in Analytics are ranked by recent ship velocity. Browse the "performance alternatives" section above for the current picks, or visit /alternatives/easystats-performance for the full list with editorial commentary on each.