Skip to content

Commit 256dd09

Browse files
Technologicatclaude
andcommitted
TODO_DEFERRED: what async support exists already, from the history
The typecheck async types (2026-03-12), the two constructs that refuse async on purpose, and GitHub #4, which is still open. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent 57a0b70 commit 256dd09

1 file changed

Lines changed: 16 additions & 6 deletions

File tree

‎TODO_DEFERRED.md‎

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,24 @@
44

55
## Async support
66

7-
*Cluster: async · Cost: ? · Gate: none · Filed: 2026-10-09 · See also: `mcpyrate`'s `TODO_DEFERRED.md`, "Async support: block macros on `async with`, decorator macros on `async def`"*
7+
*Cluster: async · Cost: ? · Gate: none · Filed: 2026-10-09 · See also: GitHub #4 (open, "Help wanted for testing async support"); `mcpyrate`'s `TODO_DEFERRED.md`, "Async support: block macros on `async with`, decorator macros on `async def`"*
88

99
Async is not supported much anywhere in the fleet (maintainer, 2026-10-09: there are places it would be
10-
useful), and `unpythonic` and `mcpyrate` are where adding it would be worth the most. Not yet surveyed here:
11-
`unpythonic.syntax` mentions async AST nodes in seven modules (`autocurry`, `letdo`, `tailtools`, `util`,
12-
`lambdatools`, `scopeanalyzer`, `lazify`), so some of its walkers know them, but which constructs work with
13-
`async def`, `await` and `async with`, at the macro layer and the runtime layer alike, is not known. Part of
14-
the macro layer depends on `mcpyrate` expanding macros on async constructs at all.
10+
useful), and `unpythonic` and `mcpyrate` are where adding it would be worth the most.
11+
12+
What exists, from the history:
13+
14+
- **`typecheck` knows the async types** (2026-03-12): `Awaitable`/`Coroutine`, `AsyncIterable`/`AsyncIterator`,
15+
`AsyncGenerator` and `AsyncContextManager` work in `isoftype`, and so in `@generic` dispatch.
16+
- **Two constructs refuse async, on purpose**: `with continuations` raises `SyntaxError` on `async def` or
17+
`await` inside its block (2021, citing #4), and multi-shot generators (2.2.0) document async as out of
18+
scope.
19+
- **`unpythonic.syntax` mentions async AST nodes in seven modules** (`autocurry`, `letdo`, `tailtools`,
20+
`util`, `lambdatools`, `scopeanalyzer`, `lazify`), so some walkers know them; what that amounts to per
21+
macro has not been surveyed.
22+
- `async_raise` is unrelated despite its name: it injects an exception into another thread.
23+
24+
Part of the macro layer depends on `mcpyrate` expanding macros on async constructs at all.
1525

1626
## Dispatch: indistinguishable parametric ABC multimethods (GitHub #99)
1727

0 commit comments

Comments
 (0)