Skip to content

2.6.0

Latest

Choose a tag to compare

@naftaly naftaly released this 08 Aug 21:16
· 27 commits to master since this release

Note

KSCrash 2.6.0 is fully backward-compatible with 2.5.1: no source-breaking changes, and all renamed or removed APIs keep working as deprecated aliases. The Migration Guide covers everything that changed and how to adopt the new features.

Highlights

  • Watchdog monitor: detects main-thread hangs using run-loop observation and a 250ms threshold matching Apple's hang definition, with full backtraces, recovery tracking, and optional non-fatal reports for recovered hangs. Replaces the deprecated Deadlock monitor.
  • Termination monitor: detects OS-level terminations that can't be caught at runtime (OOM, thermal, CPU watchdog, reboots, OS/app upgrades), and previousTerminationReason reports why the previous run ended.
  • CPU tracker: sliding-window CPU state tracking that mirrors Apple's enforcement thresholds, with optional non-fatal EXC_RESOURCE reports on state transitions.
  • Per-key user info: an async-signal-safe, mmap'd key-value store with zero crash-time overhead, replacing the deprecated dictionary userInfo property.
  • Swift modules: Report (strongly-typed CrashReport model for parsing reports), Monitors (MetricKit plugin), and Profiler (sampling profiler).
  • Plus a plugin monitor API, direct backtrace capture API, threadcrumbs, compact binary images, opt-in Swift async stack traces, and a long list of crash-time correctness and hardening fixes.

The CHANGELOG has the complete list of features, deprecations, behavioral changes, and bug fixes.

Full Changelog: 2.5.1...2.6.0