[package]
name = "renacer"
version = "0.6.3"
edition = "2021"
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"]
categories = ["development-tools::debugging", "development-tools::profiling"]

[dependencies]
# CLI and argument parsing
clap = { version = "4.5", features = ["derive", "cargo"] }

# Ptrace and system calls
nix = { version = "0.29", features = ["ptrace", "process", "signal", "uio"] }
libc = "0.2"

# Error handling
anyhow = "1.0"
thiserror = "1.0"

# JSON serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
hex = "0.4"

# MessagePack for Sprint 27 decision trace (v2.0.0 spec)
rmp-serde = "1.3"

# FNV hash for u64 decision IDs (Sprint 27)
fnv = "1.0"

# DWARF debug info parsing
addr2line = "0.24"
gimli = "0.31"
object = "0.37"
memmap2 = "0.9"

# Stack unwinding for function profiling
backtrace = "0.3"

# High-performance SIMD/GPU compute (sister project - published on crates.io)
trueno = "0.7.0"

# Machine learning for anomaly detection (Sprint 23)
aprender = "0.7.1"

# Lock-free data structures for ring buffer (Sprint 40)
crossbeam = "0.8"

# Parquet storage for golden thread traces (Sprint 40)
trueno-db = "0.3.1"

# Graph database for causal analysis (Sprint 41)
trueno-graph = "0.1.0"

# SHA-256 hashing for state-based semantic equivalence (Sprint 42)
sha2 = "0.10"

# TOML parsing for build-time assertions (Sprint 44)
toml = "0.8"

# Regex filtering (Sprint 16)
regex = "1.10"

# Random number generation for Isolation Forest (Sprint 22)
rand = "0.8"

# Development tracing/debugging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] }

# OpenTelemetry for distributed tracing (Sprint 30)
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 }

# GPU kernel tracing (Sprint 37)
wgpu = { version = "23.0", optional = true }
wgpu-profiler = { version = "0.18", optional = true }

# CUDA kernel tracing (Sprint 38)
cudarc = { version = "0.18", optional = true, features = ["f16", "cuda-version-from-build-system"] }

[dev-dependencies]
# Testing
assert_cmd = "2.0"
predicates = "3.1"
tempfile = "3.13"
serial_test = "3.2"

# Property-based testing
proptest = "1.5"

# Sprint 34: Integration testing with Jaeger
reqwest = { version = "0.11", features = ["blocking", "json"] }
serde_json = "1.0"

# Sprint 36: Performance benchmarking
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

[profile.release]
opt-level = 3
lto = true
codegen-units = 1
strip = true

[profile.dev]
opt-level = 0
debug = true

# Chaos engineering features (Sprint 29 - Red-Team Profile)
# Following aprender/trueno patterns for feature organization
[features]
default = ["otlp"]

# Tier 1: Fast chaos (resource limits, signal injection)
chaos-basic = []

# Tier 2: Network/IO chaos (latency, packet loss simulation)
chaos-network = ["chaos-basic"]

# Tier 3: Byzantine fault injection (syscall return modification)
chaos-byzantine = ["chaos-network"]

# Full chaos engineering suite
chaos-full = ["chaos-byzantine", "dep:loom", "dep:arbitrary"]

# Fuzz testing support
fuzz = ["dep:arbitrary"]

# OpenTelemetry OTLP export (Sprint 30)
otlp = ["dep:opentelemetry", "dep:opentelemetry_sdk", "dep:opentelemetry-otlp", "dep:tokio"]

# GPU kernel-level tracing (Sprint 37)
gpu-tracing = ["dep:wgpu", "dep:wgpu-profiler", "otlp"]

# CUDA kernel-level tracing (Sprint 38)
cuda-tracing = ["dep:cudarc", "otlp"]

[dependencies.loom]
version = "0.7"
optional = true

[dependencies.arbitrary]
version = "1.3"
optional = true
features = ["derive"]
