Skip to content

ref: Remove Android assembly store v4 support (never shipped) #5608

Description

@jamescrosswell

The assembly store v4 format never shipped. It existed only in .NET 11 previews/RC and was reverted to v3 before GA by dotnet/android#12780 (8f7c4d4, 2026-09-15), which removed the opt-in decompression cache after remeasurement showed it cost ~162 ms of startup rather than saving it. The cache was the only thing v4's extra content_id header field existed for.

Confirmed on dotnet/android main (which is the .NET 11 branch — there is no release/11.0.1xx, and eng/Versions.props has AndroidPackVersion 37.2.0, suffix rc.2):

  • AssemblyStoreGenerator.cs emits ASSEMBLY_STORE_FORMAT_VERSION_CORECLR_64BIT = 0x80000003
  • StoreReader_V2.Classes.cs has no content_id; Header.NativeSize is a flat 5 * sizeof(uint) const
  • StoreReader_V2.cs no longer lists the _V4 | ABI versions and has dropped ASSEMBLY_STORE_FORMAT_NUMBER_MASK

CoreCLR still writes 32-bit CRC32 name hashes on every ABI, so .NET 11 GA stores are v3, 64-bit ABI, 9-byte index entries — handled by the index-entry sizing in #5577, independently of the format version.

version7 is meant to be ready for .NET 11 GA, not to carry support for prerelease formats. Once global.json moves off 11.0.100-rc.1, the v4 code is dead weight.

Scope

In src/Sentry.Android.AssemblyReader/V2/:

  • StoreReader.cs — drop ASSEMBLY_STORE_FORMAT_VERSION_CORECLR_64BIT_V4 / ..._32BIT_V4, their four supportedVersions entries, ASSEMBLY_STORE_FORMAT_NUMBER_MASK, and the conditional content_id read in IsSupported()
  • StoreReader.Classes.cs — drop Header.content_id and make NativeSize a const again, matching upstream
  • ATTRIBUTION.txt and the file header comments — drop the v4 sync points

In test/Sentry.Android.AssemblyReader.Tests/StoreReaderTests.cs:

  • Drop the three v4 Create_SupportedVersion_ReadsStore cases; the v3 CoreCLR (32-bit hash) and MonoVM (64-bit hash) cases already cover both index layouts
  • Create_InvalidIndexSize_Throws builds its fixture with a 0x80000004 header — move it onto v3
  • Add 0x80000004u | ABI to Create_UnsupportedVersion_ReturnsNull

Prerequisites

Do this after the global.json SDK/workload pin moves from 11.0.100-rc.1 to rc.2 or GA, so the net11.0 APK tests are exercising real v3 stores when v4 support is removed. Removing it before that bump would break the tests re-enabled by #5577.

Depends on #5577.

Metadata

Metadata

Assignees

No one assigned

    Labels

    .NETPull requests that update .net codeNext MajorChanges scheduled for the next Major release.Task

    Projects

    • Status
      No status

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions