Skip to content

Release notes

Every release of this package is published as a GitHub release. The most recent are reproduced below, as they were written there.

v0.2.3

Released 2026-08-24. Read it on GitHub.

Diff since v0.2.2

  • Made a truncated Student-t differentiable. truncated normalises eagerly, so building a truncated TDist calls logcdf, which routes to SpecialFunctions.beta_inc and has no method for a Dual. Every gradient through a truncated t therefore failed outright rather than returning a wrong number. TDist and its location-scale wrapper now evaluate through the AD-safe hooks on all seven backends. Building a truncated t directly from tracked parameters stays ForwardDiff-only, which is how Gamma and Beta already behave, since that path needs Dual methods added to Distributions and no other backend extension adds them.

  • Relaxed the AD-safe evaluation hooks so they no longer require a Distributions.UnivariateDistribution subtype. cdf_ad_safe, logcdf_ad_safe, ccdf_ad_safe, logccdf_ad_safe and pdf_ad_safe previously raised a MethodError on a leaf that implements the univariate interface without inheriting from it, which blocked duck-typed leaves inside racing-hazard (compete) nodes and duck-typed components in a convolution's quadrature path. primal_distribution was relaxed with it, and a type carrying no params method now raises an ArgumentError naming the type rather than a MethodError.

  • Added the missing Extensions section of the documentation site. The navigation already declared one page per package extension, but none of the pages had been written, so the whole group was dropped from the build and readers saw no Extensions section at all.

Merged pull requests:

  • docs: write the seven package extension pages (#84) (@seabbs-bot)

  • fix: accept duck-typed leaves in the AD-safe hooks and primal_distribution (#85) (@seabbs-bot)

  • fix: make a truncated Student-t differentiable (#80) (#86) (@seabbs-bot)

  • docs: land the extension-page corrections that missed the #84 merge (#89) (@seabbs-bot)

  • chore: auto-increment version to 0.2.3 (#90) (@github-actions[bot])

  • ci(deps): bump the github-actions group with 12 updates (#91) (@dependabot[bot])

  • fix: run the AS 187 shape-partial series to convergence at large shape (#93) (@seabbs-bot)

  • docs: update shared ecosystem badge to new EpiAware design system icon (#94) (@seabbs-bot)

  • ci(deps): bump the github-actions group with 12 updates (#98) (@dependabot[bot])

Closed issues:

  • Benchmarks and AD benchmarks (#28)

  • Epic: AD, numerics and differentiation tooling (#35)

  • docs: wire up the split AD-comparison benchmark page after kit#305 (#49)

  • _grad_p_a_series loses accuracy at extreme shapes (k ≳ 1e5) (#67)

  • Write docs pages for the seven extensions (#68)

  • truncated(TDist) is not ForwardDiff-differentiable: truncated eagerly calls logcdf, which routes to beta_inc (#80)

  • logccdf_ad_safe is bounded on UnivariateDistribution, blocking duck-typed leaves in compete (#81)

  • cdf_ad_safe/pdf_ad_safe/primal_distribution have no duck-typed fallback (#83)

v0.2.2

Released 2026-08-17. Read it on GitHub.

Diff since v0.2.1

  • Fixed a NaN gradient (every AD backend: ForwardDiff, ReverseDiff, Enzyme forward/reverse, Mooncake forward/reverse) from cdf_ad_safe, logcdf_ad_safe, ccdf_ad_safe, logccdf_ad_safe, and pdf_ad_safe on a LogNormal evaluated below its support (x <= 0), and from logcdf_ad_safe on a Weibull evaluated below its support. The primal value was already correct (-Inf/0/1 as appropriate); only the gradient broke, because the stock evaluator still routes the fixed boundary value through an expression carrying the Dual shape/scale parameters.

  • No public API changes.

Merged pull requests:

  • ci: sync managed infra to the EpiAware standard (#76) (@github-actions[bot])

  • chore(deps): update Runic requirement from =1.7.0 to =1.7.0, 1.8 in /test/formatter in the julia-isolated group across 1 directory (#77) (@dependabot[bot])

  • fix: NaN gradient for LogNormal/Weibull hooks below their support (#78) (@seabbs-bot)

v0.2.1

Released 2026-08-14. Read it on GitHub.

Diff since v0.2.0

  • Switched EpiAwarePackageTools from a git [sources] pin to a registered [compat] bound ("0.3, 0.4") in every environment that depends on it: the kit is now published to the General registry, and the git pin only ever worked on Julia >= 1.11.

  • Synced managed CI/tooling infrastructure to the current EpiAwarePackageTools standard (dependabot groups, template-sync workflow, AGENTS.md/CLAUDE.md, docs nav, AD-comparison benchmark page).

  • Removed the retired ad-backends.jl tutorial registration from the docs nav config; its content now lives on the AD-comparison benchmark page, and existing links to it still resolve.

  • Updated developer docs (FAQ, contributing guide) that still described the retired JuliaFormatter standard to describe Runic, and fixed a stale claim that the AD harness covers "six backends" (it's been seven since ReverseDiff (compiled) landed).

No public API changes.

Merged pull requests:

  • chore!: sync with EpiAwarePackageTools main, depend on the registered kit (#72) (@seabbs-bot)

v0.2.0

Released 2026-08-12. Read it on GitHub.

Diff since v0.1.2

This is a breaking release.

  • Fixed logccdf_ad_safe(::Gamma) returning -Inf in the far right tail, where the stock (non-differentiable) logccdf stays finite; the same issue affected SurvivalDistributions.GeneralizedGamma. A new log-space Gamma survival primitive fixes both, with AD rules across every backend.

  • Fixed _beta_cdf's continued-fraction evaluator returning NaN for widely disparate shape parameters near the boundary of x, and improved its accuracy by raising the default term count.

  • Fixed primal_distribution throwing a MethodError on Truncated and Censored distributions; it now rebuilds them recursively through the public truncated/censored constructors. This also unblocks EpiAware/CensoredDistributions.jl.

  • Added fixed_draw and ad_eltype, a reparameterisation-trick helper pair mirroring the existing primal/primal_distribution tape-strip helpers.

  • Pointed the release notes docs page at GitHub releases instead of NEWS.md.

Merged pull requests:

  • ci(deps): bump the github-actions group with 9 updates (#59) (@dependabot[bot])

  • fix: primal_distribution rebuilds Truncated/Censored via public constructors (#60) (@seabbs-bot)

  • fix: logccdf_ad_safe underflows in the Gamma far right tail (#61) (@seabbs-bot)

  • fix: rescale continued-fraction accumulators to stop beta CDF NaN (#62) (@seabbs-bot)

  • feat: reparameterisation-trick helpers (fixed_draw/ad_eltype) (#63) (@seabbs-bot)

  • docs: point the release notes page at GitHub releases (#64) (@seabbs-bot)

  • chore!: sync with EpiAwarePackageTools main and raise the Julia floor to 1.11 (#69) (@seabbs-bot)

  • ci(deps): bump the github-actions group with 11 updates (#70) (@dependabot[bot])

  • chore(deps): bump the julia-isolated group across 2 directories with 15 updates (#71) (@dependabot[bot])

Closed issues:

  • Widen the AD-safe function family to more continuous families and publish per-family coverage (#36)

  • Reparameterisation-trick helpers for differentiating through a stochastic computation (#38)

  • _beta_cdf continued fraction overflows to NaN for disparate shapes near the x boundary (#42)

  • logccdf_ad_safe loses the far right tail: log1p(-F) underflows where the stock evaluator does not (#47)

  • Point the release-notes docs page at GitHub Releases (#53)

  • primal_distribution has no method for Truncated (#57)

  • primal_distribution(::Truncated) reconstructs via stale 3-float Truncated(...) constructor (MethodError) (#58)

v0.1.2

Released 2026-08-05. Read it on GitHub.

Diff since v0.1.1

  • Added additional special function support

  • Added support for the generalised gamma

Merged pull requests:

  • fix: close the two follow-ups left by PR #43's review (#52) (@seabbs-bot)

  • feat: own the xlogy/xlog1py Mooncake rules for the ecosystem (#54) (@seabbs-bot)

Closed issues:

  • main-branch docs build red: missing Plots dependency + SpecialFunctions issue-link 500 (#33)

v0.1.1

Released 2026-08-03. Read it on GitHub.

Diff since v0.1.0

Merged pull requests:

  • chore: auto-increment version to 0.1.1 (#1) (@github-actions[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/downgrade.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6fcdcde033ec670ac3832b239427fd2ded591bbc (#2) (@dependabot[bot])

  • ci(deps): bump actions/checkout from 4 to 7 (#3) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/ad.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6fcdcde033ec670ac3832b239427fd2ded591bbc (#4) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/documentation.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6fcdcde033ec670ac3832b239427fd2ded591bbc (#5) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/cancel-on-close.yml from 6d4e35e2515f947acbf7d2a683cbf02b341005c7 to 6fcdcde033ec670ac3832b239427fd2ded591bbc (#6) (@dependabot[bot])

  • ci(deps): bump julia-actions/cache from 2 to 3 (#11) (@dependabot[bot])

  • chore: scaffold_update to KIT 0.3.0 (fix sync workflow, refresh managed infra) (#15) (@seabbs-bot)

  • chore(deps): update DataFramesMeta requirement to 0.15.6 (#16) (@dependabot[bot])

  • chore(deps): update CairoMakie requirement to 0.15.13 (#17) (@dependabot[bot])

  • chore(deps): update DifferentiationInterfaceTest requirement from 0.9, 0.10 to 0.9, 0.10, 0.11 (#18) (@dependabot[bot])

  • chore(deps): update JET requirement from 0.9, 0.10 to 0.9, 0.10, 0.11 (#19) (@dependabot[bot])

  • chore(deps): update AlgebraOfGraphics requirement to 0.13.1 (#20) (@dependabot[bot])

  • chore(deps): update Statistics requirement to 1.11.1 (#21) (@dependabot[bot])

  • docs: point at the real org setup guide, fix stale Discussions links (#22) (@seabbs-bot)

  • docs: fix wrong docs domain in README (#23) (@seabbs-bot)

  • ci(deps): consolidate reusable-workflow SHA bumps (supersedes #7–#10) (#24) (@seabbs-bot)

  • ci: sync managed infra to the EpiAware standard (#25) (@github-actions[bot])

  • ci: qualify the scaffold_update call ahead of the kit's export-to-public move (#30) (@seabbs-bot)

  • docs: trim developer-note section, dedupe install docs, regroup benchmarks nav (#32) (@seabbs-bot)

  • docs: add a Related packages section to the README (#69) (#34) (@seabbs-bot)

  • feat: AD-safe Beta CDF derivative (_beta_cdf), mirroring gamma_ad.jl (#40) (@seabbs-bot)

  • feat: add a shared streaming log-sum-exp accumulator (#41) (@seabbs-bot)

  • feat: add nondifferentiable, a user-facing differentiation opt-out (#43) (@seabbs-bot)

  • ci(deps): bump the github-actions group with 9 updates (#44) (@dependabot[bot])

  • fix(docs): repair docs build broken by a 404 linkcheck and a dangling @ref (#45) (@seabbs-bot)

  • feat: host the SurvivalDistributions GeneralizedGamma hook methods (#46) (@seabbs-bot)

  • fix: correct the GeneralizedGamma failure path and close its test gaps (#48) (@seabbs-bot)

Closed issues:

  • Remove: What does not live here (#26)

  • Installation (#27)

  • ad page DIT update failing (#29)

  • User-facing opt-out to hold a function or struct out of differentiation (#37)

  • Shared streaming log-sum-exp accumulator over an unbounded discrete support (#39)

v0.1.0

Released 2026-07-18. Read it on GitHub.

First release of backend AD tools for the EpiAware org

Merged pull requests:

  • chore: scaffold_update convergence onto kit main + adopt AD-backends tutorial (#12) (@seabbs-bot)

Every release, including any older than those above, is listed on the releases page.