hessboost 0.2.2

Fast, deterministic gradient boosting (GBDT) in Rust: conformal intervals, explainable boosting machines, distributional boosting, tree-based diffusion, and XGBoost model interchange
Documentation
[package]
name = "hessboost"
version = "0.2.2"
edition = "2024"
rust-version = "1.93"
license = "Apache-2.0"
repository = "https://github.com/brndnmtthws/hessboost"
authors = ["Brenden Matthews <brenden@brndn.io>"]
description = "Fast, deterministic gradient boosting (GBDT) in Rust: conformal intervals, explainable boosting machines, distributional boosting, tree-based diffusion, and XGBoost model interchange"
keywords = ["xgboost", "gradient-boosting", "gbdt", "machine-learning", "decision-trees"]
categories = ["artificial-intelligence", "algorithms", "science"]
# What the published crate ships: the library, its tests (with their saved
# models), examples, benches, and the user docs. Development tooling (CI,
# mise, fuzzing, scripts, benchmark charts, AGENTS.md) stays in the
# repository.
include = [
    "/src/**",
    "/tests/**",
    "/examples/**",
    "/benches/**",
    "/README.md",
    "/LICENSE",
]

[dependencies]
rayon = "1.12"
serde = { version = "1.0", features = ["derive"] }
# `float_roundtrip`: native JSON models store `f64` fields (linear-leaf
# coefficients, objective parameters), which the default parser can misread
# by an ulp.
serde_json = { version = "1.0", features = ["float_roundtrip"] }
zstd = { version = "0.14", default-features = false }

[features]
# Native Metal acceleration for histogram training and prediction on
# macOS (Apple Silicon and Intel Macs with a Metal GPU). Opt-in and
# off by default; see `src/backend/`.
metal = ["dep:objc2", "dep:objc2-metal", "dep:objc2-foundation"]

[target.'cfg(target_os = "macos")'.dependencies]
objc2 = { version = "0.6", default-features = false, features = ["std"], optional = true }
objc2-metal = { version = "0.3", default-features = false, features = [
    "std",
    "MTLDevice",
    "MTLCommandQueue",
    "MTLCommandBuffer",
    "MTLComputeCommandEncoder",
    "MTLCommandEncoder",
    "MTLLibrary",
    "MTLComputePipeline",
    "MTLAllocation",
    "MTLResource",
    "MTLBuffer",
    "MTLTypes",
], optional = true }
objc2-foundation = { version = "0.3", default-features = false, features = [
    "std",
    "NSString",
], optional = true }

[dev-dependencies]
criterion = "0.8.2"
proptest = "1.11"
approx = "0.5.1"
rand = "0.10.3"

[lints.clippy]
pedantic = { level = "warn", priority = -1 }
undocumented_unsafe_blocks = "warn"
# Numeric kernels convert between f32/f64/usize/u32 on purpose; value ranges
# are bounded by the data model (bins, feature ids, row counts).
cast_possible_truncation = "allow"
cast_possible_wrap = "allow"
cast_precision_loss = "allow"
cast_sign_loss = "allow"
# Exact comparisons are intentional: sentinels, split thresholds, test oracles.
float_cmp = "allow"
# Math code uses the conventional short names (g, h, w, x, y, lo, hi).
many_single_char_names = "allow"
similar_names = "allow"
too_many_lines = "allow"
# Every fallible API returns HessboostError; per-function sections are boilerplate.
missing_errors_doc = "allow"
missing_panics_doc = "allow"
must_use_candidate = "allow"
# Hot prediction/histogram/SIMD helpers; forced inlining is measured.
inline_always = "allow"

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

[profile.release]
opt-level = 3
lto = "thin"
codegen-units = 1
panic = "abort"

[profile.bench]
opt-level = 3
lto = "thin"
codegen-units = 1

# CI's test builds (`cargo nextest run --cargo-profile ci`, `cargo test --doc
# --profile ci`). opt-level 1 keeps debug assertions and overflow checks but
# runs the suite about ten times faster than `dev`'s opt-level 0 for a
# fraction more compile time; line tables keep file:line backtraces.
# Dependents ignore this profile.
[profile.ci]
inherits = "dev"
opt-level = 1
debug = "line-tables-only"