语言演进
语言变更必须从具体语法、静态规则和运行时行为出发。仅有“更现代”“更简洁”之类目标不足以进入规范。
提案内容
一份语言提案至少包含:
- 要解决的代码示例;
- 新语法及其 grammar 变化;
- 类型检查与名称解析规则;
- 求值顺序和错误行为;
- 与 class identity、
ref<T>、nullable 和泛型的交互; - 被考虑但拒绝的替代设计;
- 迁移和兼容性影响;
- 编译器、格式化器、LSP 与文档工作量。
阶段
idea 只讨论问题;draft 给出完整规则;accepted 表示设计获准实现;implemented 表示参考实现和测试存在;stable 才获得兼容承诺。
实验功能
实验语法必须受明确的语言版本或 feature flag 控制,不能在普通文件中静默启用。编译器应在诊断中显示功能名和提案链接。
删除功能
删除稳定功能需要提供弃用期、自动迁移工具或机械替换规则,并解释为什么继续维护会伤害语言一致性。Norm 不以永久保留设计错误为目标,但迁移成本必须被量化。