Skip to content

v0.9.3

Pre-release
Pre-release

Choose a tag to compare

@rocketman-code rocketman-code released this 05 Mar 06:11
· 456 commits to main since this release

Fixes correctness bugs in async profiling, allocation tracking, and self-time precision -- upgrading is recommended for anyone profiling async or high-call-count programs.

Added

  • Signal handlers for SIGTERM and SIGINT recover profiling data on Unix instead of losing it (#257)
  • #[non_exhaustive] on all public runtime structs for forward-compatible API evolution (#258)
  • Internal injection API hidden from docs.rs to keep published documentation clean (#259)
  • MIT LICENSE file (#248)

Fixed

  • Allocation counters no longer corrupted when async futures are cancelled mid-await (#250)
  • Unbounded memory growth for high-call-count programs: per-invocation records replaced with in-flight aggregation, bounding memory to O(unique functions) instead of O(total calls) (#251)
  • Floating-point precision loss in self-time computation eliminated by using integer nanoseconds for children time accumulation (#253)
  • select!/join! and other macro invocations in async functions now treated as potential .await points for thread migration detection (#249)
  • Migrated async guards capture post-migration CPU time instead of reporting zero (#269)
  • Allocation tracking correctly scoped to condition expressions for if/while/match with .await in condition, so body allocations are not lost (#270)
  • Non-block match arms (Some(v) => process(v)) now get allocation tracking when scrutinee contains .await (#292)
  • NDJSON runs no longer approximate total_ms from self_ms; the field is set to 0.0 to honestly represent absent data (#254)
  • FrameFnSummary.calls widened from u32 to u64 to prevent overflow for high-call-count frames (#286)
  • IO errors now include file path and operation context instead of bare OS messages (#255)
  • flush() reports write errors to stderr instead of silently discarding them (#256)
  • find_latest_binary accepts .exe extension on Windows (#252)