仓库约定
这些规则是 Luna-Flow 文档标准在 linear-algebra 中的补充。手册描述当前分支中的真实实现;当前文档基线为 0.5.0。
页面与章节
- 概览说明当前的版本基线:该版本包含什么、从哪里开始阅读,以及各个包的定位。
CHANGELOG.md负责承载历史版本时间线和较旧的发布说明。 - 每个包在每一章各有一个页面,以其路径命名:
api/immut.md一并记录Matrix、Vector和MatrixFn,api/container/adapters.md记录src/container/adapters。 - 内部包与工具包(
internal、consistency、perf、perf_runner、perf_support)的页面较短,着重说明其职责与不变量。 - 可运行示例以
moonbit check围起,并作为src/doc_en_us的测试编译,该包链接了每个页面。示例中的顶层名称在整个手册中必须唯一;请以页面名作前缀(例如mut_tut_)。 integration/章节说明外部类型如何接入algebra与container能力层。- API 文档偏规格说明,tutorial 偏使用路径,design 偏职责边界与取舍,不要把三类文体混写
- 后端包装包需要说明平台约束、转换边界,以及相关行为是在本地实现还是委托给外部库内核
- 尽量使用短句、直述句,避免口语化、宣传式或版本说明式表达
mutable 与 immutable 的统一规范
API 对齐原则
mutable与immutable应尽可能提供相同的公开 API- 当两个包都支持同一能力时,优先保持一致的函数名、参数顺序、返回语义与错误约定
- 如果因为实现约束无法完全一致,文档必须明确说明差异、原因以及推荐使用场景
- 新增公开接口时,默认同时评估是否应在两个包中都提供
immutable 包的设计原则
- 优先采用函数式、声明式、可组合的接口设计
- 优先返回新值,而不是暴露原地修改语义
- 避免让调用者感知隐藏状态、共享可变状态或时序敏感行为
- 文档应强调值语义、引用透明性与组合方式
- 如果存在性能上的妥协,仍应优先保持外部语义清晰、稳定、易推理
mutable 包的设计原则
- 优先关注性能、内存复用与底层执行效率
- 允许在库内部使用可变状态、原地更新和其他必要副作用
- 这些副作用应尽可能封装在实现内部,不应扩散到调用者的心智模型中
- 对外 API 仍应保持纯净、稳定、函数式风格,避免把内部可变实现直接暴露为接口约束
- 只有在性能收益明确且必要时,才引入与
immutable不一致的特殊接口
文档写作要求
- 在
mutable与immutable的 API 文档中,优先使用相同的小节结构与术语 - 对应接口应互相链接或交叉引用,方便读者比较两个包的语义与成本
- 文档需要明确区分“外部语义”与“内部实现策略”
- 缓存、复用、原地计算等性能细节应写入设计页面或
performance/章节,而不是写进 API 语义契约。 - 当某个
mutable接口为了性能采取特殊行为时,必须明确写出其可观察影响,而不是只描述内部实现细节
翻译
- 中文译文应当是自然的书面技术汉语,避免逐词硬翻和不必要的中英夹杂。
- 日文译文应当是自然的技术文体,不应照搬中文或英文句式。