追求 1.10 并支持 Windows XP

Go after 1.10 and support of Windows XP

首先:我知道 Windows XP 已寿终正寝,极其不安全,存在巨大风险,而且仍在使用它的每个人都注定永远失败。 尽管如此,我必须提供一个在 Windows XP 上也可以 运行 的应用程序,我使用 Go 来实现。 在 1.10 中宣布不再支持 XP,1.11 在 release notes 中确认了这一点:

As announced in the Go 1.10 release notes, Go 1.11 now requires OpenBSD 6.2 or later, macOS 10.10 Yosemite or later, or Windows 7 or later; support for previous versions of these operating systems has been removed.

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

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

Issue #23380是相关的讨论。

简而言之:

Note that even if 1.10 is the last version to support XP, you'd get bugfix backports until 1.11 is out, and security backports until 1.12 is out. That means until January 2019 <…>


至于支持WindowsXP,有技术和非技术两方面的原因。 支持一个平台需要:

  • 有权访问它的人,并有动力继续努力 (付费或未付费)。

    最活跃的 Go-on-Windows 开发人员 Alex Brainman, 好像对XP没兴趣了

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

    汽车制造商必须有人支持。

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

    例如,该问题涉及 #23375,它仅在 Windows XP (SP3) 上发生。 但是,即使错误通常是 Windows 特有的——而不是 Windows XP,无论如何都必须在 XP 上测试它的修复。

因此,不幸的是,如果对来自某些 "powerful entities" 的 "powerful entities" 支持的 Go on "powerful entities" XP 没有兴趣——比如公司——你能做的最好的事情就是继续支持这个由你自己,FWIW。


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

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

的支持