I want a better build executor
a day ago
- 构建执行器是构建过程的第三阶段,继包管理和配置之后,负责执行进程并报告进度。
- 变更检测应使用除mtime以外的文件属性以减少误报,受redo等工具启发。
- 查询操作图(文件依赖关系)是执行器的核心功能;期望的查询语言包括嵌套谓词和用于复杂输出过滤的emit()函数。
- 追踪能自动添加依赖边并验证封闭构建,通过检查或硬错误支持逐步过渡,无需完全推断。
- 环境变量追踪具有挑战性;方法包括CPU级追踪(PIN、SPE)或信号处理程序,但各有局限。
- 提议的工具'ronin'将读取Magma格式,提供连续重建模式、追踪选项、类似Bazel的查询、可插拔后端以及基于SQLite的状态存储。
- Ronin与Buck2的不同之处在于它是更低层的执行器,可嵌入CMake和Meson等现有构建系统之下,实现逐步采用封闭构建而无需完全重写。