Description
This epic tracks all work items across .NET 10 and Native AOT, related to supporting CsWinRT. We're currently working on a new version (see CsWinRT/fhl/cswinrt-3.0) that will be built on top of .NET 10, and designed with trim/AOT as a first class citizen. We're also taking the opportunity to fix a number of known issues (both in terms of perf, binary size, memory use, and usability) that have accumulated in CsWinRT over time. Some of them would require new APIs or changes in .NET (and/or Native AOT), which are all linked here, so it's easier to see all of them at once. We're planning on adopting .NET 10 and CsWinRT 3.0 in the Microsoft Store, as well as in other inbox apps and Windows components.
Note
I'm listing both supporting work for CsWinRT 3.0, as well as general asks from the WinRT side in general (eg. PGO).
Runtime support
- [API Proposal]:
UnsafeAccessorTypeAttribute
for static or private type access #90081 - Interop Type Mapping #110691
ComWrappers
and COM generator APIs
- [API Proposal]: Allow the user to provide state for a ComWrappers.GetOrCreateObjectForComInstance operation #113622
- [API Proposal]: 'ComWrappers' methods to get runtime-provided 'IUnknown' CCW vtable entries #114133
- Proposal: allow exception marshallers via '[return: MarshalUsing]' on generated COM interfaces methods without '[PreserveSig]' #109522
- 'ComWrappers.ReleaseObjects' also passes aggregated objects #114043
- Update '[GeneratedComInterface]' to emit ILC-friendly vtables for RVA folding #114468
Native AOT
- Support precompiling CCW vtables in ILC cctor interpreter (Native AOT) #114024
- Support precompiling 'ComInterfaceEntry' vtables in ILC cctor interpreter (Native AOT) #114355
- Support precompiling 'ComInterfaceEntry.IID' fields from RVA span fields in ILC cctor interpreter (Native AOT) #114455
- Support folding feature switch conditions in ILC cctor interpreter (Native AOT) #114499
- Support precompiling fast string -> string switches #115371
- Support precompiling fast type switches in ILC cctor interpreter (Native AOT) #115323
- Proposal: expose 'IlcDehydrate' as a supported option #112927
- ILC fails to detect and trim some dependency cycles (interface -> attribute -> [DAM] -> type impl -> new()) #112029
- Native AOT: Re-order method bodies using PGO data #114093
Projections
Collections (nice to have)
- Make mutable generic collection interfaces implement read-only collection interfaces #31001
- Collection<T> and ObservableCollection<T> do not support ranges #18087
Misc (nice to have)
- [API Proposal]: extend 'Attribute' model for feature APIs for custom feature switches #112969
- [API Proposal]: ConditionalWeakTable<TKey,TValue>.GetOrAdd #89002
- [API Proposal]: ConditionalWeakTable<TKey,TValue>.Remove overload #111925
- [API Proposal]: change 'Unsafe.AsPointer' parameter to be 'ref readonly' #114189
- [GeneratedComInterface] in CCW-only mode produces CA2256 warning #90922
- [API Proposal]: 'ConcurrentDictionary<TKey, TValue>.AlternateLookup<TAlternateKey>.GetOrAdd' overloads #112974
Bugs (CoreCLR/AOT)
Metadata
Metadata
Assignees
Labels
Type
Projects
Status