rlevo-evolution 0.3.1

Evolutionary algorithms for rlevo (internal crate — use `rlevo` for the full API)
Documentation
[package]
name = "rlevo-evolution"
version.workspace = true
authors.workspace = true
description = "Evolutionary algorithms for rlevo (internal crate — use `rlevo` for the full API)"
edition.workspace = true
license.workspace = true
readme = "README.md"
repository.workspace = true
keywords.workspace = true
categories.workspace = true

[dependencies]
burn = { workspace = true }
cubecl = { workspace = true, optional = true }
rlevo-core = { path = "../rlevo-core", version = "0.3.1" }
rand = { workspace = true }
rand_distr = { workspace = true }
# Lock type for `SharedPopulationObserver`: unified on `parking_lot` so the
# observer handle and the recording-tier sinks in `rlevo-benchmarks` share
# one `Mutex` type (ADR 0010). Already a transitive workspace dependency.
parking_lot = { workspace = true }
# Row-parallel host-side phenotype decode + evaluation in Gene Expression
# Programming (3e-R1 §5). Pinned at the workspace version.
rayon = { workspace = true }
serde = { workspace = true }
# Derives `ShapingError` (fallible fitness-shaping transforms). Workspace-pinned
# at 2.x, same as `rlevo-core`.
thiserror = { workspace = true }
tracing = { workspace = true }

[dev-dependencies]
approx = { workspace = true }
criterion = { workspace = true }
proptest = { workspace = true }

[[bench]]
name = "operators"
harness = false

[[bench]]
name = "neat_xor"
harness = false

[features]
default = ["custom-kernels"]
# Enables custom CubeCL kernels on hot paths. Two kernel slots are
# declared today: the fused pairwise-attract kernel used by Firefly
# (large-`N` path) and the fused Lévy-flight (Mantegna) kernel available
# to Cuckoo and Bat. Additional design placeholders for tournament
# selection, DE trial vectors, and fitness-proportionate selection remain
# unimplemented — see `src/ops/kernels/mod.rs`. When the feature is
# disabled, pure-tensor fallbacks are used; Firefly in that mode is
# capped at `pop_size ≤ 128` because the `O(N²D)` decomposition's memory
# grows as the cube of `N`.
custom-kernels = ["dep:cubecl"]

# Render LaTeX in docs (e.g. the cartpole physics) via KaTeX on docs.rs.
# The header must live inside this crate's own directory — docs.rs builds
# from the packaged tarball, which cannot contain files outside the crate
# root, so a `../../` path here silently works locally but 404s on docs.rs.
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--html-in-header", "katex-header.html"]

[lints]
workspace = true