追求 1.10 和 Windows XP 的支持

标签 go 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 上执行: enter image description here

如您所见,主要的 go 二进制文件也在 XP 上运行。是否已经知道何时由于技术限制而无法在 Windows 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 <…>


至于支持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这最终导致放弃对该操作系统的支持。

关于追求 1.10 和 Windows XP 的支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52137098/

相关文章:

windows-7 - 关于 Direct2D 和 DirectWrite 功能

com - Windows XP SP3上的错误0x800706F7 "The stub received bad data"

.net - WinForms 应用程序中的自定义标题栏/镶边

golang 只从 json 获取一个统计信息

http - 发出自定义发布请求时出现 400 Bad Request

go - 停止 go mod 工具解析某些目录

C++ 程序仅在安装 Visual Studio 后才能在 XP SP2 上运行

windows - 通过网络连接到 Visual Studio 远程调试器 (msvsmon) 所需的设置

string - 为什么 utf-8 编码的 byte\xbd 在 for range 循环中被格式化为 unicode 代码点 fffd?

go - 无法修改数组内的结构?