Diffs are represented by a
DeltaSizeInfo, where each
DeltaSymbol contains a reference to a
For new symbols,
before is None, and for removed symbols,
after is None.
The diffing algorithm is optimized for the common case of many unchanged symbols.
symbolfor all “before” symbols.
DeltaSymbols for symbols that have not changed are created when diffing, but discarded when writing
.sizediff files (see file_format.md).
DIFF_KEY=(container, section, full_name, path, s.size_without_padding)
DIFF_KEY=(container, section, full_name, path)
DIFF_KEY=(container, section, name, path)
DIFF_KEY=(container, section, full_name)
Since symbol padding tends to fluctuate from build to build, changes to padding is not considered. Padding is removed from all symbols when diffing and per-section cumulative change in padding is shown by a symbol called
Overhead: aggregate padding of diff'ed symbol.
No special treatment is made for symbols aliases. If the number of symbols in an alias group changes, a diff will show a size change for all symbols in the group. In the past there was an attempt to have diffs exclude showing changes to the number of aliases in a group, but it never worked reliably and added a lot of complexity. E.g., A symbol from one alias group changes to belong to a different alias group.