curl 意外图灵完备的九个月:用配置文件跑任意两计数器程序
来源:seriot.ch — 2026-10-29
📋 概述
从 curl 8.12 到 8.16,配置文件支持对变量做字节切片,也支持无深度上限地包含其他配置文件。这两件事凑在一起,就足以模拟任意两计数器 Minsky 程序,于是在“字符串与资源无上限”的理想化前提下,curl 是图灵完备的。8.17.0 加了五层 include 上限,把这条归约彻底打断。作者把计数器编码成一串 x 的个数,用文件名当指令标签,用 expand-config 当下一条指令,还附上了 2+3 的可运行验证包。
🔑 核心要点
- 归约的关键两件套:变量字节切片 [0-0] 与 [1-],以及 expand-config 的递归包含。
- 计数器用“x 的个数”表示,INC 是拼接、DEC 是切掉首字节、JZ 是取首字节后跳转。
- 真实二进制有硬上限:单次展开封顶 10MB,8MB 栈仅够 922 层嵌套后段错误。
- 五层 include 上限的公开解释只说防止自包含,没提图灵完备,也没解释为什么偏偏是五。
- 安全影响为零,作者明确写了 Security impact: None,属于纯粹的计算模型趣闻。
💡 金句
From curl 8.12 through 8.16, config files could slice variable values and include other config files without an explicit depth cap.
👍 0
👎 0
← 返回 Lobsters 首页