Consolidate threading APIs and add WebAssembly async fallbacks - #3
Draft
kudit wants to merge 1 commit into
Draft
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Scope
This draft PR is intentionally separate from the TestCase/Swift Testing PR.
It begins the threading API consolidation by adding:
Compatibility.mainoverload for places currently usingMainActor.run;Compatibility.backgroundfallbacks for full-runtime WebAssembly;sleep(seconds:)spelling while retaining the existing synchronous compatibility call for review and deprecation planning;Task.backgroundandTask.sleep(seconds:)wrappers on WebAssembly.Important design distinctions
main { }API remains fire-and-forget. The newawait Compatibility.main { }overload waits for completion and can return a value.asyncsyntax in the full runtime, but a generic host does not guarantee detached threads, Dispatch, or a suspending timer. The background fallback is therefore cooperative, and sleep currently warns and returns immediately until a host timer is supplied.rethrowsimplementation when threaded hosts awaitTask.detached(...).value.Resultmay itself be optional.Follow-up work within this draft
During review, consolidate the existing duplicate implementations in
Threading.swift, deprecate obsolete spellings where source compatibility warrants it, and simplifyApplication.trackto use the shared wrappers without a broadarch(wasm32)call-site branch.Validation required
This is a draft because the final overload set must be compiled on Apple, Linux, and WebAssembly targets before merge.