Each vat is a Durable Object that stores code by hash and runs it as a facet through the Worker Loader: an empty env, no fetch, storage that carries over upgrades. Two sockets with no configured address: whoever starts workerd hands them in (systemd socket activation), so the admin socket is the authority to install code. Tests run a real workerd: install, upgrade, isolation between vats, no fetch, the public port can't install, and code and state survive a crash. They spawn the package binary rather than the .bin shim, which forks workerd, so killing the shim orphaned it and the test run never ended. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
9 lines
247 B
JavaScript
9 lines
247 B
JavaScript
import { DurableObject } from "cloudflare:workers";
|
|
export class App extends DurableObject {
|
|
fetch() {
|
|
const n = (this.ctx.storage.kv.get("n") ?? 0) + 1;
|
|
this.ctx.storage.kv.put("n", n);
|
|
return new Response(`v2 count ${n}\n`);
|
|
}
|
|
}
|