[package]
name = "aprender-profile"
version.workspace = true
edition = "2021"
rust-version = "1.75"
authors = ["Pragmatic AI Labs <info@paiml.com>"]
description = "Pure Rust system call tracer with source-aware correlation for Rust binaries"
license = "MIT"
repository = "https://github.com/paiml/renacer"
readme = "README.md"
keywords = ["strace", "tracing", "syscall", "debugging", "profiling"]
exclude = [
"book/",
"docs/",
"tests/",
".pmat/",
".pmat-metrics/",
".pmat-work/",
".github/",
"scripts/",
"*.md",
"!README.md",
"roadmap.yaml",
"tempo-config.yml",
"*.svg",
"**/*.profraw",
"**/*.profdata",
"**/*.proptest-regressions",
]
categories = ["development-tools::debugging", "development-tools::profiling"]
[lib]
name = "renacer"
[dependencies]
clap = { version = "4.5", default-features = false, features = ["derive", "cargo", "std", "help", "usage", "error-context", "suggestions"] }
libc = "0.2"
[target.'cfg(unix)'.dependencies]
nix = { version = "0.30", default-features = false, features = ["ptrace", "process", "signal", "uio", "resource", "user"] }
renacer-core = { version = "0.1" }
anyhow = "1.0"
thiserror = "2.0"
serde = { version = "1.0", default-features = false, features = ["derive", "std"] }
serde_json = { version = "1.0", default-features = false, features = ["std"] }
hex = { version = "0.4", default-features = false, features = ["std"] }
rmp-serde = "1.3"
fnv = "1.0"
addr2line = { version = "0.25", default-features = false, features = ["std"] }
gimli = { version = "0.32", default-features = false, features = ["read", "std", "endian-reader"] }
object = { version = "0.38", default-features = false, features = ["read", "elf", "std"] }
memmap2 = "0.9"
backtrace = "0.3"
trueno = { version = "0.17" }
aprender = { path = "../aprender-core", version = "0.32.0", package = "aprender-core" }
crossbeam = { version = "0.8", default-features = false, features = ["crossbeam-channel", "crossbeam-queue", "std"] }
dashmap = "6.1"
trueno-db = { version = "0.3.16" }
trueno-graph = { workspace = true }
sha2 = { version = "0.10", default-features = false, features = ["std"] }
static_assertions = "1.1"
toml = { version = "0.8", default-features = false, features = ["parse", "display"] }
regex = { version = "1.10", default-features = false, features = ["std", "perf"] }
rand = { version = "0.8", default-features = false, features = ["std", "std_rng"] }
tracing = { version = "0.1", default-features = false, features = ["std"] }
tracing-subscriber = { version = "0.3", default-features = false, features = ["env-filter", "fmt", "std", "ansi"] }
crossterm = "0.28"
trueno-viz = { version = "0.2", default-features = false, features = ["monitor"] }
opentelemetry = { version = "0.31.0", optional = true }
opentelemetry_sdk = { version = "0.31.0", features = ["rt-tokio"], optional = true }
opentelemetry-otlp = { version = "0.31.0", features = ["grpc-tonic", "http-proto"], optional = true }
tokio = { version = "1", features = ["rt", "rt-multi-thread", "macros"], optional = true }
wgpu = { version = "23.0", optional = true }
wgpu-profiler = { version = "0.18", optional = true }
cudarc = { version = "0.18", optional = true, features = ["f16", "cuda-version-from-build-system"] }
[dev-dependencies]
assert_cmd = "2.0"
predicates = "3.1"
tempfile = "3.13"
serial_test = "3.2"
proptest = "1.5"
reqwest = { version = "0.12", features = ["blocking", "json"] }
serde_json = "1.0"
criterion = { version = "0.5", features = ["html_reports"] }
[[bench]]
name = "syscall_overhead"
harness = false
[[bench]]
name = "otlp_export"
harness = false
[[bench]]
name = "memory_pool"
harness = false
[[bench]]
name = "ring_buffer_overhead"
harness = false
[[bench]]
name = "visualization_simd"
harness = false
[[bench]]
name = "metrics_throughput"
harness = false
[[bench]]
name = "graph_construction"
harness = false
[[example]]
name = "brick_trace_demo"
path = "examples/brick_trace_demo.rs"
[[example]]
name = "buggy_server"
path = "examples/buggy_server.rs"
[[example]]
name = "build_time_assertions"
path = "examples/build_time_assertions.rs"
[[example]]
name = "validate_golden_trace"
path = "examples/validate_golden_trace.rs"
[[example]]
name = "simd_visualization"
path = "examples/simd_visualization.rs"
[[example]]
name = "process_tracer_demo"
path = "examples/process_tracer_demo.rs"
[profile.release]
opt-level = 3
lto = true
codegen-units = 1
strip = true
[profile.dev]
panic = "abort"
opt-level = 0
debug = true
[profile.test]
opt-level = 0
debug = true
[features]
default = ["otlp"]
chaos-basic = []
chaos-network = ["chaos-basic"]
chaos-byzantine = ["chaos-network"]
chaos-full = ["chaos-byzantine", "dep:loom", "dep:arbitrary"]
fuzz = ["dep:arbitrary"]
otlp = ["dep:opentelemetry", "dep:opentelemetry_sdk", "dep:opentelemetry-otlp", "dep:tokio"]
gpu-tracing = ["dep:wgpu", "dep:wgpu-profiler", "otlp"]
cuda-tracing = ["dep:cudarc", "otlp"]
[dependencies.loom]
version = "0.7"
optional = true
[dependencies.arbitrary]
version = "1.3"
optional = true
features = ["derive"]
[lints]
workspace = true
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--generate-link-to-definition"]
[package.metadata.release]
shared-version = true
[[package.metadata.release.pre-release-replacements]]
file = "CHANGELOG.md"
search = "## \\[Unreleased\\]"
replace = "## [{{version}}] - {{date}}"