Repository navigation
Support ILLink caching in runtime library builds - #135066
Merged
Merged
Conversation
|
Azure Pipelines: Successfully started running 4 pipeline(s). 12 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
Contributor
|
Tagging subscribers to this area: @agocke, @dotnet/illink |
sbomer
added this pull request to stack #135070
October 1, 2026 22:43
This was referenced Oct 2, 2026
Open
sbomer
force-pushed
the
sbomer/illink-runtime-cache
branch
from
October 2, 2026 17:27
61a24f9 to
f1916c4
Compare
sbomer
force-pushed
the
sbomer/illink-runtime-cache
branch
3 times, most recently
from
October 6, 2026 21:49
883ca84 to
253c1fd
Compare
sbomer
force-pushed
the
sbomer/illink-runtime-cache
branch
from
October 13, 2026 21:13
253c1fd to
896eb0b
Compare
This was referenced Oct 14, 2026
Closed
Use structured task parameters for runtime trimming and model the narrow extra-argument shapes needed by shared-framework, out-of-band, and per-library builds. Preserve custom argument precedence. Assisted-by: Copilot:gpt-6-astra Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 561d1c87-e14b-46f8-be7f-a08f544ec537
sbomer
force-pushed
the
sbomer/illink-runtime-cache
branch
from
October 14, 2026 17:01
896eb0b to
1182903
Compare
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Custom arguments can override previously enforced unresolved-reference and symbol policies, changing behavior even with caching disabled.
2 open findings
What changed in this PR
Extends opt-in ILLink caching to runtime library builds by modeling their inputs and reusing existing task parameters.
Changes:
- Supports narrow extra-argument forms and hashes XML files, assembly candidates, and sidecars.
- Migrates library-build options to task parameters.
- Adds cache-key tests and updates cache documentation.
Builds and tests were not run.
| File | Description |
|---|---|
| src/tools/illink/test/ILLink.Tasks.Tests/ILLink.Tasks.Tests.cs | Tests input invalidation and cache bypasses. |
| src/tools/illink/src/ILLink.Tasks/LinkTask.cs | Parses supported arguments and fingerprints inputs. |
| src/libraries/sfx-finish.proj | Uses the symbol-retention task parameter. |
| src/libraries/oob-trim.proj | Moves warning suppression to a task parameter. |
| eng/illink.targets | Makes per-library trimming eligible for caching. |
| docs/tools/illink/illink-tasks.md | Documents supported cache inputs. |
| docs/design/tools/illink/task-cache.md | Updates fingerprinting and bypass rules. |
🧠 Review effort: Balanced
This was referenced Oct 14, 2026
Update the lower stack layer before propagating main to the dependent CI cache PR. Assisted-by: Copilot:gpt-6.1-sol Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 561d1c87-e14b-46f8-be7f-a08f544ec537
jtschuster
approved these changes
Oct 19, 2026
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.

Make shared-framework, out-of-band, and per-library trimming invocations eligible for the experimental ILLink cache. Use existing task parameters where possible and support the narrow extra-argument forms needed for link attributes, substitutions, and assembly search directories. Fingerprint their inputs without changing assembly resolution or the precedence of custom arguments. Caching remains opt-in.
Linux x64 prototype measurements reduced warm-hit ILLink task time from 4,103 ms to 80 ms for CoreLib and from 1,036 ms to 63 ms for System.Collections. These are task-level measurements, not whole-build speedups.