-
Notifications
You must be signed in to change notification settings - Fork 4.2k
Open
3 / 63 of 6 issues completedDescription
Test plan for runtime-generated async state machines
Runtime open issues: dotnet/runtime#109632
Runtime specification: https://github.com/dotnet/runtime/blob/main/docs/design/specs/runtime-async.md
Compiler implementation plan: https://github.com/dotnet/roslyn/blob/main/docs/compilers/CSharp/Runtime%20Async%20Design.md
Included in .NET 10 (feature in preview)
- turning feature on (see
IsRuntimeAsyncEnabledIn)- presence of required
AsyncHelpersAPIs in corlib - honor
RuntimeAsyncMethodGenerationAttributeattribute for override - check presence of feature flag
runtime-async=on - check for return type
- presence of required
- codegen for async methods
- set method flag
MethodImplOptions.Async - calls optimized with
Await- selection of appropriate helper
- calls using
AwaitAwaiter/UnsafeAwaitAwaiter -
awaitincatch/finally -
await using -
await foreach - ref local lifting (Runtime async support for hoisting by-refs #79763)
- set method flag
- methods of validation
- direct IL verification
- verifier (caught some issues, although verification rules not yet updated to understand return value expectations: ILVerify support for runtime async runtime#118042)
- block unsupported scenarios for .NET 10 RC1
- disallow application of
MethodImplOptions.Asyncin source - public APIs
- IOperation (no impact)
- GetAwaitExpressionInfo
- consider removing or downgrading the "no await" warning (related issue) Remove CS1998 warning entirely and remove dependent C# code fix providers #80144
- analyzer work for
RequiresPreviewFeatures(honor attribute on helper APIs)
Post-.NET 10
- PDBs/symbols for debugging (Debug experience for runtime async #79793)
- sequence points
- instrumentation
- dynamic (Runtime async support for dynamic #79762)
- disallow directly calling
MethodImplOptions.Asyncmethods in some cases? - disallow directly calling
AsyncHelpershelper methods? - manual smoke testing of various scenarios (debugging, EE, EnC)
- execution (pending availability of new runtime, Verify runtime execution of runtime async tests #79791)
- ensure that every async test also covers runtime-async
- remove
RuntimeAsyncMethodGenerationAttributeandDOTNET_RuntimeAsynconce feature is stable - replace feature flag with a real switch and make the SDK set it by default
- use real
MethodImplOptions.Asyncflag (Use MethodImplAttributes.Async #79792) - partner validation (driven by runtime team)
- follow-up on public announcement
- codegen for async iterator methods (notes)
Async-iterators
- codegen
- debug info/symbols
- EnC
SystematicChaos012, slang25, Zagrthos, RenderMichael and stuartlang-jePoker-sang, slang25, Zagrthos, RenderMichael and stuartlang-jexoofx, Zagrthos, krafs, samsosa, RenderMichael and 1 more