贡献指南¶
项目采用 MIT 许可证(LICENSE)——这份许可证就是全部法律安排;没有 CLA,也没有它之外的任何贡献者协议。本页讲实用的一半:怎么得到一个能工作的构建、”完成”意味着什么、一个好的改动长什么样。
得到能工作的构建¶
先完整走一遍安装:钉死的 Julia 1.12.x、打开示 例的 CMake、草稿环境、跑一次 quickstart。本页的一切都假设在你改任何东西 之前这一套是通的。如果改动之前就构建不起来,你先发现了一个值得报告的 bug,再谈写代码。
完成的定义:门¶
这个仓库里的改动,门说了算才算完,编译通过不算。按成本递增:
- 干净构建。 CMake 配置加构建,无新警告。
- 文档门。
.venv-docs/bin/mkdocs build --strict与对拍脚本必须零警 告通过——每个页面在两个语言下都存在、标题已翻译、sync戳一致、且没 有页面泄漏机器特征串。动了docs/下任何一页,就两条都跑。 - 验收门。 验收门的示例门,手工跑,哨兵行全 绿。桥或提取的改动欠的是全套,不是离得最近的那个示例——过去一次修复 带着回归上线,只有布局敏感的门当场抓住。
- 改动够得着的产物要重建。 Julia 侧包的改动使 sysimage 与 AOT 构建失 效(从零重建)。
门是刻意手工的(已知限制)。这让它成了 你的活。
一个好的改动长什么样¶
范围小、按逻辑单元提交。 仓库的提交历史按一个逻辑单元一个 commit 书 写——功能、它的测试、它的示例、它的文档、它的环境变更分开提交,不是一 个大盘子落地。保持这个粒度;正是它让这里的 bisect 真的 bisect 得动。
响亮失败,绝不静默。 本仓库风格是带原因的显式错误压过安静的默认值:
无效句柄带着可经 get_last_error_message() 读到的消息、过期格式拒绝解析
并提示重新生成、欠解析的运行断言报错而不是产出看着挺像的错数。一个添了
静默回退的贡献是在跟整个代码库对着干。
遵守已记录的契约。 公共 ABI 是 bridge.h;Fortran 界面是
src/julia_binding.f90 与 src/julia_sdk.f90;Julia 侧是 FortranBridge
包。扩展其中任何一个意味着更新它上面那层(以及它的文档页),而不是绕过
它。
机器特征一律脱敏。 示例、脚本、文档不得硬编码本机安装路径、主机名或 用户名——用占位符、环境变量覆盖或可执行文件相邻探测,正如现有代码的做 法。文档门对散文强制这条;代码和注释按同一个标准要求自己。
文档跟着代码走。 用户可见的行为变化要同步更新两个语言的相关页面,
并把 sync 戳前移。改了某道门查什么的 PR,在同一提交序列里更新
验收门。
每个说法都有出处。 文档与注释里的数字来自验证运行,出处到产出它的脚 本;你改了一个数字的来源,就改这个数字。没有出处的测量是未来某个人的错 误假设。
Pull request¶
向主分支(main)开 PR,附上:
- 改动做什么、为什么(有 issue 就带上链接);
- 你跑了哪些门、哨兵输出是什么;
- 动了
src/bridge/的,说明为什么桥内部的 GC 与 线程规则对你的改动仍然成立。
评审会聚焦这个项目在乎的失败模式:错误路径覆盖、static 缓存的 GC 扎根、 版本钉死、诚实的文档。如果评审人要你补跑一道你跳过的门,那正是评审在按 设计工作——收据见教训。