Changelog ========= 1.3.0rc1 (2026-03-20) --------------------- **New features** - Empirical Bayes Dirichlet classifier with automatic prior tuning via Minka's fixed-point iteration for the Dirichlet-Multinomial marginal likelihood, with stabilized forgetting - Empirical Bayes normal regressor with automatic hyperparameter tuning via MacKay's evidence maximization (#200) - Kulhavy-Zarrop stabilized forgetting to prevent prior collapse under decay (#202) - Takahashi recursion for efficient trace computation in sparse precision matrices (#204), with Cython implementation (#206) - Sparse factor caching to avoid redundant factorizations (#198) - ``rng`` property with setter for reseeding agents and pipelines after deserialization (#224) **Performance** - BLAS-level optimizations for NormalRegressor (#219), BayesianGLM IRLS (#218), and EmpiricalBayesNormalRegressor (#220) - Refactored sparse factor classes for better performance and reuse (#213, #214) - Benchmark suite with pytest-benchmark (#217, #219, #220, #221) - Modernized Cython code with typed memoryviews (#212) **Documentation** - Complete documentation overhaul following Diataxis framework - How-to guides: pipelines, decay, reward functions, delayed rewards, production deployment, sparse features - Mathematical reference: NormalRegressor, NIG, empirical Bayes, Dirichlet EB, intercept-only models, GLM, exploration policies - Explanation pages: "Knowledge Is Prediction" (worldview), "Separating Inference from Decisions" (decision theory) - Comprehensive docstrings for all estimators, policies, agents, and arms - Quick-start guide (#223) **Infrastructure** - Cross-platform wheel builds via cibuildwheel (Linux x86_64/aarch64, macOS arm64, Windows x86_64) - Migrated from black + flake8 to ruff (#215) - NumPy 2.0 dependency, scikit-sparse 0.5.0 (#188, #205) - Pickling support fix for BayesianGLM (#196)