[package]
authors = ["nathanielsimard <nathaniel.simard.42@gmail.com>"]
categories = ["science", "no-std", "embedded", "wasm"]
description = "Tensor library with user-friendly APIs and automatic differentiation support"
documentation = "https://docs.rs/burn-tensor"
edition.workspace = true
keywords = ["deep-learning", "machine-learning", "tensor", "pytorch", "ndarray"]
license.workspace = true
name = "burn-tensor"
readme.workspace = true
repository = "https://github.com/tracel-ai/burn/tree/main/crates/burn-tensor"
version.workspace = true

[lints]
workspace = true

[features]
default = ["std"]
doc = ["default"]
std = [
    "num-traits/std",
    "burn-std/std",
    "burn-backend/std",
    "colored",
]
tracing = [
    "burn-std/tracing",
    "burn-backend/tracing",
]

cubecl = ["burn-std/cubecl", "burn-backend/cubecl"]
cubecl-cuda = ["burn-backend/cubecl-cuda"]
cubecl-hip = ["burn-backend/cubecl-hip"]
cubecl-wgpu = ["burn-backend/cubecl-wgpu"]
cubecl-cpu = ["burn-backend/cubecl-cpu"]
experimental-named-tensor = []

[dependencies]
burn-std = { path = "../burn-std", version = "=0.21.0-pre.2", default-features = false }
burn-backend = { path = "../burn-backend", version = "=0.21.0-pre.2", default-features = false }

colored = { workspace = true, optional = true }
derive-new = { workspace = true }
num-traits = { workspace = true }

# Device
hashbrown = { workspace = true }
spin = { workspace = true }
thiserror = { workspace = true }

# Serialization
serde = { workspace = true }

[target.'cfg(not(target_has_atomic = "ptr"))'.dependencies]
portable-atomic-util = { workspace = true }

[dev-dependencies]
serial_test = { workspace = true }

[package.metadata.docs.rs]
features = ["doc"]
rustdoc-args = ["--cfg", "docsrs", "--html-in-header", "katex-header.html"]
