删除对旧编译器版本的支持的技术考虑?

时间:2009-10-04 16:30:16

标签: backwards-compatibility compiler-version

我处理的是一个以源代码和二进制形式免费分发的项目,因为我们的许多用户需要专门为他们的系统编译它。在保持与旧主机系统及其主要编译器的向后兼容性时需要考虑一定程度。

其中最重要的一些,例如GCC 3.2(2003!),ICC 9,MSVC(几乎放弃软件,而不是C ++!)和Sun的编译器(在我们仍然关心的一些旧版本中),缺乏​​对语言的支持功能可以使开发更容易。肯定还有一些情况,让用户坚持使用这些编译器会使他们失去很多性能,这与我们提供的目标背道而驰。

那么,我们说什么时候足够了?我可以看到几个停止支持特定编译器的参数:

  • 生成的代码性能不佳(相对于较新的版本,询问here
  • 缺乏对语言功能的支持
  • 开发系统的可用性较差(专有权比GCC更多,但是对于获得旧GCC也存在系统管理员问题)
  • 未修复错误的可能性(我们在ICC和xlC中隔离了ICE,还有什么可能潜伏?)

我确定我错过了其他人,而且我不确定如何给他们加重。那么,我错过了哪些论据?还有哪些其他技术因素可以发挥作用?

注意:这个问题之前有更广泛的措辞,导致许多受访者指出决策从根本上说是一个业务流程,而不是一个工程流程。我知道'业务'的考虑因素,但这不是我在这里寻找更多的东西。我想听听那些不得不支持旧编译器或者选择放弃编译器的人的经验,以及这对他们的开发有何影响。

3 个答案:

答案 0 :(得分:3)

您的问题在概念上与想要知道何时应该停止支持Internet Explorer 6的Web开发人员相同。答案是您必须进行研究。

  1. 有多少人使用较旧的编译器?
  2. 有多少人使用较新的?
  3. 有多少人愿意升级?
  4. 您会失去多少用户? (这可以从1,2和3的答案中计算出来。)
  5. 它可以节省多少时间和工作来放弃对旧版编译器的支持?
  6. 基本上你的决定归结为比较4和5的答案。看起来这是一个来自你的描述的开源项目,但如果它是一个企业,你可以用数字比较它(如果钱丢失少于省钱) ,放弃支持)。如果它不是一个企业,它会更复杂,因为你必须猜测人力成本,这可能有点棘手。

答案 1 :(得分:2)

嗯,通常的方法是首先要问。我假设您有一个网页的邮件列表或其他方便。所以问:如果我们放弃对这些编译器的支持,谁将受到影响以及升级有多难。在这样做之后,您将了解是否值得继续支持这些编译器的麻烦。

对于您决定放弃支持的每个编译器版本,标记最后一个工作版本可能也很友好,这样任何真正关心的人都可以继续使用旧版本。

答案 2 :(得分:2)

我认为做旧编译器技术的功效并不特别重要。这是一个商业决策,无论您是想要留住客户还是失去客户,这都归结为真正的归结。客户不从事技术交易,他们处理业务和业务决策。

理想情况下,您希望定义某种度量标准,该度量标准是根据您的客户数量构建的 对于使用它们的不同编译器版本,它们的成本是多少 维护每种编译器类型的特定版本。

从根本上说,你真的需要注意何时以及如何告诉你的顾客 您将退出部分产品的基础。你怎么告诉他们的。只是 放在他们的腿上。计划吧。

您需要一个内部批准的受控政策,并开始推出,或许可以说明 他们在用户组会议上,然后确保你有相当长的时间(2年是 好的,允许客户完成当前的实施(1年)加上一些松弛, 在您开始实施之前,并有一个支持框架,以帮助客户 及时迁移。

您的计划如何定义客户的反应方式。几年后,我在工作 软件公司,它出售了一个非常复杂的高端产品,用于控制电网。该产品售出200万英镑用于完整的包装,每位客户都签了 25年的支持合同。不知怎的,我们决定合理化硬件。我们曾经 在AIX,Solaris,Tru64和HPUX上提供它。但出于理由,我们决定将其合理化 在AIX上,我认为我们有一个交易。无论如何,其中一个客户是Solaris商店 对此非常不满,然后在接下来的4年里,我们从未听过他们的消息。 没有电话,打补丁,现场审核。没有。

我们决定改变它的原因,因为我们做了一个6西格玛项目,它表明我们 每年可以节省大约1900万英镑,购买基础设施合理化到AIX和NT。但在 最后,我们最终关闭了我们的一个主要客户,几乎摧毁了我们的用户组社区。

这个决定是仓促做出的,而且它适得其反。所以我认为你最好的想法是计划它。