我从事一个以源代码和二进制形式免费分发的项目,因为我们的许多用户需要专门为他们的系统编译它。这需要一定程度的考虑来保持与旧主机系统的向后兼容性,主要是它们的编译器。
其中一些最笨拙的,例如 GCC 3.2(2003!)、ICC 9、MSVC(几乎是废弃软件,而不是 C++!)和 Sun 的编译器(在我们仍然关心的一些旧版本中)缺乏对语言特性的支持,使开发更容易。在某些情况下,让用户坚持使用这些编译器会降低很多性能,这与我们提供的目标背道而驰。
那么,在什么时候我们说足够了?我可以看到几个停止支持特定编译器的参数:
- 生成代码的性能不佳(相对于较新的版本,在此处询问)
- 缺乏对语言功能的支持
- 开发系统的可用性差(专有的比 GCC 更多,但旧的 GCC 也存在系统管理员问题)
- 未修复错误的可能性(我们在 ICC 和 xlC 中隔离了 ICE,还有什么可能潜伏着?)
我确定我错过了其他一些,我不知道如何衡量它们。那么,我错过了哪些论点?还有哪些其他技术考虑因素起作用?
注意:这个问题之前的措辞更广泛,导致许多受访者指出决策从根本上说是一个业务流程,而不是一个工程流程。我知道“业务”方面的考虑,但这不是我在这里寻找的更多内容。我想听听那些不得不支持旧编译器或选择放弃它们的人的经验,以及这对他们的开发有何影响。