Evergreen:一种可证明安全的系统语言
Evergreen: A Provably Safe Systems Language
原始链接: https://evergreenlang.net
01 / 不变量驻留在你的代码中。将前置条件、后置条件和数据不变量放在它们所描述的代码旁。它们会成为编译器检查的义务。fn increment(n: usize) -> usize where n < usize::MAX ensures result > n { n + 1 } 02 / 理解内存的编译器。使用显式布局、所有权和借用引用。Evergreen 会跟踪内存平面何时存活,以及哪些使用仍然有效。let value: usize = 1; let cell = &mut value; *cell = 10; fact same = value == 10; 03 / 不影响性能的强大证明。证明、归纳引理和理想计算在检查后会被擦除。可执行代码保留它需要完成的工作。ideal let expected = integer::from(42); let value: usize = 42; fact matches = integer::from(value) == expected;