dotnet / dotnet/android

[TrimmableTypeMap] Support pre-generated framework typemaps in the aggregate + array-maps case (Debug NativeAOT)

Open
#12,128 0 comments 0 reactions 0 assignees View on GitHub
needs-triage
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.