Improve IL comparison normalization and report transparency - #256
Draft
Widthdom wants to merge 6 commits into
Draft
Improve IL comparison normalization and report transparency#256Widthdom wants to merge 6 commits into
Widthdom wants to merge 6 commits into
Conversation
Widthdom
force-pushed
the
feature/robust-il-comparison
branch
8 times, most recently
from
August 15, 2026 17:25
676c52f to
c7e9ea1
Compare
Widthdom
force-pushed
the
feature/robust-il-comparison
branch
from
August 15, 2026 18:06
c7e9ea1 to
e8d20af
Compare
Widthdom
force-pushed
the
feature/robust-il-comparison
branch
from
August 16, 2026 00:25
e8d20af to
e042deb
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
ShouldIgnoreMVIDand reject obsolete configuration explicitly in normal, validation, print-config, and clear-cache pathsbuildserver-winformsprofile withcreator-default, whose defaults now use normalizationdotnet-ildasmandilspycmdbaselinesWhy
Disassembler output contains build-dependent values that can create false differences. Removing whole matching lines also hides meaningful content that happens to share those lines.
This change preserves the stable portions of IL while normalizing only known build-variant values: MVIDs, method RVAs, code sizes, and WinForms
AxHost.TypeLibraryTimeStampAttributepayloads. ILSpy's multiline timestamp form is collapsed through its closing delimiter, while malformed or unterminated input remains raw and comparable.Configured substring normalization remains separate from configured whole-line exclusion. Its replacement marker is selected per comparison so that it cannot collide with either raw IL input. The combined configured/profile list is limited to 256 entries of up to 4096 Unicode characters each. Across all configured rules, one line is limited to 65,536 non-overlapping replacements and 4,194,304 UTF-16 code units of normalized output; excess input fails before the expanded result is allocated.
Relationship diagnostics are bounded and configured values are rendered with safe, visible escapes in console, log, Markdown, and HTML output.
Breaking changes and migration
ShouldIgnoreMVIDhas been removed from the public configuration API. MVID values are always normalized. Supplying the former JSON key orFOLDERDIFF_SHOULDIGNOREMVIDenvironment variable now fails with an explicit migration error, including--clear-cache.buildserver-winformscreator profile name has been removed without an alias. Usecreator-default; the former name follows the normal invalid-profile path and exits with code2, including early command paths.Review and commit mapping
ce04dc2adds pinned, reproducible IL corpus data and applies .NET major-version roll-forward to tool probes and generation.d4d1ef0removesShouldIgnoreMVID, makes MVID handling unconditional, and rejects obsolete JSON/environment input consistently.bf85215generalizes IL-output terminology from MVID-specific exclusion to the shared filtering pipeline.8b975d4implements built-in and configured normalization, collision-free markers, resource bounds, safe diagnostics, and report transparency.4966a49replaces the removedbuildserver-winformsprofile name withcreator-defaultand applies invalid-profile handling before side-effecting early commands.e042debmigrates creator defaults from whole-line exclusion to substring normalization, applies profile values before configured values, and keeps AssemblyRef public-key-token changes visible.Changed areas
Common/,Models/,Runner/, andServices/FolderDiffIL4DotNet.Tests/CHANGELOG.md, guides, package documentation, configuration schema/sample, and committed Markdown/HTML report samplesThe PR contains 6 commits and changes 76 files.
Validation
main...HEAD: no actionable findings