【问题标题】:Go after 1.10 and support of Windows XP追求 1.10 并支持 Windows XP
【发布时间】:2018-09-02 12:37:09
【问题描述】:

首先:我知道 Windows XP 已经过时了,极度不安全,存在很大风险,而且每个仍在使用它的人都将永远被淘汰。 尽管如此,我必须提供一个也可以在 Windows XP 上运行的应用程序,并且我使用 Go 来做到这一点。 在 1.10 中宣布将不再支持 XP,而 1.11 在 release notes 中确认了这一点:

如 Go 1.10 发行说明中所述,Go 1.11 现在需要 OpenBSD 6.2 或更高版本,macOS 10.10 Yosemite 或更高版本,或 Windows 7 或 之后;对这些操作系统的早期版本的支持有 已删除。

我用 1.11 编译了我的应用程序并尝试在 Windows XP SP3 虚拟机上执行它。可以成功执行! 然后我认为撤销的对 Windows XP 的支持只适用于开发工具链,但即使这样仍然可以在 Windows XP 上执行:

正如您所见,主要的 go 二进制文件仍然可以在 XP 上运行。是否已经知道什么时候由于技术限制而无法在 Windows XP 上运行 golang 编译的 exe,或者某些方法会因为 XP 上缺少 API 而无法工作而失败?

【问题讨论】:

  • 放弃支持通常并不意味着某件事可以保证不工作——而是不能保证它可以工作。毫无疑问,Go 1.11 和/或标准库的某些功能在 Windows XP 上会失败。只要您不使用这些功能,您的软件就有可能正常工作。
  • 我不知道为什么有人投了反对票(不是我)。但是要求人们解释他们的反对意见确实是不合适的。他们匿名是有原因的。
  • @Marged,我想说你的问题只是not on-topic for SO,这就是它被否决的原因。我个人认为这个问题对某些人来说既有趣又可能有用(因为我认为我在你的靴子里,也就是说)但这并不能改变它偏离主题的事实。您最好将其发布到邮件列表中。
  • @kostix:如果离题,它应该获得 VtCed,而不是 DVed。目前,根本没有接近投票。因此,题外话的理论似乎并没有得到充分证实。就个人而言,我认为这个问题非常切题,也不值得投反对票。我没有投票的唯一原因是答案似乎不言自明,所以不是特别有趣。
  • 对源代码的快速搜索发现了一些(次要)功能,因为需要支持 XP。如果您从不遇到它们,您可能会没事的。不过当然,如果你还有一台XP机器,你需要把它拿出来拍。

标签: go windows-xp


【解决方案1】:

Issue #23380是相关讨论。

简而言之:

请注意,即使 1.10 是支持 XP 的最后一个版本,您也会在 1.11 发布之前获得错误修复反向移植,并且在 1.12 发布之前获得安全反向移植。这意味着直到 2019 年 1 月 <...>


关于支持Windows XP,既有技术原因,也有非技术原因。 支持平台需要:

  • 有权访问它的人,并有动力去研究它 (有偿或无偿)。

    最活跃的 Go-on-Windows 开发人员 Alex Brainman, 似乎对 XP 没有兴趣了。

  • 此平台必须在作为 Go 发布/QA 流程一部分的自动构建器上得到支持。

    自动生成器必须有人支持。

  • 必须修复和测试特定于平台的错误。

    例如,该问题是指#23375,它仅在 Windows XP (SP3) 上发生。 但即使一个错误通常是特定于 Windows 的——而不是 对于 Windows XP,无论如何都必须在 XP 上对其进行修复。

因此,不幸的是,如果某些“强大的实体”(例如公司)对 Windows XP 上支持的 Go 不感兴趣,那么您能做的最好的事情就是实际努力自己仍然支持它,FWIW。


另外请注意,即使在正式结束支持后,您仍然可以成功地从源代码构建更新的 Go 版本(这相当简单,因为 Go 1.5 现在是使用 Go 的(旧版本)构建的)。

因此,真正的阻碍将是 Go 团队遇到了一些障碍,而这只是 需要一些 Windows XP 中不存在的内核功能。 some difficulty with SEH handling on Windows 2000 就是一个很好的例子,它最终导致放弃对该操作系统的支持。

【讨论】:

  • 非常感谢,这真的很有帮助。知道何时/是否计划添加仅限 Windows 7 的 API 调用甚至“更糟糕”以让编译器生成仅标记为 Windows 7 的二进制文件(在 PE 标头或类似文件中)会很有趣。只要我可以创建一个二进制文件,我就可以在我死掉的平台上对其进行测试,并希望获得最好的结果 ;-)
  • @Marged,这不是一个真正的问题。请留言至the mailing list
  • 再次感谢,我会这样做的。我没有找到相关问题,但在您的帮助下,我能够
  • @Marged,最后一点你可能会觉得有用。我有点同你一样痛苦,因为我必须在我的前 $dayjob 中支持一些在 XP 上工作的东西,直到 2016 年(他们仍然在部分基础设施中徘徊)。根据我的经验,您通常这样做的方式是与平台一起“冻结”。例如,我们仍然有 Delphi 7 的副本来偶尔修复一些旧软件的错误。 D7 与 XP 一样无人维护,我会说,甚至更多无人维护。
  • @Marged,我的意思是,在 Go 真正开始使用 XP 之后,您仍然可以继续使用上一个版本;修复 3rd-party 包以使用该 Go 版本可能比尝试构建一个新的 Go 版本更容易。至于安全问题,无论如何你的平台都有它们,所以......哦,好吧;-)
猜你喜欢
  • 2010-09-08
  • 2015-12-12
  • 2012-04-17
  • 2013-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-14
  • 2011-03-26
相关资源
最近更新 更多