[package]
name = "backtrace"
version = "0.3.76"
authors = ["The Rust Project Developers"]
license = "MIT OR Apache-2.0"
readme = "README.md"
repository = "https://github.com/rust-lang/backtrace-rs"
homepage = "https://github.com/rust-lang/backtrace-rs"
documentation = "https://docs.rs/backtrace"
description = """
A library to acquire a stack trace (backtrace) at runtime in a Rust program.
"""
autoexamples = true
autotests = true
edition = "2024"
exclude = ["/ci/"]
rust-version = "1.88.0"

[workspace]
members = ['crates/cpp_smoke_test', 'crates/as-if-std']
exclude = [
  'crates/without_debuginfo',
  'crates/macos_frames_test',
  'crates/line-tables-only',
  'crates/debuglink',
]

[dependencies]
cfg-if = "1.0"
rustc-demangle = "0.1.27"

# Optionally enable the ability to serialize a `Backtrace`, controlled through
# the `serialize-serde` feature below.
serde = { version = "1.0", optional = true, features = ['derive'] }

# Optionally demangle C++ frames' symbols in backtraces.
cpp_demangle = { default-features = false, version = "0.5.0", optional = true, features = [
  "alloc",
] }

[target.'cfg(any(windows, target_os = "cygwin"))'.dependencies]
windows-link = "0.2"

[target.'cfg(not(all(windows, target_env = "msvc", not(target_vendor = "uwp"))))'.dependencies]
miniz_oxide = { version = "0.8", default-features = false }
ruzstd = { version = "0.8.1", default-features = false, optional = true }
addr2line = { version = "0.25.0", default-features = false }
libc = { version = "0.2.156", default-features = false }

[target.'cfg(not(all(windows, target_env = "msvc", not(target_vendor = "uwp"))))'.dependencies.object]
version = "0.37.0"
default-features = false
features = ['read_core', 'elf', 'macho', 'pe', 'xcoff', 'unaligned', 'archive']

[dev-dependencies]
dylib-dep = { path = "crates/dylib-dep" }
libloading = "0.8"

[features]
# By default libstd support is enabled.
default = ["std"]

# Include std support. This enables types like `Backtrace`.
std = []

serialize-serde = ["serde"]

ruzstd = ["dep:ruzstd"]

#=======================================
# Deprecated/internal features
#
# Only here for backwards compatibility purposes or for internal testing
# purposes. New code should use none of these features.
coresymbolication = []
dbghelp = []
dl_iterate_phdr = []
dladdr = []
kernel32 = []
libunwind = []
unix-backtrace = []

[[example]]
name = "backtrace"
required-features = ["std"]

[[example]]
name = "raw"
required-features = ["std"]

[[test]]
name = "skip_inner_frames"
required-features = ["std"]

[[test]]
name = "long_fn_name"
required-features = ["std"]

[[test]]
name = "smoke"
required-features = ["std"]

[[test]]
name = "accuracy"
required-features = ["std"]

[[test]]
name = "concurrent-panics"
required-features = ["std"]
harness = false

[[test]]
name = "current-exe-mismatch"
required-features = ["std"]
harness = false

[lints.rust]
# This crate uses them pervasively
unexpected_cfgs = "allow"
