Skip to content

v1.8.0

Choose a tag to compare

@dannote dannote released this 24 Apr 13:21
· 330 commits to master since this release

What's new

  • gen_statem supportmix reach.otp detects and analyzes gen_statem state machines with both state_functions and handle_event_function callback modes. Extracts initial state(s), state transition graph, and event types per state.

  • Dead GenServer reply detection — finds GenServer.call sites where the reply value is discarded.

  • Cross-process coupling analysis — builds per-module effect summaries and detects hidden data dependencies (shared ETS tables, process dictionary keys) across GenServer.call/cast boundaries.

  • Supervision tree extraction — finds Supervisor.start_link(children, opts) calls, resolves variable references, extracts child module names.

Improved

  • Smell detection false positives fixed (pattern operators, string interpolation, unrelated call pairs)
  • OTP analysis ~1000× faster for large codebases (precomputed index replaces O(n²) scan)
  • Reach.OTP refactored into focused submodules
  • Ran Reach on itself, fixed 9 redundant computations and 1 dead code finding

Stats

Tested across 25 codebases (2,122 files, 87,768 functions): zero crashes.

464 tests, full CI green.