Skip to content

[TrimmableTypeMap] Stabilize CoreCLR Mono.Android.NET-Tests lane#11091

Draft
simonrozsival wants to merge 6 commits intodev/simonrozsival/root-manifest-referenced-typesfrom
dev/simonrozsival/trimmable-test-plumbing
Draft

[TrimmableTypeMap] Stabilize CoreCLR Mono.Android.NET-Tests lane#11091
simonrozsival wants to merge 6 commits intodev/simonrozsival/root-manifest-referenced-typesfrom
dev/simonrozsival/trimmable-test-plumbing

Conversation

@simonrozsival
Copy link
Copy Markdown
Member

@simonrozsival simonrozsival commented Apr 8, 2026

Summary

  • run Mono.Android.NET-Tests with _AndroidTypeMapImplementation=trimmable and UseMonoRuntime=false on CoreCLR
  • add/update the dedicated CoreCLRTrimmable lane coverage for this scenario
  • fix the main runtime/build blockers so the test app builds, installs, starts, and completes instrumentation successfully
  • keep the remaining gaps explicit via temporary exclusions for unsupported or separately tracked buckets

Main fixes in this PR

  • build/target ordering and incremental invalidation when switching between llvm-ir and trimmable
  • trimmable runtime bootstrap hardening for typemap lookup, proxy resolution, and registerNatives() hookup
  • open-generic proxy emission fixes in the trimmable typemap generator
  • JNIEnv.NewObjectArray<Type>() / non-IJavaPeerable fallback to java/lang/Object
  • NUnitInstrumentation updates for the current temporary exclusions

Current validation state

The local device lane now finishes green with the current exclusions:

passed=769
skipped=6
failed=0
run=775

Temporary exclusions / follow-up work

The remaining excluded buckets are intentional and should be handled in follow-up work (tracked separately, e.g. #11099):

  • Export
  • GCBridge / DoNotLeakWeakReferences
  • Java.Interop helper/proxy scenarios such as JavaPeerableExtensionsTests.JavaAs*
  • existing NativeTypeMap, SSL, TrimmableIgnore, and CoreCLRIgnore buckets that still need parity work

Local usage

./dotnet-local.sh build -t:RunTestApp tests/Mono.Android-Tests/Mono.Android-Tests/Mono.Android.NET-Tests.csproj \
  -p:_AndroidTypeMapImplementation=trimmable \
  -p:UseMonoRuntime=false

@simonrozsival simonrozsival force-pushed the dev/simonrozsival/trimmable-test-plumbing branch from f8106b0 to a437455 Compare April 9, 2026 09:19
@simonrozsival simonrozsival added trimmable-type-map copilot `copilot-cli` or other AIs were used to author this labels Apr 9, 2026
@simonrozsival simonrozsival force-pushed the dev/simonrozsival/trimmable-runtime-fixes branch from d5aefaa to 3a8d509 Compare April 10, 2026 09:49
Base automatically changed from dev/simonrozsival/trimmable-runtime-fixes to main April 10, 2026 22:50
@simonrozsival simonrozsival force-pushed the dev/simonrozsival/trimmable-test-plumbing branch 2 times, most recently from 1814a6d to d0e30f6 Compare April 11, 2026 09:42
@simonrozsival simonrozsival changed the title [TrimmableTypeMap] Test plumbing and CI lane for Mono.Android.NET-Tests [TrimmableTypeMap] Stabilize CoreCLR Mono.Android.NET-Tests lane Apr 11, 2026
simonrozsival and others added 6 commits April 12, 2026 01:19
- Fix CRC64 algorithm (Jones instead of System.IO.Hashing)
- Fix inherited override detection (walk past DoNotGenerateAcw bases)
- Fix instrumentation targetPackage
- JCW lazy registerNatives for App/Instrumentation types
- Sanitize backtick in proxy names
- Manifest name promotion and deferred registration propagation
- Build targets and task updates
- Typed logger interface
- Unit test coverage

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use _AndroidTypeMapImplementation=trimmable directly instead of a
MonoAndroidTypeMapFlavor wrapper property. This is consistent with
the actual build system property used by the typemap targets.

- _AndroidTypeMapImplementation=trimmable in CI yaml and test csproj
- UseMonoRuntime=false set when _AndroidTypeMapImplementation=trimmable
- TestsFlavor=CoreCLRTrimmable for result file naming
- ExcludeCategories: NativeTypeMap, TrimmableIgnore, SSL
- ExcludedTestNames for Java.Interop-Tests JavaObject-based fixtures

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@simonrozsival simonrozsival force-pushed the dev/simonrozsival/trimmable-test-plumbing branch from 17b123b to e2c70fd Compare April 11, 2026 23:28
@simonrozsival simonrozsival changed the base branch from main to dev/simonrozsival/root-manifest-referenced-types April 11, 2026 23:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

copilot `copilot-cli` or other AIs were used to author this trimmable-type-map

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant