Scry.Beam (scry v0.1.22)

Copy Markdown View Source

The analysis-relevant view of a .beam file.

Elixir rewrites a module's beam when a compile-time dependency is recompiled even if nothing in the module changed: the ExCk chunk (the type checker's signature cache) is regenerated, and Docs moves with any @doc edit. Neither feeds fact extraction, so hashing or memoizing the raw bytes made a comment-only edit in one module re-extract every module that depends on it at compile time. canonical/1 drops those chunks and rebuilds the module, so two beams that differ only there compare equal.

Dbgi stays: planchette's debug twin recompiles from it.

Summary

Functions

Rebuilds beam without the chunks extraction never reads.

Functions

canonical(beam)

@spec canonical(binary()) :: binary()

Rebuilds beam without the chunks extraction never reads.

A binary :beam_lib cannot parse is returned unchanged; the extractor reports the real problem downstream.