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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    .NETPull requests that update .net codeTask

    Projects

    • Status
      No status

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions