🎯 Emacs Internal #01: Lisp Runtime in C, Not an Editor

⭐⭐⭐⭐⭐ (5星) 来源: Lobsters / thecloudlet.github.io 分类: Systems Programming / Programming Languages

📝 摘要

深度解析 Emacs 的本质——它不是一个普通的文本编辑器,而是一个嵌入在 C 中的 Lisp 运行时。作者通过阅读 Emacs 源代码,发现了设计哲学、系统软件权衡,以及至今仍不过时的代码。

🔑 核心亮点

1. 历史演进:为什么 Emacs 嵌入 Lisp 解释器?

2. Greenspun's Tenth Rule

Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.

任何复杂的 C 程序最终都会包含一个半 Lisp 的实现。Emacs 在 40 年前就预见了这个"诅咒"。

3. 现代编辑器的 VM 模式

编辑器 架构 并发模型
Emacs C 核心 + Elisp 解释器 单线程主循环
Neovim C + LuaJIT + RPC 事件循环 + 异步 Jobs
VSCode Electron + V8 多进程 + JIT

4. Greenspun's Tenth Rule 受害者

💡 核心洞察

"Emacs 是一个可编程的操作系统,核心是 Lisp 虚拟机"

从语言设计角度看,所有现代编辑器的核心都是虚拟机。Emacs 在 40 年前就选择了这条道路,而 Neovim 和 VSCode 只是走了类似的道路。

🔗 原文链接

Emacs Internal #01: is a Lisp Runtime in C, Not an Editor

📅 发现日期

2026-03-21