Files
rust-optimizer/CHANGELOG.md
T
2026-02-12 12:49:24 +01:00

7.6 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.9.1 - 2026-02-12

Fixed

  • Fix journal file handling to support both reading and writing modes

0.9.0 - 2026-02-12

Added

  • Storage trait abstraction with pluggable backends
  • JSONL journal storage backend for persistent studies (behind journal feature)
  • Differential Evolution sampler
  • Gaussian Process sampler with Expected Improvement acquisition function
  • NSGA-III sampler for many-objective optimization with reference-point decomposition
  • MOEA/D sampler for decomposition-based multi-objective optimization
  • StudyBuilder for fluent study construction

Changed

  • Move next_trial_id counter from Study into Storage trait
  • Replace rand 0.10 with fastrand 2.3 for simpler, faster random number generation
  • Remove visualization and fanova feature flags (now always available)
  • Simplify CI test commands by removing feature matrix

Fixed

  • Seed importance tests to eliminate flakiness
  • Use atomic counter for temp paths in journal tests

Removed

  • Reverted SQLite storage backend (may return in a future release)

0.8.1 - 2026-02-11

Fixed

  • Resolve broken rustdoc intra-doc links for Error::NoCompletedTrials

0.8.0 - 2026-02-11

Added

  • Multi-objective optimization with NSGA-II
  • Multi-Objective TPE (MOTPE) sampler
  • Pareto front analysis utilities
  • CSV and JSON data export for visualization
  • HTML visualization reports with Plotly.js charts
  • fANOVA (functional ANOVA) parameter importance via random forest

Fixed

  • Rename variable to pass typos check

0.7.2 - 2026-02-11

Changed

  • Update nalgebra dependency to version 0.34
  • Add advisory ignore for unmaintained transitive dependency

0.7.1 - 2026-02-11

Changed

  • Update tracing dependency to version 0.1.29

0.7.0 - 2026-02-11

Added

  • CMA-ES (Covariance Matrix Adaptation Evolution Strategy) sampler behind cma-es feature flag
  • Sobol quasi-random sampler behind sobol feature flag
  • BOHB (Bayesian Optimization with HyperBand) sampler for budget-aware optimization
  • Parameter importance analysis via Spearman rank correlation
  • Constraint handling with feasibility-aware trial ranking
  • optimize_with_retries() for automatic retry of failed trials
  • optimize_with_checkpoint() with atomic save writes for crash recovery
  • Study::summary() and Display impl for study overview
  • IntoIterator for &Study and iter() method
  • Tracing integration behind tracing feature flag
  • Serde serialization support behind serde feature flag
  • Benchmark suite with criterion and standard test functions

0.6.0 - 2026-02-11

Added

  • Pruning system with Pruner trait and NopPruner default implementation
  • Intermediate value reporting on trials for pruner integration
  • TrialPruned error variant and Pruned trial state
  • ThresholdPruner for fixed-bound trial pruning
  • MedianPruner for statistics-based trial pruning
  • PercentilePruner for configurable percentile-based trial pruning
  • PatientPruner for patience-based trial pruning
  • SuccessiveHalvingPruner for SHA-based trial pruning
  • HyperbandPruner for multi-bracket trial pruning
  • WilcoxonPruner for statistics-based trial pruning
  • Study::minimize() and Study::maximize() constructor shortcuts
  • From<RangeInclusive> for FloatParam and IntParam
  • Timeout-based optimization with optimize_until
  • Study::top_trials(n) for retrieving the best N trials
  • Ask-and-tell interface with ask() and tell() methods
  • Trial user attributes for logging and analysis
  • enqueue_trial() for pre-specified parameter evaluation

0.5.1 - 2026-02-10

Changed

  • Update random number generation to use rand::make_rng() and upgrade rand to version 0.10

0.5.0 - 2026-02-06

Added

  • Typed parameter API with FloatParam, IntParam, CategoricalParam, BoolParam, and EnumParam
  • #[derive(Categorical)] proc macro for deriving categorical parameters from enums (behind derive feature)
  • .name() builder method on all parameter types for custom labels
  • CompletedTrial::get() for typed parameter access
  • Display impl on ParamValue
  • Prelude module at optimizer::prelude::*

Changed

  • Reorganize sampler module structure and update imports
  • Remove log dependency

0.4.0 - 2026-02-02

Added

  • Multivariate TPE sampler for correlated parameter search
  • Gamma strategies for TPE sampler (linear, sqrt, fixed) with examples
  • Example: async API parameter optimization
  • Example: ML hyperparameter tuning

Fixed

  • Handle end value in suggest method to avoid panic on underflow

0.3.1 - 2026-01-31

Added

  • Grid search sampler for exhaustive parameter exploration
  • suggest_bool() method for boolean parameter suggestion
  • SuggestableRange trait and suggest_range() method for parameter suggestion from ranges
  • Documentation, keywords, categories, and readme fields in Cargo.toml

Changed

  • Replace TpeError with unified Error type across the library
  • Add permissions for read access to contents in CI and scheduled workflows

0.3.0 - 2026-01-30

Added

  • Cross-target compilation checks in CI

Changed

  • Internal code refactoring and cleanup

0.2.0 - 2026-01-30

Added

  • CI step for unused dependencies check with cargo-machete
  • CI step to publish to crates.io
  • Default typo extension for 'Tpe'

Changed

  • Remove serde dependency (was unused)
  • Remove unused ordered-float dependency

0.1.1 - 2026-01-30

Fixed

  • Minor release fixes

0.1.0 - 2026-01-30

Added

  • Initial implementation of the optimization library
  • TPE (Tree-structured Parzen Estimator) sampler with optional fixed bandwidth KDE
  • Random sampler
  • Async optimization support
  • CI workflows for testing, coverage (Codecov), auditing, and publishing
  • README with project overview, features, and quick start guide

Release Workflow

This changelog is maintained automatically with git-cliff.

  1. Write commits using Conventional Commits (feat:, fix:, refactor:, etc.).
  2. Tag the release: git tag v0.X.0
  3. Regenerate the changelog: make changelog
  4. Commit the updated CHANGELOG.md and push.