-
Notifications
You must be signed in to change notification settings - Fork 311
Comparing changes
Open a pull request
base repository: IronLanguages/ironpython3
base: main
head repository: StockSharp/ironpython3
compare: main
- 9 commits
- 31 files changed
- 1 contributor
Commits on Feb 24, 2026
-
Implement PEP 492: async/await support
- Tokenizer/Parser: async def, async for, async with, await keywords - AST nodes: AwaitExpression, AsyncForStatement, AsyncWithStatement - Runtime: PythonCoroutine, CoroutineWrapper types - Code generation: coroutines reuse generator state machine via yield from desugaring (await → yield from expr.__await__()) - Fix GeneratorRewriter VisitExtension to reduce one level at a time, preventing "must be reducible node" with DebugInfoRemovalExpression Verified against CPython 3.14: 20/20 comparison tests identical.
Configuration menu - View commit details
-
Copy full SHA for 09f335b - Browse repository at this point
Copy the full SHA 09f335bView commit details -
Add tests for PEP 492 async/await
23 tests covering async def, await, async with, async for, coroutine properties, __await__ protocol, custom awaitables, break/continue/else, nested loops, and combined patterns.
Configuration menu - View commit details
-
Copy full SHA for a82d993 - Browse repository at this point
Copy the full SHA a82d993View commit details -
Configuration menu - View commit details
-
Copy full SHA for 826dfeb - Browse repository at this point
Copy the full SHA 826dfebView commit details -
Implement .NET async interop: await Task/ValueTask, async for IAsyncE…
…numerable, CancelledError - Add TaskAwaitable/ValueTaskAwaitable wrappers enabling `await` on Task, Task<T>, ValueTask and ValueTask<T> from Python async code - Add AsyncEnumerableWrapper enabling `async for` over IAsyncEnumerable<T> - Map OperationCanceledException to new CancelledError Python exception - Add __await__, __aiter__, __anext__ resolvers in PythonTypeInfo - Add bridge methods in InstanceOps for the resolver pattern - ValueTask/IAsyncEnumerable support gated behind #if NET (requires .NET Core) - Handle Task<VoidTaskResult> (internal type arg) by falling back to non-generic TaskAwaitable via IsVisible check
Configuration menu - View commit details
-
Copy full SHA for a1c1605 - Browse repository at this point
Copy the full SHA a1c1605View commit details -
Regenerate code to fix test_cgcheck failures
- Add 'await' keyword to generate_ops.py kwlist - Add CancelledError factory-only exception to generate_exceptions.py - Regenerate TokenKind, Tokenizer, PythonWalker, PythonNameBinder - Fix CancelledError placement in ToPythonHelper to match generator order
Configuration menu - View commit details
-
Copy full SHA for 04b48e5 - Browse repository at this point
Copy the full SHA 04b48e5View commit details -
Fix test_pep352 and test_attrinjector regressions
Add CancelledError to exception_hierarchy.txt so test_pep352 test_inheritance accounts for the new builtin exception. Isolate test_async in a separate process to prevent it from loading IronPythonTest assembly which causes duplicate SpecialName GetBoundMember on XmlElement in test_attrinjector.
Configuration menu - View commit details
-
Copy full SHA for 5a09b4d - Browse repository at this point
Copy the full SHA 5a09b4dView commit details
Commits on Feb 25, 2026
-
Fix AwaitResolver for real async Task<T> subtypes
The runtime type of async Task<T> is often a subclass like AsyncStateMachineBox<TResult, TStateMachine>, not Task<T> itself. Walk up the BaseType chain to find Task<T> so that await on real async .NET operations (e.g. HttpClient.GetStringAsync) correctly returns the result instead of None.
Configuration menu - View commit details
-
Copy full SHA for f47c54d - Browse repository at this point
Copy the full SHA f47c54dView commit details
Commits on Feb 27, 2026
-
Non-blocking await for .NET Task in Python async coroutines
Instead of blocking the thread with GetAwaiter().GetResult(), TaskAwaitable.__next__ now yields the Task back to the runner when it's not yet completed. The runner can then wait on the Task and resume the coroutine, enabling true concurrency between coroutines.
Configuration menu - View commit details
-
Copy full SHA for 3998f8a - Browse repository at this point
Copy the full SHA 3998f8aView commit details -
Add PythonCoroutine.AsTask() and GetAwaiter() for C# async interop
Allows C# code to directly await IronPython coroutines: object result = await coroutine;
Configuration menu - View commit details
-
Copy full SHA for dfcace5 - Browse repository at this point
Copy the full SHA dfcace5View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff main...main