v0.0.7 - Process OS primitives, self-hosting, and a numerical leap (CPU sharding + GPU)
Cumulative release of this line since v0.0.6. Everything is additive (no changes or removals to the existing public surface); consumers pin by commit SHA, so nothing breaks. Default Pyodide stays v314.0.2.
browser-os primitives P1-P7 (all browser-measured)
- KernelElection: leader election via Web Locks + BroadcastChannel RPC + journal failover (the OS survives a tab dying)
- JobControl:
expr &forks the live interactive namespace onto another core (prompt returns immediately;%jobs/%fg/%kill) - PyProc flow IPC: pipe / lock / semaphore / shm (SAB ring buffer, 982 MB/s, real blocking read + backpressure)
- MachineContainer: machine-in-machine (a container kernel in a worker, depth 2, exposed as a Python value)
- MachineJail: permission jail (a cooperative chokepoint plus the browser's own
connect-srcCSP wall) - DeviceFs fsWorld v2:
/proc/<pid>/ctl(write = signal),/dev/fb0framebuffer,/dev/random,/var/log
engine-independence
- Self-hosting (
npm run fetch:engine): serve the whole distribution fromvendor/, boot withboot({indexURL:"/vendor/pyodide/"})and zero CDN - Snapshot pre-manufacture wall mapped (the wall is
loadPackage, not dlopen)
Onboarding
- checkEnvironment(): diagnoses crossOriginIsolated / SAB / JSPI with actionable fixes. Reaching for the process OS without the headers now gives a clear error instead of a cryptic
SharedArrayBuffer is not defined
Numerical leap (closing the numpy ~86x gap in two lanes)
- PyProc.matmul: CPU sharding (row-block distribution), compute-bound near-linear, 2.48x end-to-end, exact
- GpuCompute / GpuArray / GpuBridge: WebGPU compute with residency handles (upload once, chain
matmul/mapon the GPU, download once). Large f32 matmul measured 109x vs WASM numpy on a real GPU;Runtime.enableGpu()drives it from Python (pyprocGpu.matmulon numpy arrays, 92x). f32 only (WGSL has no f64); needs a windowed browser with a GPU (headless SKIPs)
New public surface (all additive)
checkEnvironment, SocketBridge, MachineContainer, JobControl, KernelElection, MachineJail, GpuCompute, GpuArray, GpuBridge + PyProc.matmul / exec / repl / pipe / lock / semaphore / shm + DeviceFs.track + Runtime.enableSocketBridge / enableGpu
Gates
Structure 455 + core browser 40/40 + wasiGate 10/10 + examples 5/5 + real-GPU probes all green.
Chromium / Edge only (JSPI + SharedArrayBuffer + crossOriginIsolated). The process OS and sockets need COOP/COEP headers; the GPU lane needs a windowed browser with a GPU.
한국어
v0.0.6 이후 이 라인의 누적 릴리즈. 전부 additive(기존 공개 표면 시그니처 변경·제거 없음), 소비자는 SHA 핀이라 즉시 깨지지 않는다. 기본 Pyodide v314.0.2 불변.
browser-os 근본 프리미티브 P1~P7(전부 브라우저 실측): KernelElection(Web Locks 선출 + 저널 failover = 탭 죽음 생존), JobControl(expr &로 살아있는 네임스페이스 fork), PyProc 흐름 IPC(pipe/lock/semaphore/shm, 982MB/s), MachineContainer(머신 안 머신), MachineJail(권한 감옥 = 협조 + CSP 벽), DeviceFs fsWorld v2(/proc//ctl, /dev/fb0, /dev/random, /var/log).
engine-independence: 자가 호스팅(npm run fetch:engine + boot({indexURL:"/vendor/pyodide/"})로 CDN 0), 스냅샷 사전 제조 벽 좌표 실측.
소비자 온보딩: checkEnvironment()가 crossOriginIsolated/SAB/JSPI 진단 + 실행 가능한 조치(암호 실패 대신 친절한 에러).
수치 성능 도약(numpy 86배를 두 레인으로): PyProc.matmul(CPU 샤딩, 종단 2.48배), GpuCompute/GpuArray/GpuBridge(WebGPU 잔류 핸들, f32 대규모 matmul 실 GPU 109배, Runtime.enableGpu()로 파이썬 numpy 직결 92배. f32 한정, 창 있는 브라우저 + GPU 필요).
Chromium/Edge 전용. 프로세스 OS·소켓은 COOP/COEP 헤더, GPU 레인은 창 있는 브라우저 + GPU 필요.