Browsers give you workers but not threads, shared memory but not pointers, and message passing that copies everything. Penny is a research runtime that asks whether real Cilk-style work stealing can live inside those constraints: local worker deques backed by SharedArrayBuffers, stealing via atomic CAS, and typed views over shared memory instead of postMessage.

The hard part turned out not to be the Chase–Lev deque but the memory model, and then JavaScript’s execution model itself. Tasks need to become explicit state machines, which is what sent me off to learn how async runtimes actually work.

Posts & devlog