Skip to content

Research & roadmap

Nothing on this page is a capability claim. The work here is designed, in progress, or proven as a mechanism. An item moves to capabilities & limits only when a probe proves it live.

fork() on V8 isolates — mechanism proven live

Section titled “fork() on V8 isolates — mechanism proven live”

Workers has no fork() primitive, so Nimbus implements one. The mechanism ran on production Cloudflare infrastructure on 2026-07-16. Asyncify unwinds the running WASM program. A sibling instance of the same module starts at request time. That is legal because workerd blocks only raw-byte compilation. The parent’s linear memory is copied, every exported global including __stack_pointer is restored, and both sides rewind. The parent resumes with the child pid, and the child resumes with 0.

Depth-4 call stacks and grandchild forks stayed byte-identical to the local model across 2,000 forks in one facet. Copying a 16 MiB image on the memory-reuse path takes ~0.5 ms. Full instantiate+copy is GC-dominated, so the design reuses instances. A facet-budget overrun is a catchable error, which maps to fork() returning ENOMEM. Exec runs live on the same mechanism. That covers fork plus exec of a different wasm image with a real waitpid exit status. It also covers vfork and posix_spawn fast paths, and cross-facet placement (fork+exec+wait ~1.9 ms at 16 MiB).

GNU bash 5.2.37 and BusyBox 1.37.0 coreutils now run on this fork/pipe/setjmp scheduler in a dedicated facet (the process fabric). The remaining work is to make it the default process model rather than an installable program.

Permission enforcement shipped in July 2026. uid, gid, and mode are durable inode columns. One credential passes through a single VFS seam. Denials are real EACCES/EPERM through every runtime, with a root bypass and durable chmod/chown. Security documents the model and proves a denial in a live sandbox. What stays open is maturity. Enforcement coverage is weeks old, and some subsystems (package installation, runtime staging) run as a system credential.

Work State
One POSIX FD layer (FdTable → OpenFileDescription → backing object) design; prerequisite for byte-true pipes, WASM stdin, fork’s inherited fds
WASI + long-running Python/Ruby on the live fs bridge specced, in progress
opencode TUI serve half solid; attach renders frames from a facet with its own memory envelope, still hardening
Index-pack CPU headroom (75k+ objects) continuation-slicing the indexer
Full POSIX PTY parity roadmap: raw/cooked modes, signals, replay
Broader Pyodide/gem artifact catalogs, fuller pip/Bundler parity ongoing
Per-session egress policy (deny-by-default outbound) recognized gap, designed as embedder option
Upstream workerd availability issue: some user-space activity can crash the shared process and reset sessions; disks survive, availability only reproduced, reported, escalating with Cloudflare