Rust 所有权:C++ RAII 本来想成为的样子

C++ 的 RAII 有五个逃生舱门:use-after-move、悬垂引用、共享可变、异常安全、裸指针逃逸。Rust 的所有权模型把它们全部焊死了。从 C++ 侧拆解 RAII 的根本缺陷,看 Rust 如何在每个分叉点做出不同选择。

runc 源码考古:OCI 参考实现到底长什么样

我们的迷你运行时有 500 行,runc 有 15000 行。多出来的代码在干什么?本文拆解 runc 的核心流程:从 runc create 到容器 init 进程,libcontainer 的设计,nsenter 里那段神秘的 C 代码,以及 Go runtime fork 的天坑。

【LSM-Tree】完整引擎 + Rust 重写对比

组装完整 LSM-Tree 存储引擎:DB 接口(Open/Put/Get/Delete/Iterator/Snapshot)、单写多读并发控制、启动恢复,然后用 Rust 重写核心模块,记录 5 个编译器不让我过的故事,最后三方 benchmark 对比。从零写一个 LSM-Tree 存储引擎系列第 5 篇。

OCI 规范兼容:让迷你运行时说标准语言

我们的迷你容器运行时能跑了,但没人能用它——因为 containerd、Kubernetes 不认识它。OCI Runtime Spec 就是容器世界的通用语言。本文拆解规范的每个关键字段,把迷你运行时改造成 containerd 能调用的标准运行时。

OverlayFS:一层一层像洋葱

Docker 镜像为什么能分层?pull 一个 100MB 的镜像为什么只下载 3MB?答案是 OverlayFS 的 copy-on-write。本文手工构建分层镜像,实测 COW 的性能代价。

Compaction:LSM-Tree 的心脏手术

从零实现 LSM-Tree Compaction:最小堆多路归并迭代器、Level 分层与 Compaction 打分、Tombstone 下推、Version/VersionEdit/MANIFEST 版本管理,以及 Leveled/Size-Tiered/Universal 三种策略的量化对比。从零写一个 LSM-Tree 存储引擎系列第 4 篇。

Cgroups v2:让容器不能吃掉整台机器

你给容器设了 512MB 内存限制,结果宿主机上的数据库被 OOM-kill 了。Cgroups 不是'加个限制'那么简单 — v1 的设计是个历史错误,v2 才是正确答案。本文用 C 代码从 mkdir 开始,手动创建 cgroup,设 CPU/内存/IO 限制,压测,看它怎么把进程关进笼子。