Bend 0.1 发布:一种快速的 CPU/GPU 语言,通过形式化证明阻止 AI 错误
TL;DR
Bend 0.1 作为一款快速、支持并行的语言发布,允许 AI 代理编写代码,同时内置的证明系统会阻止任何违反用户定义的 laws 的更改。
Bend 声称能实现的功能
- C 语言级别的性能:原生二进制文件在单核上以接近 C 语言的速度运行,并在 GPU 上实现高达 124× 的加速。
- 以证明驱动的安全性:类型检查器同时也是证明检查器。用户在
LAWS.bend中编写 laws;任何由 AI 生成的代码都必须生成一个PROOF.bend,编译器在接受更改前会验证该证明。 - 零成本并行:运行时会自动将工作分发到所有可用的 CPU 核心或 GPU 线程;无需显式线程或内核代码。
- 面向代理的工具链:一个简短的
AGENTS.md片段可告诉基于 LLM 的代理如何调用 Bend(如bend guide、bend PROOF.bend等)。
性能数据(Apple M4 Max)
| 基准测试 | 单核 Bend | 16 核 Bend | GPU Bend |
|---|---|---|---|
| 类型检查(证明) | 0.38 s(对比 Lean 的 19.2 s,Isabelle 超过 5 分钟) | — | — |
| 运行时(生命游戏) | 7.80 s(≈1× C) | 0.65 s(≈12×) | 0.06 s(≈124×) |
| 类型检查速度对比 Lean | ≈50× | — | — |
网站展示了 单核 用时 7.8 s,16 核 用时 0.65 s,以及 GPU 用时 0.06 s,证明了其宣称的可扩展性。
“laws” 如何阻止 AI 错误
- 在
LAWS.bend中声明一个 law(如下例),表达程序绝不能违反的不变性。 - AI 编写实现并生成对应的
PROOF.bend。 - Bend 的证明检查器验证该证明;若证明失败,更改将被拒绝,AI 必须重试。
# LAW: 没有任何移动序列能导致胜利。
law you_cant_win:
for moves: List<Move>
board = replay(start(), moves)
is_won(board) == False{}
如果 AI 尝试添加一个让玩家获胜的规则,编译器会报告该 law 被破坏,并拒绝合并代码。这一过程将潜在的 bug 转化为必须在存在前证明的 定理。
社区反馈 – 优势与担忧
svachalek(HN 评论) – “移植了一个定时任务;系统工作正常,但需要许多底层算术引理(例如
U32.add_comm)。这些引理可在项目间复用,但当前库中缺乏它们,增加了证明工作量。”
RomanKornev – “laws 可以被修改以适应新功能,这违背了其初衷。某些 laws 必须冻结,否则人类仍是瓶颈。”
jwpapi – “不清楚 Bend 如何证明所有可能的移动序列。大规模状态空间可能无法穷举验证。”
tintor – “有趣的商业模式:一个付费代理,能比人类更快地更新证明。”
plastic041 – “仓库显示 20k 星,但最近一次提交仅一次,问题/拉取请求极少,引发了对透明度和长期维护的疑问。”
mccoyb – “Bend 看起来像是带有仿射类型的 QTT,以实现 GPU 友好的性能,但在密集数组内核上可能无法与 CUDA 或 Futhark 相媲美;其优势在于平衡的递归 ADT 工作负载。”
shantnutiwari – “LLM 可能会简单地忽略或绕过 laws,需要超越静态证明检查的稳健执行机制。”
这些评论突显了实际摩擦点:需要更丰富的引理标准库、关于不可变 laws 的治理机制,以及对复杂领域中证明生成可扩展性的怀疑。
讨论中的常见问题
- 并行运行时是否支持 Apple Silicon GPU? 网站宣传支持 CUDA,但展示了 Apple M4 Max 的数据;用户已要求澄清。
- laws 如何在运行时强制执行? 证明在编译时检查;生成的二进制文件中不包含针对 law 的运行时保护。
- Bend 是否与现有生态系统兼容? 目前为独立语言;集成计划(如 Rust 风格的宏)仍在讨论中。
- 如何处理无限循环或非终止? 语言强制执行软递归限制(≈2⁴⁸−1),以保证终止,类似于其他以证明为导向的语言中的有界递归。
快速入门
curl -fsSL https://bend-lang.com/install.sh | sh
将以下片段添加到 AGENTS.md,以便 LLM 代理了解如何使用 Bend:
当使用 Bend 时:
- 运行 `bend guide` 学习它
- 使用 `LAWS.bend` 保持重要规则
- 提交前运行 `bend PROOF.bend`
- 尽可能并行化代码
然后只需指示你的代理:“使用 Bend”。
进一步学习
- 指南 – 完整语言规范(
bend guide会打印 GitHub 上的GUIDE.md)。 - BendTT – 有关仿射依赖类型理论的论文,位于
paper/BendTT.pdf。 - BendRT – 描述 CPU 和 GPU 并行运行时的论文,位于
paper/BendRT.pdf。 - GitHub 仓库 – https://github.com/bendlang/bend(问题是最主要的反馈渠道)。
展望
Bend 0.1 展示了一种语言如何结合原生速度编译、自动 CPU/GPU 并行以及基于证明的 AI 生成错误防护。社区的早期反应称赞其性能和新颖性,同时指出实际挑战:更丰富的引理库、透明的项目治理,以及当 LLM 尝试绕过声明的 laws 时的稳健执行机制。随着项目成熟,其影响力将取决于其与现有代码库的整合程度,以及证明工作流能否扩展到真实世界的大状态系统。
Sources
相关
- Dispatch
- Dispatch
- 项目
- 项目
- Dispatch