Repository navigation
Support WASI TCP, UDP and DNS with bounded cancellable resources - #484
Merged
Merged
Conversation
ymote
marked this pull request as ready for review
October 11, 2026 06:30
ymote
force-pushed
the
feat/wasi-sockets
branch
from
October 11, 2026 07:06
29f63d6 to
f576666
Compare
Contributor
Author
|
Local CI passed on f576666 ( GitHub would run for this PR: desktop.yml, phone.yml, apps.yml. Merged on this local pass (macOS runner queue); GitHub CI runs on the merge commit on main.
Notes:
Native GitHub acceptance passed on the same head: embedded-browser.yml. |
ymote
added a commit
that referenced
this pull request
Oct 11, 2026
…ew's fixes ui.py's shell, restart, full and empty runs, in a hidden desktop shell with the real pdf engine, at the window's own size (an app area of 1292 x 662), light and dark, just after midnight on 11 Oct; and the fixture run in card-host at the designs' 1536 x 1024. The frames replace the first round's: - Read mode, entered on page 2 and left on page 3 at 125%, by the bar's Exit read mode (light) and by the corner control (dark). - Find from the top bar alone: the rail is Pages, Outline and Comments. Done gives the Comments panel back; the results' own cross folds the left side again. - Remove deletes a PDF's kept cover after a restart. - Comment dates read "Today 00:34" at 07:34 UTC. - Storage, covers, Combine's footer and Edit's Alignment and Colour, as before. The four runs used --budget-ms 1000. At the runtime's 64 ms, two attempts passed every functional step of the shell journey, light and dark, and then failed the log check on script budget overruns. Each overrun came with a UI-thread stall in a pdf service file rename: 555 ms in pdf.save, then 262 ms in the render cache. App Hub runs host services inline on the UI thread (#399), and this branch doesn't change those paths. The load average was 54 to 74 then. run-64ms/ keeps the third attempt's logs and the lines read from the second's before the third overwrote it. The README and receipt record this, and the first 1000 ms run, which lost a tap on Combine's Add files. The runs were made on 12e0e4cb, on main 07b63da. The branch was then rebased onto main bcd52cf, which brought in #484 alone (App Hub's pin moved from d86101d7 to c317f787). The runs were not repeated on it; setup.py --check --cargo, native_apps.py --check and the pdf service's tests pass on it. The app README's Verified and Known entries say the same, in English and Chinese. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ymote
added a commit
that referenced
this pull request
Oct 11, 2026
…ew's fixes ui.py's shell, restart, full and empty runs, in a hidden desktop shell with the real pdf engine, at the window's own size (an app area of 1292 x 662), light and dark, just after midnight on 11 Oct; and the fixture run in card-host at the designs' 1536 x 1024. The frames replace the first round's: - Read mode, entered on page 2 and left on page 3 at 125%, by the bar's Exit read mode (light) and by the corner control (dark). - Find from the top bar alone: the rail is Pages, Outline and Comments. Done gives the Comments panel back; the results' own cross folds the left side again. - Remove deletes a PDF's kept cover after a restart. - Comment dates read "Today 00:34" at 07:34 UTC. - Storage, covers, Combine's footer and Edit's Alignment and Colour, as before. The four runs used --budget-ms 1000. At the runtime's 64 ms, two attempts passed every functional step of the shell journey, light and dark, and then failed the log check on script budget overruns. Each overrun came with a UI-thread stall in a pdf service file rename: 555 ms in pdf.save, then 262 ms in the render cache. App Hub runs host services inline on the UI thread (#399), and this branch doesn't change those paths. The load average was 54 to 74 then. run-64ms/ keeps the third attempt's logs and the lines read from the second's before the third overwrote it. The README and receipt record this, and the first 1000 ms run, which lost a tap on Combine's Add files. The runs were made on 12e0e4cb, on main 07b63da. The branch was then rebased onto main bcd52cf, which brought in #484 alone (App Hub's pin moved from d86101d7 to c317f787). The runs were not repeated on it; setup.py --check --cargo, native_apps.py --check and the pdf service's tests pass on it. The app README's Verified and Known entries say the same, in English and Chinese. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ymote
added a commit
that referenced
this pull request
Oct 11, 2026
…ew's fixes ui.py's shell, restart, full and empty runs, in a hidden desktop shell with the real pdf engine, at the window's own size (an app area of 1292 x 662), light and dark, just after midnight on 11 Oct; and the fixture run in card-host at the designs' 1536 x 1024. The frames replace the first round's: - Read mode, entered on page 2 and left on page 3 at 125%, by the bar's Exit read mode (light) and by the corner control (dark). - Find from the top bar alone: the rail is Pages, Outline and Comments. Done gives the Comments panel back; the results' own cross folds the left side again. - Remove deletes a PDF's kept cover after a restart. - Comment dates read "Today 00:34" at 07:34 UTC. - Storage, covers, Combine's footer and Edit's Alignment and Colour, as before. The four runs used --budget-ms 1000. At the runtime's 64 ms, two attempts passed every functional step of the shell journey, light and dark, and then failed the log check on script budget overruns. Each overrun came with a UI-thread stall in a pdf service file rename: 555 ms in pdf.save, then 262 ms in the render cache. App Hub runs host services inline on the UI thread (#399), and this branch doesn't change those paths. The load average was 54 to 74 then. run-64ms/ keeps the third attempt's logs and the lines read from the second's before the third overwrote it. The README and receipt record this, and the first 1000 ms run, which lost a tap on Combine's Add files. The runs were made on 12e0e4cb, on main 07b63da. The branch was then rebased onto main bcd52cf, which brought in #484 alone (App Hub's pin moved from d86101d7 to c317f787). The runs were not repeated on it; setup.py --check --cargo, native_apps.py --check and the pdf service's tests pass on it. The app README's Verified and Known entries say the same, in English and Chinese. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Apps built for
wasm32-wasip2could use HTTP but ordinarystd::netTCP, UDP and DNS imports were refused. This adds those standard WASI interfaces and advertiseswasm.sockets@1, so compatible apps can install while RC5 remains able to read the catalog and marks them unavailable.The runtime shares 32 socket/DNS handles across an app's components, caps each component's host resource table at 512 entries, and bounds native DNS work to eight concurrent resolvers with no queue. Blocking waits and stream destruction observe cancellation/deadlines; native DNS retains its permit until the OS resolver actually finishes. The shell releases workers when their last owning isolate closes and propagates cancellation through component host-service calls.
Network declarations remain disclosures. This does not add privileged raw IP sockets or remove storage, account, OS consent or reviewed-write boundaries. English/Chinese guides and ADR 0014 describe the new boundary and the unreleased/RC5 distinction.
Dependencies and developer tooling:
c317f787: admission/availability and request-generation isolation after close/reopen.connectexport collision.Validation on host head
29f63d66ffeb87cfef952c85f18c9a97abe89597:cargo test -p octosense-wasm-host), including actual Wasm TCP/UDP/DNS, listener/accept, per-app limits, cancellation, stream cleanup and native resolver saturation.cargo test --locked -p octosense-shell --no-default-features --features app-hub,wasm-functions wasm_service::tests). Cold-host compatibility discovery: 1 passed from the same built test executable.mobile-appscheck and desktop/Home packaging check passed (cargo check --locked -p octosense -p octosense-home --features mobile-apps).Android evidence is from a standalone test runner through ADB, not an installed Home APK or its UID network policy/UI. No published release, public catalog, installed Home, account or user profile was changed. SDK #187's exact final head has all six CI checks green; this PR and App Hub #209 retain their own CI/review requirements before merge.