编译器与构建系统为何需要对话?
Communication Between the Compiler, the Build System, and Beyond
现代操作系统存在一个被忽视的优化盲区:编译器、构建系统和包管理器之间缺乏有效沟通。在 Rust 或 Go 等现代语言中,编译器与构建系统紧密集成,能实现高效的优化;而在 C 语言生态中,编译单元往往独立处理,导致无法进行跨文件的整体优化。如果让编译器、构建系统与包管理器深度协作,不仅能实现更细粒度的增量编译,还能跨越包边界进行全程序优化(LTO)。这种架构甚至能延伸至文件系统,通过声明式配置实现系统的原子化更新与不可变部署,彻底改变软件构建与系统管理的范式。
操作系统错失了许多有用的优化潜力,因为编译器、构建系统和包管理器提供的有用依赖和资源信息没有在彼此之间或系统其他部分之间共享。