主要观点:目前不能绝对确定地推理 Rust 代码,但应该能够做到,是时候有 Rust 规范了。以 C++为例,其语言规则明确,能准确预测程序输出;而 Rust 代码在某些情况下输出会出乎意料,如变量名简化会改变Foo对象的丢弃时机,Rust 参考文档无法明确解释。Rust 语言规范能帮助理解编译器行为、应对不同平台和编译器、开发代码分析工具等。Ferrocene 语言规范可解释某些 Rust 程序,它是描述性的,与 Rust 项目的官方规范不同。编程语言会演进,C 从实验室实验发展为国际标准,C++标准化后创新变慢,Rust 目前创新较快。在系统编程、写可移植软件等情况下需要规范,对于安全关键基础设施,规范更重要,如 EAL5 要求有明确权威的规范,Rust 用于安全关键软件需官方的 Rust 语言规范,目前的 Rust 参考文档不是真正的规范,短期内需要这样的规范,且这不仅是技术挑战也是政治挑战,Ferrocene 语言规范已在推进并可能被 Rust 项目采用。
关键信息:
- C++程序输出固定,语言规则明确。
- Rust 代码输出有时出人意料,参考文档无法明确。
- Rust 语言规范的作用及不同类型规范的特点。
- 编程语言的演进过程及不同阶段的特点。
- 安全关键领域对规范的需求及 Rust 在其中的情况。
重要细节: - C++中变量的存储持续期和析构函数规则。
- Rust 中
let _tmp =...和let _ =...的区别及对Foo对象丢弃时机的影响。 - C、C++标准化的过程及对语言发展的影响。
- 不同安全等级对工具规范的要求及 Rust 在其中的地位。
- Ferrocene 语言规范的现状及可能被 Rust 项目采用的情况。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。