论文标题

建立具有完美依赖性的脚本

Build Scripts with Perfect Dependencies

论文作者

Spall, Sarah, Mitchell, Neil, Tobin-Hochstadt, Sam

论文摘要

大多数构建系统的构建脚本描述了要运行的动作以及这些动作之间的依赖关系 - 但通常构建脚本会使这些依赖关系错误。大多数构建脚本都具有太少的依赖关系(导致构建输出不正确)和太多依赖关系(导致过度重建和减少并行性)。任何想知道为什么一次小变化会导致过度汇编或诉诸“干净”步骤的任何程序员遭受了不正确的依赖规范的不良影响。我们概述了一个构建系统,其中未指定依赖项,而是通过追踪执行来捕获。结果是,依赖性始终是正确的,并且构建脚本更容易编写。我们方法的最简单实现将失去并行性,但是我们能够使用猜测恢复并行性。

Build scripts for most build systems describe the actions to run, and the dependencies between those actions---but often build scripts get those dependencies wrong. Most build scripts have both too few dependencies (leading to incorrect build outputs) and too many dependencies (leading to excessive rebuilds and reduced parallelism). Any programmer who has wondered why a small change led to excess compilation, or who resorted to a "clean" step, has suffered the ill effects of incorrect dependency specification. We outline a build system where dependencies are not specified, but instead captured by tracing execution. The consequence is that dependencies are always correct by construction and build scripts are easier to write. The simplest implementation of our approach would lose parallelism, but we are able to recover parallelism using speculation.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源