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.
True Unix permissions — shipped
Section titled “True Unix permissions — shipped”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.
The rest, briefly
Section titled “The rest, briefly”| 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 |