You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Web Machine 러너를 무자산, WASI, v86 레인으로 명시적으로 나눴다.
Ubuntu 소비 job은 WASI 자산을 준비하고 Windows Edge는 무자산 계약만 실행한다.
WASI 브라우저 페이지에 공통 RuntimeContract와 capability 검사 네 개를 추가했다.
기존 13개 하한을 낮추지 않고 실제 공개 계약으로 채워 검사 사각지대를 닫았다.
검증: npm test 3154/3154, WASI 14/14, Web Machine 7/7과 8/8 통과.
Copy file name to clipboardExpand all lines: docs/consuming/capabilityMatrix.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -58,7 +58,7 @@ A runnable surface is an example a person opens, a browser gate, a probe, or a t
58
58
| Immortal Python Machine | Many tabs share one Python state, and execution continues from the last commit even after the leader tab is force-killed and after every tab closes | `open({ persistent })` (formerly `openPersistentMachine`) -> a `KernelElection` handle; the journal is the durable verb set on `machine.history` (`MachineJournal`) | Experimental | Web Locks, BroadcastChannel, OPFS, and the same origin. Using the SAB-based OS capabilities on top also needs `crossOriginIsolated` and JSPI | [immortal demo](../../examples/immortal.html), [kernel election probe](../../tests/attempts/pythonMachine/kernelElectionProbe.html), [installed-package consumer gate](../../tests/browser/productConsumer.mjs), [golden workflow](../../tests/browser/goldenWorkflow.mjs) | `npm test` (the [election protocol] section: reject state machine, epoch fencing, outcome records, conditional resend, unsafe-heap refusal, served-cache idempotence, all with negative tests confirmed), `npm run test:consumer`, `npm run test:golden` | Not a multi-user server. Recovery is to a completed commit boundary. The [durable RPC state table](contract.md#durable-rpc-state-table-normative) is the retry boundary: a normal follower cannot prove the leader heap portable, so a sent call cut off by failover is outcome-unknown and is not resent |
59
59
| Machine container and jobs | Starts a separate machine kernel inside a browser worker and offers job control |`machine.containers()` -> `MachineContainer`, `machine.jobs()` -> `JobControl` (a process-OS lane: it assumes the same replay pool as `machine.proc`) | Experimental |`crossOriginIsolated`, the worker graph, and a product process-lifecycle policy |[browser gate](../../tests/browser/gate.html) (the machine.jobs and machine.containers evidence checks), [product consumer gate](../../tests/browser/productConsumer.mjs), [machine container probe](../../tests/attempts/pythonMachine/machineContainerProbe.html), [job control probe](../../tests/attempts/pythonMachine/jobControlProbe.html), [pipe and shm probe](../../tests/attempts/pythonMachine/pipeShmProbe.html)|`npm run test:browser`, the MachineContainer and JobControl rows of `npm run test:consumer`, process OS probes | Not a Linux container and not an OS scheduler. It is pyproc's browser-kernel isolation model |
60
60
| Guests on one wire | Two guests on one computer exchange real Ethernet frames instead of merely coexisting | The built-in `network` device of `createWebComputer` (a `MemoryEthernetSwitch`), the `pyprocNet` module inside the Python guest, and the frame law exported from `pyproc/machine`| Experimental |`createWebComputer` with `network` left on, and a guest that speaks frames |[guest network probe](../../tests/webMachine/browser/probes/guestNetworkProbe.html), [packet network probe](../../tests/webMachine/browser/probes/packetNetworkProbe.html)|`npm run test:web-machine` (the guest network probe runs in CI; the Linux crossing is in the local `--v86` lane) | Only ARP and ICMP echo are answered automatically; TCP, UDP, and DNS are the guest's own business. There is no uplink, so guests reach each other and nothing else. Both guests currently share one JS thread, so a frame arrives between `run()` calls rather than during one |
61
-
| Non-Pyodide engine seam | Proves the session and time-travel primitives work on non-Pyodide CPython 3.14 WASI |`bootWasi`, `WasiSession` (`pyproc/wasi`) | Research preview | A consumer-provided `wasmURL`, the WASI worker asset, and the JSON value bridge |[WASI browser gate](../../tests/browser/wasiGate.html), [engine port campaign](../../tests/attempts/enginePort/README.md), [WASI REPL probe](../../tests/attempts/enginePort/wasiReplProbe.html)| WASI gate, [dual engine probe](../../tests/webMachine/browser/probes/dualEngineProbe.html) in `npm run test:web-machine`| Not the production default engine. The value bridge is JSON-centric and C extensions need a static build |
61
+
| Non-Pyodide engine seam | Proves the session and time-travel primitives work on non-Pyodide CPython 3.14 WASI |`bootWasi`, `WasiSession` (`pyproc/wasi`) | Research preview | A consumer-provided `wasmURL`, the WASI worker asset, and the JSON value bridge |[WASI browser gate](../../tests/browser/wasiGate.html), [engine port campaign](../../tests/attempts/enginePort/README.md), [WASI REPL probe](../../tests/attempts/enginePort/wasiReplProbe.html)| WASI gate, [dual engine probe](../../tests/webMachine/browser/probes/dualEngineProbe.html) in `npm run test:web-machine:wasi`| Not the production default engine. The value bridge is JSON-centric and C extensions need a static build |
0 commit comments