PR 规则与政策
PR 规则
- 我们 更倾向于较小的 PR。
- 如果你有写入权限,可使用 graphite 进行堆叠式提交,该权限将在你贡献较多后授予。
- 如果 PR 包含架构变更,请先创建一个议题或讨论。
开发政策
- 采用数据驱动的设计理念。
- 保持 API 简洁且文档完善。
- 如果实现来自其他项目,请始终提供原始来源的引用。
性能
- 本项目中所有性能问题均视为缺陷,包括所有运行时和编译时性能问题。
- 遵循 Rust 性能手册 的指导建议。
- 尽量减少
regexcrate 的使用。使用 Rust 迭代器和字符串方法以获得更好的性能。
- 编译时间必须尽可能缩短,以降低对开发流程及下游工具的影响。
- 减少第三方依赖以提升编译速度并降低项目复杂度。
- 避免使用复杂的宏、泛型或其他会减慢编译或增加二进制体积的 Rust 技巧。
- 我们的 CI 流水线 运行时间控制在 3 分钟内,任何性能退化都需立即修复。
维护政策
- 监控代码覆盖率以发现未使用的代码。目标达到 99% 的代码覆盖率。
- 主动监控并优化 CI 时间,以加快合并 PR。目前在 GitHub Actions 上的平均 CI 时间约为 3 分钟。
- 文档优先:文档应作为事实真相的来源。保持文档更新,并分享链接,而非反复回答相同问题。参见 GitLab 的 手册优先 做法。
- 一致的导入顺序:从“最远”到“最近”。
std- 外部 crate
- Oxc crate
- 本地 crate (
crate) supermod
约定式提交
我们遵循 约定式提交:
提交包含以下结构化元素,以向使用者传达意图:
fix:此类提交用于修复代码库中的错误。feat:此类提交用于引入代码库中的新功能。BREAKING CHANGE:在类型/作用域后附加!,表示引入了破坏性 API 变更,例如feat(parser)!: new feature。- 作用域为 crate 名称。
- 类型包括
feat:、fix:、chore:、ci:、docs:、style:、refactor:、perf:和test:。
行动政策
摘自 Astral 的价值观:
我们倾向于采取行动,即使面对不确定性。我们更重视 务实执行 而非 长期争论;我们更倾向于事后请求 宽恕 而非事先获取 许可。我们珍视 决断力 —— 尤其是当决策并非清晰明确时,以及当决策可逆时更显重要。
倾向于行动并不等于鲁莽。相反,它是一种倾向于做出 负责任 的决策,并以 紧迫感 付诸实施,即使我们仍存在持续的模糊性或已知的未知因素。
