为何GCC版本号不随发布日期单调递增?
GCC 版本号非单调递增的设计原因
GCC 采用三段式版本命名规则:主版本号.次版本号.修订版本号,各段的含义和发布逻辑完全独立,和总版本号数值大小没有直接绑定,出现旧分支新版本发布晚于新分支首发版本的情况,核心是社区的多分支并行维护策略:
- 主版本号升级仅对应大规模特性新增、语法/ABI层面的不兼容变更,新的主版本会按年度周期迭代推出,比如2019年推出GCC 9、2020年推出GCC 10、2021年推出GCC 11
- 每个主版本发布后会进入长期维护状态,社区会持续为这个分支修复严重安全漏洞、核心功能BUG,不会因为更高主版本发布就停止维护。维护过程中如果只修复缺陷不新增功能,就升级修订版本号,有小幅功能增量才会升级次版本号
- 旧稳定分支的补丁发布和新主版本的迭代是并行推进的,所以才会出现2021年4月先发布新主版本的首发版
GCC 11.1,2021年5月又发布旧主版本的最终补丁版GCC 8.5的情况
这种设计的核心目标是兼顾新特性迭代和生产环境稳定性:大量企业、嵌入式场景的生产环境对编译链兼容性要求极高,不会轻易升级主版本,长期维护的旧稳定分支可以让这类用户在不调整整体编译环境的前提下,获得必要的安全和稳定性修复,避免不必要的兼容性风险。
内容的提问来源于stack exchange,提问作者roulette01
相关产品推荐
相关产品推荐

