Skip to content

feat(ASYNC-01): lower coroutines and Promise awaits - #32

Merged
ellainng merged 3 commits into
mainfrom
feat/ASYNC-01-await-contract
Oct 20, 2026
Merged

ellainng merged 3 commits into
mainfrom
feat/ASYNC-01-await-contract

Conversation

@ellainng

Copy link
Copy Markdown
Member

Add an explicitly enabled async compiler profile for lazy, single-use coroutines, await, adopted Promise resolution/rejection/chaining, synchronous callbacks, and source-located failures. Exports bridge to native Promises, while AbortSignal cancels a context and releases await listeners. Existing compiler profiles keep rejecting async syntax.

The contract records JavaScript microtask and CPython scheduling differences, bounded active async calls, cancellation side effects, worker transport requirements, and the separate browser-native Fetch adapter. Async iteration/streams, asyncio tasks and arbitrary thenables remain deferred.

Validation: 72 tests passed, including CPython/Node awaited-value and ordering parity, callback single invocation/errors, shared-module async values, coroutine reuse, cancellation races/listener cleanup, recursion limits and rejected forms. Built wheel/source artifacts include the async contract and tests.

Closes #10.

@ellainng
ellainng changed the base branch from feat/MOD-01-local-imports to main October 20, 2026 18:41
@ellainng
ellainng merged commit e0adb31 into main Oct 20, 2026
3 checks passed
@ellainng
ellainng deleted the feat/ASYNC-01-await-contract branch October 20, 2026 18:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ASYNC-01: Define Promise scheduling and browser async semantics

1 participant