Evergreen:把不变量写进类型,让编译器去证明
来源:evergreenlang.net — 2026-11-03
📋 概述
Evergreen 是一个新系统的语言官网,主张只有一条:把必须成立的条件写下来,让编译器检查它确实成立。语言里有前置条件、后置条件与数据不变量三类契约,写法贴着代码——构造 NonZero 时要求入参非零,编译器在值被构造的地方就检查这条不变量。它同时声称能追踪内存:显式的布局、所有权与借用,编译器记录内存平面何时活着、哪些引用仍然有效。证明部分用 ideal 与 fact 关键字:理想计算与归纳引理在检查后会被擦除,不进入可执行代码,因此作者敢声称「证明不影响性能」。官网还带一个可在线运行的 playground。宣传语是「比 C 更强,比 Rust 更安全」。
🔑 核心要点
- 契约是一等公民:where / ensures / fact 三种写法把不变量留在代码旁边,而不是文档里。
- 证明不付运行时成本:ideal 与 fact 在检查后擦除,只留下真正要执行的代码。
- 内存模型走显式路线:布局、所有权、借用都摆在明面上,由编译器追踪存活。
- 注意这是官网自述:目前没有看到编译器成熟度、生态与真实项目的公开数据。
💡 金句
Write down what must hold. Let the compiler check that it does.
👍 0
👎 0
← 返回 Hacker News 首页