编译器、构建系统与模块化导致的构建性能与包管理痛点
问题概述
开发者普遍担忧编译器与构建系统的交互导致构建时间过长、模块化受限以及包管理效率低下,尤其是在需要整体程序优化时产生的中间结果肆增,以及语言级包管理导致的安全更新与跨语言复用困难。
痛点标签
- 构建时间受语言设计限制,需要更轻量、更好模块化的软件
- 对整体程序优化的依赖导致编译中间结果过大
- 将包从操作系统移至语言专用 silo 带来的安全更新和可移植性限制
待验证问题
- 您是否因为语言设计导致构建时间变慢?
- 您是否在使用需要整体程序优化的语言时遇到中间结果过大的问题?
- 您是否在包管理或安全更新方面遇到需要重新编译整个二进制的情况?
证据
原话 · @匿名
My C projects are already extremely fast to build. I also don't agree we should give up modularity for whole program optimization, I do not think we should give up dynamic (edit) linking, I do not think everything needs to be entangled to achieve fast builds...The build times we see affecting C++ and Rust are because the type systems of languages is misdesigned. The supply-chain issues we have with the language-level packaging manager downloading source instead of pre-compiled binaries from curated repositories are also related to this. I think we need leaner, simpler, and better modularized software. Not whole-program optimization which is only necessary because of the monomorphized gigantic intermediate results created for ba
原话 · @匿名
Fwiw on the compiler front, I used to work on the msvc tool chain. It has been doing lto (aka ltcg) for a very long time at reasonably good throughput. That tool chain also has done incremental compilation on a per function basis for about 7 years. Sharing header parsing across translation units has been possible through PCH for decades. Even without PCH, inline header functions only get codegened once in ltcg mode (not counting inline expansion).In a large multi-dll build like Windows or Office, the import/export information across modules is computed without doing codegen, so ltcg codegen can be done in parallel regardless of the module dependency graph.
原话 · @匿名
Moving packages out of the operating system and effectively into language specific silos is a trade off. We find these tradeoffs useful because distributions don't always stay close enough to the bleeding edge for what we're doing and often we're using machines where we have no permission to install system packages or update them. So we derive great value from effectively having a private packaging system. On the other hand a build system that only does silos, assumes some packaging system and is monolingual has limited applicability.
免责声明:本卡片由 AI 从社区讨论中提炼,属于「痛点证据」,是需求分析与验证的起点,不等同于「已验证的市场需求」。AI 存在分析局限,关键决策前请打开上方原始讨论人工复核。