C++ · KJ · CPPGC
从 V8 到一个小型运行时
不是复刻完整平台。我们只保留一条清晰主线:让 V8 执行 JavaScript,用 KJ 接管异步 I/O,用 cppgc 管理跨语言对象,然后逐章加入真实能力。
6个连续章节
C++23宿主实现
1个逐步长大的服务
最终得到什么
export default {
async fetch(request, env, ctx) {
const value = await env.KV.get("visits")
ctx.waitUntil(env.LOG.append("request completed"))
await new Promise(resolve => setTimeout(resolve, 3000))
return new Response(value ?? "hello")
}
}
同一个进程还会提供 SPA 静态资源、WebSocket 聊天室、内存房间状态、追加日志、RocksDB KV,以及请求和存储 span。
路线
01 · 安装准备 C++ 构建环境
V8、KJ、cppgc 与调试工具。
02 · 起点Hello WorldIsolate、Context、微任务与统一 C++ heap。
03 · HTTPFetch HandlerRequest/Response、setTimeout、ExecutionContext。
04 · 实时ChatroomWebSocket、SPA 分流、内存状态与日志。
05 · 持久化RocksDB KV异步存储边界、批量写入与恢复。
06 · 观测Trace 与压测找出写入瓶颈并用数据优化。
每章都只在上一章的可运行程序上增加一个边界。章节正文解释“为什么”,完整类型职责放在独立参考页,避免把生命周期细节藏在代码片段里。