The Wire · Showcase
MACIOS STRIPS FRAMEWORK BLOAT, RUNTIME HARDENS SIMD TYPE CHECKING
By RepoJournal · Filed · About .NET
Apple binding builds get leaner with automatic framework header stripping, while the runtime tightens SIMD intrinsic validation to prevent misclassification of new non-SIMD types.
The macios team landed three high-impact msbuild changes that reduce app bundle size and build overhead. Framework metadata stripping now runs by default, removing Headers, PrivateHeaders, and Modules directories before code signing with a StripFrameworkHeaders=false escape hatch [1]. A separate fix eliminates a redundant remote round trip during framework filtering by resolving identities upfront in FilterStaticFrameworks [2]. Hot Reload compatibility got explicit protection too: the dotnet-linker now gates Dlfcn inlining on a HotReloadCompatibleBuild property so reloadable assemblies stay unmolested [3]. Over in runtime, a follow-up to SIMD intrinsic handling switched from a deny-all approach (carving out decimal types) to an explicit allow list in getTypeLayout, preventing future non-SIMD intrinsics from being misrouted as opaque SIMD nodes [4]. MemoryCache contention got hammered: a single fix drove win-arm64 performance up 6x on a 1P workload [5]. Android's dotnet run now handles instrumentation-only apps without activities, opening the door to BenchmarkDotNet hosts and headless on-device harnesses [6]. F# official builds are whole again after Arcade 11 ripped out the SDL post-build scripts; PoliCheck exclusions migrated to the 1ES sdl: block [7].
One email a day. Unsubscribe in one click.
Keep up with .NET in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
One email a day. Unsubscribe in one click. Read a past issue →
Action items
- → Review StripFrameworkHeaders default in your macios builds; set to false only if your app relies on bundled framework headers dotnet/macios [plan]
- → Test instrumentation-only Android apps with dotnet run if you ship on-device benchmarks or test harnesses dotnet/android [monitor]
- → Verify F# official build pipelines completed successfully post-Arcade 11; confirm SDL validation in 1ES templates dotnet/fsharp [immediate]
References
- [1] [msbuild] Strip framework metadata by default. Fixes #15724 (#26253) dotnet/macios
- [2] [msbuild] Return full paths from FilterStaticFrameworks. Fixes #19602 (#26244) dotnet/macios
- [3] [dotnet-linker] Skip inlining Dlfcn in reloadable assemblies. Fixes #26075 ↗ dotnet/macios
- [4] Use an explicit allow list for SIMD types in getTypeLayout ↗ dotnet/runtime
- [5] Improve MemoryCache performance under high contention ↗ dotnet/runtime
- [6] [Xamarin.Android.Build.Tasks] instrumentation-only apps + `dotnet run` ↗ dotnet/android
- [7] Move SDL/TSA validation to 1ES templates after Arcade 11 upgrade (#20096) dotnet/fsharp