[TrimmableTypeMap] Support pre-generated framework typemaps in the aggregate + array-maps case (Debug NativeAOT)
- Dominant language
- C#
- Stars
- 2.1k
- Forks
- 579
- Avg merge
- 1d 19h
- Merged PRs (30d)
- 252
Description
Follow-up to #10792 / PR #12127.
Pre-generated framework typemaps (Mono.Android + Java.Interop, anchored on the `Java.Lang.Object` universe) are consumed correctly in:
- the single/shared universe (Release NativeAOT), and
- the aggregate/per-assembly universe **without** array maps (`maxArrayRank == 0`, e.g. CoreCLR Debug).
The remaining combination — **aggregate universe + array maps** (`maxArrayRank > 0`, i.e. Debug NativeAOT) — is not yet wired: `RootTypeMapAssemblyGenerator.EmitInitializeWithAggregateTypeMap` would need to add the `Java.Lang.Object` framework universe (and its per-rank `__ArrayMapRank{N}` array maps) as an extra element alongside the app's per-assembly universes.
Until then, the app build gracefully falls back to scanning Mono.Android/Java.Interop normally for that combination (no speedup, but correct).
Contributor guide
No contributing guide indexed for this repository
Research direction
Start in RootTypeMapAssemblyGenerator.EmitInitializeWithAggregateTypeMap and compare the existing aggregate-universe handling with the single/shared-universe path and the maxArrayRank == 0 case. The change is complete when the Java.Lang.Object framework universe and each __ArrayMapRank{N} map are included for aggregate universes with array maps, while preserving the existing fallback behavior until then.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- build-system, tooling
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100