Repository navigation
Upstream change detected: dotnet/android .github/skills/read-assembly-store/src/AssemblyStore @ 8f7c4d4 #5604
Description
Activity
- addedupstream-watchUpstream vendored code has changed — review requiredUpstream vendored code has changed — review required
on Sep 21, 2026 - added.NETPull requests that update .net codePull requests that update .net code
on Sep 21, 2026 - linked a pull request that will close this issueref: Record that Android assembly store v4 never shipped #5609
on Sep 22, 2026 Reviewed. The commit is
8f7c4d4, "[CoreCLR] Remove assembly store decompression cache" (dotnet/android#12780). It affects us, and in our favour.Upstream remeasured the opt-in decompression cache and found it made startup worse (+162 ms TTID, +179 ms TTFD), so they removed it — and with it the
content_idheader field it needed, restoring assembly store format version 3 for both CoreCLR and MonoVM. Verified ondotnet/androidmain:AssemblyStoreGenerator.csemitsASSEMBLY_STORE_FORMAT_VERSION_CORECLR_64BIT = 0x80000003StoreReader_V2.Classes.cshas nocontent_id;Header.NativeSizeis a flat5 * sizeof(uint)constStoreReader_V2.csno longer lists the_V4 | ABIversions, and has droppedASSEMBLY_STORE_FORMAT_NUMBER_MASK
mainis the .NET 11 branch — there is norelease/11.0.1xx, andeng/Versions.propscarriesAndroidPackVersion 37.2.0with suffixrc.2. The revert (2026-09-15) predates rc.2, whileversion7pins11.0.100-rc.1/ workload11.0.100-rc.1.26458.5(2026-09-08), the last build that emitted v4. So v4 never shipped, and .NET 11 GA will emit v3.Nothing needs porting into the vendored reader — our v4 support is a superset that reads v3 correctly. What did come out of the review:
- ref: Record that Android assembly store v4 never shipped #5609 corrects the vendored file headers and
ATTRIBUTION.txt, which claimed v4 "ships in .NET 11", and adds synthetic-store coverage for v3 / 64-bit ABI / 32-bit CRC hash — the shape .NET 11 GA will actually produce, which had none. - ref: Remove Android assembly store v4 support (never shipped) #5608 tracks removing the v4 code outright, once
global.jsonmoves off11.0.100-rc.1.version7is meant to be ready for GA, not to carry prerelease formats.
Worth recording for the stack: #5577 becomes load-bearing rather than redundant. With v4 gone, the index entry size is the only thing distinguishing a CoreCLR store from a MonoVM one — CoreCLR still writes 32-bit CRC32 name hashes on every ABI, so a .NET 11 GA arm64 store is v3, 64-bit ABI, 9-byte index entries. The pre-#5577 reader picks the hash width off the ABI bit and would read 8 bytes where there are 4. #5575's Zstandard support is unaffected; the revert removed the decompression cache, not Zstd compression.
Closing — the follow-up work is tracked in #5608.
Upstream Change Detected
The code at
dotnet/android/.github/skills/read-assembly-store/src/AssemblyStorehas a new commit since our last review.8f7c4d4Our vendored copy lives in
src/Sentry.Android.AssemblyReader/. We modified the upstream code significantly,so a direct merge is unlikely to be appropriate — but the commit above may reveal logic
changes worth porting.
What to do