
大家好,分享一个我最近正式开源的项目: S.A.A.U.S.O
这是我的本科毕业设计,也是我大学期间投入精力最多的个人项目之一。它是一个使用 C++20 实现的 Python 虚拟机 ,目标是兼容 CPython 3.12 字节码、支持 Python 语言的核心功能子集。
项目源码现已开源到 GitHub,链接:github.com/WU-SUNFLOWE... (请顺手帮我点一个⭐star~)
这篇文章中我会先做一个整体介绍。后面会将毕设论文的正文内容逐步整理后,分篇发到掘金上。

0x00 什么是 Python 虚拟机?
Python 是一种基于虚拟机(virtual machine,VM)技术的高级编程语言。
在 Python 程序运行的过程中,编译器前端会将 Python 源代码翻译为字节码(bytecode)。
接下来,Python 虚拟机(Python VM,PVM)作为后端,逐条解释执行字节码指令,并负责对象管理、垃圾回收和运行时支撑。

0x01 这个项目是做什么的?
S.A.A.U.S.O 是一个面向学习、研究和嵌入式场景的 Python 虚拟机实现。
我希望它不仅能作为毕业设计完成答辩,也能成为一个结构清晰、便于阅读和改造的工程项目。也就是说,除了"能跑",我还比较关注它的系统性和可维护性。
0x02 目前项目里已经有什么?
当前在毕业设计开发阶段,S.A.A.U.S.O 已经完成的核心能力大致包括:
- 基础对象系统: PyObject / Klass / VTable
- 若干内建类型: int / float / str / list / tuple / dict / bool / None
- 句柄系统: HandleScope 与长期句柄
- 虚拟机堆与 GC:已具备新生代回收能力
- 字节码解释器:基于 CPython 3.12 字节码模型
- 异常处理:包含异常对象体系与解释器侧 unwind 主路径
- 模块系统:支持基本 import
- 最小可用 Embedder API:支持宿主程序嵌入、编译与执行脚本、注入原生能力
S.A.A.U.S.O 的整体架构图如下:

现阶段整个项目当中,仅就 VM 内核而言,共有大约 3.2 万行 C++ 核心源码。
这意味着,S.A.A.U.S.O 并不是一个简单的玩具 VM 项目,而是一个尽量朝着真实运行时系统方向去做的工程。
0x03 为什么要做这个项目?
最初的动机主要有两个:
- 想系统地理解类似于 Python、JavaScript 这些高级编程语言是如何工作的
- 想在本科阶段完成一个具备一定系统复杂度,并且能够长期维护和持续演进的项目
我一直觉得,在学习 CS 的过程中,很多东西只有"自己动手做一遍",对其的理解才会真正成熟。
通过完成这个项目,我发现 Python 语言中很多看上去只是"一行代码"或者"一个语义细节"的东西,背后其实牵动的是整条虚拟机系统的链路。
0x04 这个项目有什么难点?
如果只看表面,很容易觉得Python 虚拟机就是逐条解释执行字节码。
但真正做起来,难点往往不在某一个功能点,而在于以下的具体工程问题:
- 对象分配和初始化顺序
- GC 安全问题
- 异常状态抛出、传递、捕获与栈展开
- 运行时状态管理
- 各个子系统自身的高内聚,子系统之间的低耦合
- 测试、调试和回归验证
也是因为这些问题,我对如何设计与实现中大型 C++ 工程这个问题更具体的认识。
很多时候,真正花时间的不是"把功能写出来",而是:
- 按照单一职责、依赖倒置等原则,将模块拆清楚、将模块之间的关系捋清楚。
- 保证各个模块具备良好的稳定性,与一定的可拓展性。
0x05 这个项目适合谁看?
如果你对下面这些话题感兴趣,欢迎来进一步了解 S.A.A.U.S.O:
- Python/JavaScript 等高级语言的虚拟机/解释器实现
- Python 运行时机制
- 中大型 C++ 系统
- 嵌入式脚本引擎
- 编程语言实现相关的个人项目
0x06 后续我会进一步分享什么?
我已经在我的毕业论文中详细探讨了 S.A.A.U.S.O 内部的一些核心设计思路、技术路线与工程实现。后续我会视情况进一步将它们进行整理,并分享出来。
包括但不限于:
- VM 统一运行时上下文容器(Isolate)
- 对象系统与核心行为分派
- 虚拟机堆与 GC 机制
- 对象句柄
- 字节码解释器
- 异常处理机制
0x07 小结
S.A.A.U.S.O 的项目链接我已经放在文章开头了。欢迎 star、issue、讨论,也欢迎直接在掘金的评论区交流想法。
这是我本科阶段最重要的项目之一。现在把它正式开源出来,也算是给这一段旅程画上一个句号。
如果你也在开发编程语言、虚拟机、运行时系统等个人作品,希望这个项目能给你一点参考~