content: [package]
  authors = [
      "Dilshod Tadjibaev (@antimora)",
      "Nathaniel Simard (@nathanielsimard)",
  ]
  categories = ["science", "mathematics", "algorithms"]
  description = "Common crate for CubeCL"
  edition.workspace = true
  keywords = ["gpu", "cuda", "wgpu"]
  license.workspace = true
  name = "cubecl-common"
  readme.workspace = true
  repository = "https://github.com/tracel-ai/cubecl/tree/main/crates/cubecl-common"
  version.workspace = true
  
  [features]
  cache = ["std", "serde_json", "dirs", "sanitize-filename"]
  default = ["std"]
  fp4 = ["float4"]
  fp8 = ["float8"]
  serde = ["serde_bytes"]
  std = ["rand/std", "futures-lite", "rand/thread_rng", "serde_json?/std"]
  
  
  [dependencies]
  # ** Please make sure all dependencies support no_std when std is disabled **
  bytemuck = { workspace = true, features = ["derive"] }
  derive-new = { workspace = true }
  derive_more = { workspace = true, features = [
      "not",
      "add",
      "mul",
      "add_assign",
      "mul_assign",
      "display",
  ] }
  float4 = { workspace = true, optional = true }
  float8 = { workspace = true, optional = true }
  half = { workspace = true }
  log = { workspace = true }
  num-traits = { workspace = true }
  rand = { workspace = true }
  serde = { workspace = true }
  spin = { workspace = true } # using in place of use std::sync::Mutex;
  
  cfg-if = { workspace = true }
  
  # Cache
  dirs = { workspace = true, optional = true }
  hashbrown = { workspace = true }
  sanitize-filename = { workspace = true, optional = true }
  serde_bytes = { workspace = true, features = ["alloc"], optional = true }
  serde_json = { workspace = true, features = ["alloc"], optional = true }
  
  # Only activate futures for std env
  embassy-futures = { version = "0.1.1" }
  futures-lite = { workspace = true, features = [
      "std",
  ], default-features = false, optional = true }
  
  [target.'cfg(target_has_atomic = "ptr")'.dependencies]
  spin = { workspace = true, features = ["mutex", "spin_mutex"] }
  
  [target.'cfg(not(target_has_atomic = "ptr"))'.dependencies]
  portable-atomic-util = { workspace = true }
  portable-atomic = { workspace = true }
  spin = { workspace = true, features = [
      "mutex",
      "spin_mutex",
      "portable_atomic",
  ] }
  
  [target.'cfg(target_family = "wasm")'.dependencies]
  wasm-bindgen-futures = { workspace = true }
  
  # Default dependency for all targets
  [target.'cfg(not(target_os = "none"))'.dependencies]
  web-time = { workspace = true }
  
  # Only for true no_std / embedded targets
  [target.'cfg(target_os = "none")'.dependencies]
  embassy-time = { workspace = true }
  
  [build-dependencies]
  cfg_aliases = { workspace = true }
  
  [dev-dependencies]
  bincode = { workspace = true }
  dashmap = { workspace = true }
  