curl 曾有九个月是图灵完备的:配置文件能切分变量,又能无限 include
从 curl 8.12 到 8.16,配置文件可以切分变量值,也可以包含其他配置文件,且没有显式的深度上限;两者合起来足以模拟任意两计数器 Minsky 程序。
要点
- 计数器值 n 用 n 个 x 表示;[0-0] 只留第一个字节,[1-] 去掉第一个字节,加减法就是切片
- 每个指令状态是一个或多个配置文件,文件名当标签,expand-config 选中下一个文件
- 配套示例包里的四个文件算出 2 + 3,输出 A=xxxxx B=;curl 8.17.0 加了五层 include 上限,这条归约随之失效
- 真实二进制里没有无限计数器:单次展开上限 10,000,000 字节,8 MB 栈跑到 922 步就段错误,所以只是理想化下的图灵完备
阅读原文这里是中文要点整理,数字与细节以原文为准。
评论
还没有评论,来写第一条。