wasm-gui: a WebAssembly Linux desktop (M1–M6) rendered by the native Rust client#104
Open
NathanFlurry wants to merge 655 commits into
Open
wasm-gui: a WebAssembly Linux desktop (M1–M6) rendered by the native Rust client#104NathanFlurry wants to merge 655 commits into
NathanFlurry wants to merge 655 commits into
Conversation
|
🚅 Environment secure-exec-pr-104 in rivet-frontend has no services deployed. |
89726df to
172f709
Compare
…t (Phase 1) - SX_SERIAL_LAUNCH=1 boots the Xfce clients strictly one at a time (each gated on becoming active then settling for SX_SERIAL_SETTLE_MS, default 12s, with a per-app timeout safety cap), removing the concurrent-boot CPU/thread oversubscription that flakily blanked the desktop. - Measured: 5/5 FULL renders (95-99.9% coverage), ~61s, zero total-black, vs ~1/3 concurrent. Confirms concurrency as the flaky-black root; determinism (Phase 1) achieved. See DESKTOP-BOOT-PERF.md.
…r (per-app init dominates); real levers = cap concurrent compile / batch launch / trim dbus sleeps
…t 94% idle (1.17/20 cores); serialized not blocked; concurrency is the speed win, compile-burst is the flakiness
6636753 to
7a09801
Compare
… + PARALLEL-SERVICING completion plan
…sure-boot harness (RECV_OFFBROKER, RPC_BLOCK_US, DEADLINE_PROBE, POLLWAITPROF, POLL_TRACE, HOPPROF, RPC_PROFILE, TEE_GUEST_STDERR, SX_SERIAL_SETTLE_MS, SX_READY_GATE, POLL_MAX_WAIT_MS, INLINE_SOCKET_DATA)
…were launched twice (second dbusd collides on the bound socket); unblocks the concurrent launch-gate livelock (all 5 xclients launch vs 1)
…lkit (rpc-block threshold, deadline-probe, guest-stderr tee) + inline net.write scaffold (gated OFF, refuted)
7a09801 to
ef9f96c
Compare
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.
Experiment under
experiments/wasm-gui/: a graphical Linux desktop built by cross-compiling real, standard X11 software towasm32-wasip1with our own toolchain and running it inside the real secure-exec V8 sidecar, rendered by a native Rust app oncrates/secure-exec-client(per SPEC §1a: no wasmer / node:wasi / TS client /Command::newin the execute+render path).What works (all wasm guests in one VM, over host_net AF_UNIX)
test-m4b.sh,test-m5-multiclient.sh,test-m5-twm.sh.test-m6-desktop.sh. Proof:~/tmp/gui-progress/m6-desktop-robust.png.test-m6-input.sh.Core sidecar fixes (benefit all of secure-exec)
net.pollblocked the single service thread up to 50ms, starving other guests; lowered to 3ms so it round-robins.limits.resources.maxWasmFuel.Notes
third_party/,scripts/).winitwindow blit needs a machine with a display to verify (the dev box is headless); the input delivery path is verified headlessly via XTEST.experiments/wasm-gui/SPEC.md.