[package]
name = "treeboost"
version = "0.1.0"
edition = "2021"
description = "High-performance Gradient Boosted Decision Tree engine for large-scale tabular data"
license = "Apache-2.0"
repository = "https://github.com/ml-rust/treeboost"
homepage = "https://github.com/ml-rust/treeboost"
documentation = "https://docs.rs/treeboost"
keywords = [
"machine-learning",
"gbdt",
"gradient-boosting",
"decision-tree",
"xgboost",
]
categories = ["science", "algorithms", "command-line-utilities"]
readme = "README.md"
authors = ["Farhan Syah"]
exclude = [
"benchmarks/**",
"benches/**",
"catboost_info/**",
"images/**",
"results/**",
"samples/**",
"scripts/**",
"target/**",
]
[lib]
name = "treeboost"
path = "src/lib.rs"
crate-type = ["cdylib", "rlib"]
[features]
default = []
python = ["dep:pyo3", "dep:numpy"]
gpu = ["dep:wgpu", "dep:pollster"]
cuda = ["dep:cudarc"]
mmap = ["dep:memmap2"]
[[bin]]
name = "treeboost"
path = "src/main.rs"
[dependencies]
polars = { version = "0.51", features = ["parquet", "lazy", "dtype-full"] }
rayon = "1.10"
rkyv = "0.8"
tdigest = "0.2"
faer = "0.23"
bytemuck = { version = "1.19", features = ["derive"] }
rustc-hash = "2.1"
rand = "0.8"
thiserror = "2.0"
ordered-float = "4.5"
clap = { version = "4.5", features = ["derive"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
csv = "1.3"
bincode = "1.3"
crc32fast = "1.5"
fs4 = "0.13"
chrono = "0.4"
pyo3 = { version = "0.23", features = ["extension-module"], optional = true }
numpy = { version = "0.23", optional = true }
wgpu = { version = "27", optional = true }
pollster = { version = "0.4", optional = true }
cudarc = { version = "=0.18.2", optional = true, default-features = false, features = [
"driver",
"nvrtc",
"dynamic-linking",
"cuda-version-from-build-system",
] }
memmap2 = { version = "0.9", optional = true }
[dev-dependencies]
criterion = { version = "0.5", features = ["html_reports"] }
approx = "0.5"
tempfile = "3.15"
fastrand = "2.3"
gbdt = { version = "0.1", features = ["enable_training"] }
forust-ml = "0.4"
[[bench]]
name = "competitors"
harness = false
[[bench]]
name = "profile"
harness = false
[[bench]]
name = "correctness"
harness = false
[profile.release]
lto = "thin"
codegen-units = 1
opt-level = 3
[profile.bench]
lto = "thin"
codegen-units = 1