Skip to content

stackpulse 0.9.0

Choose a tag to compare

@github-actions github-actions released this 01 Sep 23:40
· 84 commits to main since this release
ad36cc0

Changed

  • Linux capture now holds zero-copy ring records until timestamp ordering releases them, uses bounded loss/recovery pacing, and reports the effective per-CPU data-ring capacity.
  • Perf rings use a 1 GiB aggregate recorder budget and a 256 MiB per-CPU ceiling. Wakeup watermarks follow the effective budgeted or fallback capacity.
  • Forked processes reuse inherited unwind and ELF state. Shared ELF retention is bounded by image count and bytes.
  • CI now tests Linux x86-64 and AArch64, Rust 1.88, and every Cargo feature combination.
  • CI audits Cargo.lock, checks public API compatibility, verifies the packaged crate, and rejects undocumented unsafe blocks and unannotated explicit panics in library code.
  • Rustdoc now links tutorials, recipes, reference material, design notes, and the SPULSE format contract. GitHub Pages publishes the generated documentation.
  • Perf-map parsing moved to symbolize::perf_map; executable module tracking moved to linux::module_tracking.
  • AArch64 unwinding now strips pointer-authentication bits from recovered return addresses.
  • Recording, spool reading, and symbolization now use the Recorder, Snapshot, Replay, and Symbolizer APIs. Typed Pid and Tid values reject invalid identifiers at the boundary, and Recorder::poll combines waiting with event draining.
  • Native symbolizers now receive batched NativeLookup requests. Symbolizer::resolve returns borrowed resolved stacks and supports caller-owned stack caching.
  • NativeModule and NativeLookup have public constructors for custom-symbolizer tests, with opaque image identities generated by StackPulse.
  • Recording, process management, liveness checks, spool reading, and symbolization return stackpulse::Result. ErrorKind::TargetGone distinguishes a vanished process while retaining the original OS error.