We need to seriously think about what to do with C++ modules
9 months ago
- #Compilation
- #Modules
- #C++
- C++模块应证明其编译速度能提升5到10倍才有存在价值,否则应从标准中移除
- 模块化的首要目标是提升编译速度,但后来转向构建隔离(防止宏泄漏等),这对多数开发者并非核心需求
- 尽管存在实现困难的警告,C++20仍仓促纳入模块,导致多年后仍缺乏可用实现
- 模块需要编译器与构建系统深度整合,但缺乏统一方案导致实现碎片化且低效
- C++模块设计过于理想化且缺乏实际验证,最终导致复杂度过高且性能低下
- 采用渐进式开发策略(从小型原型起步)本可更有效推进模块化
- 'import std'计划试图用模块替代标准库头文件来提速,但效果可能仅与预编译头文件相当(10-20%提速)
- 自定义标准库实验显示4倍编译加速,表明模块设定5倍提速目标是合理的
- 采用模块会带来代码重构、可移植性下降、构建复杂度增加等代价
- C++委员会应聚焦那些能带来明确收益且无需过度妥协的特性