Skip to content

Feature reference

Every Cargo feature of the two publishable library crates: what it turns on, what it pulls in, and whether it is on by default.

atune is the crate you depend on; atune_core is the small, wasm32-clean layer underneath it, and the facade forwards the two features it has. Enable them the usual way:

[dependencies]
atune = { version = "0.1", features = ["cmaes", "sqlite"] }

This page is generated from the manifests, and each description below is the comment block above that feature in Cargo.toml — the words a maintainer already writes next to the code that reads the flag, rather than a second copy that could disagree with it. To change a description, change the comment. Because those comments are written for the people who maintain the crates, some of them still point at the project's internal design notes by number.

Generated file. Do not edit between the pragmas below — run cargo dev generate-all --mode write instead. Everything outside them is hand-written and is never touched.

atune

crates/atune/Cargo.toml declares 14 entries in [features]: the default set and 13 features.

default = ["system"], which turns on system.

system (on by default)

Forwards atune_core's OS-facility gate (system clock, thread-parallel optimize). Turning it off keeps the facade wasm32-compatible.

Enables atune_core/system, dep:same-file, dep:tempfile, dep:rustix, dep:exacl, dep:windows-permissions.

conformance

Exports the storage conformance suite (see atune_core).

Enables atune_core/conformance.

gp

In-house GP-EI (logEI) sampler. A Matérn-5/2 Gaussian process over the [0, 1]^d unit hypercube with a faer Cholesky and the numerically-stable analytic Log Expected Improvement (Ament et al. 2023). Off by default because faer, the linear-algebra dependency it needs, is the heaviest thing in the graph.

Enables dep:faer, dep:libm, dep:rand, dep:rand_chacha, dep:serde.

pb2

In-house PB2 — Population-Based Bandit: a time-varying GP-bandit variant of PBT that replaces PBT's random hyperparameter perturbation with the perturbation that maximizes a time-varying GP-UCB acquisition, and emits Decision::Fork. It reuses the gp feature's faer Cholesky for its bespoke time-varying GP (a temporal forgetting factor × the in-house Matérn-5/2 spatial kernel), so it implies gp and pulls NO new dependency of its own.

Enables gp.

carbs

In-house CARBS — Cost-Aware pareto-Regional Bayesian Search: a cost-aware Bayesian-optimization Sampler. A CARBS study is two-objective — [<performance>, Minimize(cost)] — and the sampler reads performance and a user-returned cost scalar, fitting a performance GP, a log-cost GP and a 1-D per-cost Pareto-baseline GP, then doing Gaussian-ball local search around the cost-vs-performance frontier scored by EI over that baseline. It reuses the gp feature's faer Cholesky / Matérn / logEI for all three GPs, so it implies gp and pulls NO new dependency of its own.

Enables gp.

cmaes

In-house CMA-ES sampler. faer does the covariance eigendecomposition and nothing else. Gated because that dependency tree is the heaviest thing in the graph, and the sampler lives in the facade so that turning it off leaves atune_core tiny and wasm32-clean.

Enables dep:faer, dep:rand, dep:rand_chacha, dep:serde.

sqlite

SqliteStorage backed by bundled rusqlite. bundled compiles the SQLite amalgamation into the binary, so there is no system-sqlite dependency and no version skew between machines — at the price of a C compiler at build time. Gated, and in the facade rather than in atune_core, so that a build without it never gains a rusqlite/cc edge.

It implies system: a file-backed SQL database is OS code (fs + a system clock for created_at/finished_at), exactly like JournalStorage, which atune_core gates the same way. A --no-default-features (wasm) build never sees it.

Enables system, dep:rusqlite, dep:serde, dep:serde_json.

importance

In-house PED-ANOVA hyperparameter-importance analysis: the atune::importance module, computing closed-form, deterministic importances over completed trials. It lives in the facade, not atune_core, only because it wants a high-accuracy erf; libm supplies it (a Rust port of the same FDLIBM routine C's math.erf reduces to, which is what makes the importances match Optuna's PedAnovaImportanceEvaluator to floating-point precision). libm is pure Rust with no further edges and is pulled in only by this feature, so a default or --no-default-features build never compiles it.

Enables dep:libm.

diagnose

The atune doctor advisory engine for open search spaces: reads a study and reports findings a user can act on (a crowded bound, a parameter that never mattered, a mismatched sampler, ...) — no behaviour change anywhere, no sampling, no mutation. diagnose = ["importance"] means importance is a dependency: PED-ANOVA powers the Inert finding, and this feature calls the existing estimator rather than writing a second one. It is its own feature, not folded into importance, because --format json with a non-zero exit code is meant to gate CI (a nightly sweep failing when a bound is pressed), independent of whichever heavier samplers happen to be compiled in.

Enables importance, dep:serde.

async

Reserved: a Tokio adapter wrapping ask/tell for async objectives. The name exists so downstream wiring can already refer to it; nothing is implemented behind it and enabling it changes nothing.

Enables no other feature and pulls no dependency.

optuna-compat

Optuna journal interop, both directions. The export half is atune export --optuna, an Optuna journal-file writer, so an atune study opens in optuna-dashboard with no GUI code of ours; the import half is atune import, an Optuna-journal reader. Both are journal-file only — the RDB-sqlite writer is the separate optuna-rdb feature below, which needs the sqlite dependency the journal path does not. This feature pulls serde_json (already in the graph) only to render shortest round-tripping floats, and is otherwise dependency-free.

Enables dep:serde_json.

remote

The network storage backend: RemoteStorage (a Storage client) and the atune serve loop, speaking a thin newline-delimited-JSON wire protocol over std::net TCP. It is host-functional by nature (TCP is OS code) and off by default, so the ordinary wasm / --no-default-features build excludes it. The feature is nevertheless compile-checked on wasm32-unknown-unknown: Rust supplies std stubs there, but TCP calls return errors, so this is not a browser transport and must not be used at runtime on that target. It needs no new dependency: std::net is in std, and the frames are rendered and parsed with serde_json (already in the graph; float_roundtrip makes that parse bit-exact, and the module mirrors the journal's non-finite-float string encoding).

Enables dep:serde, dep:serde_json.

optuna-rdb

Optuna RDB-sqlite export: atune export --optuna-rdb <file.db> writes Optuna's relational on-disk form (the sqlite:///… RDBStorage database), with the schema mirrored from what Optuna 4.9.0 actually writes. It is optuna-compat (the shared distribution/state/attr mapping) plus sqlite (the bundled rusqlite this writer opens the fresh database with), so the heavy rusqlite edge only enters when this feature is on — the plain journal export stays dependency-light.

Enables optuna-compat, sqlite.

atune_core

crates/atune_core/Cargo.toml declares 3 entries in [features]: the default set and 2 features.

default = ["system"], which turns on system.

system (on by default)

OS facilities: the system clock, thread-parallel optimize and the filesystem-backed journal. NOT called std on purpose — this crate always links std; what this flag gates is the operating system surface that wasm32-unknown-unknown does not have. On a Unix host it also pulls rustix, which gives the subprocess executor a safe process-group kill for the --timeout path (no unsafe, no pre_exec); a non-Unix build and every --no-default-features build, wasm included, never see it.

Enables dep:rustix.

conformance

Exports the storage conformance suite so other crates and out-of-tree storage backends can run it against their own implementations.

Enables no other feature and pulls no dependency.