## `--dry-run` 选项的价值
在开发一个生成、压缩、上传和通知的报告应用程序时,作者借鉴Subversion等工具,实现了一个 `--dry-run` 选项。这个标志模拟应用程序的流程——列出哪些报告*将会*生成,文件*将会*移动/上传等等——而实际上不进行任何更改。
作者发现这个功能非常有用,每天都用它来快速检查可访问性、配置和预期状态,*在*运行完整流程之前进行验证。它也加快了测试速度;报告计划的更改可以立即验证,而无需等待报告生成。
虽然承认它为代码增加了一些条件逻辑,但快速反馈和安全测试的好处超过了轻微的复杂性。作者总结说,`--dry-run` 对于执行更改的命令行应用程序尤其有用,并建议在开发早期考虑实现它。
## LLVM 开发总结 - 2025
2025 年 LLVM 多个关键项目持续取得进展。历时多年的 **ptradd 迁移** 接近完成,将 GEP 指令规范化为单个偏移量,从而实现公共子表达式消除并改进链式 GEP 处理——这些优势与最终迁移无关。目前仍在继续讨论 `ptradd` 的缩放因子支持以及过渡到强制使用。
**生命周期 intrinsic** 发生了重大变化,强制其与 allocas 一起使用,并删除了大小参数,从而改进了栈着色并发现了现有的 IR 问题。**捕获跟踪** 得到了增强,可以区分地址捕获和来源捕获,从而使 Rust 优化受益。
为改进 LLVM 的 ABI 处理,开发了一个原型 **ABI 下降库**,并对 Clang 和 LLVM 之间的类型对齐进行了一致性检查。通过对 SCCP 和对象大小计算进行优化,以及来自其他贡献者(如调试行表发射)的贡献,**编译时间** 得到了改善。
进一步的优化包括 **存储合并优化** 和在 SCCP 中启用 **PredicateInfo**。Rust 更新利用了 LLVM 的新功能,例如只读捕获和 alloc-variant-zeroed 属性。打包改进包括单体构建和 PGO,但简化兼容性包的尝试失败,凸显了 RPM 符号链接方面的挑战。
最后,作为领域团队和项目委员会参与新的 LLVM 治理结构,并与形式化规范工作组进行初步合作,完成了这一年。大约审查了 2500 个 pull request。