首先:我知道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上仍然可以执行:
您可以看到main go二进制文件也仍然可以在XP上运行。是否已经知道何时由于技术限制而无法在Windows XP上运行golang编译的exe,或者某些方法是否由于XP上缺少API而无法使用而导致某些方法失败?
答案 0 :(得分:4)
Issue #23380是相关的讨论。
简而言之:
请注意,即使1.10是最后一个支持XP的版本,您也将获得错误修正支持,直到1.11发行,而安全支持,直到1.12发行。这意味着直到2019年1月<…>
关于支持Windows XP,有技术和非技术方面的原因。 支持平台需要:
有权使用它的人,并且有动机去做 (已付款或未付款)。
最活跃的Windows上的开发人员Alex Brainman, 似乎对XP不再感兴趣。
自动构建器必须支持此平台,这些构建器是Go发布/质量检查流程的一部分。
自动构建器必须得到某人的支持。
特定于平台的错误必须固定并经过测试。
例如,该问题涉及#23375,该问题仅在Windows XP(SP3)上发生。 但是,即使一个错误通常是Windows特有的-相对而言 对于Windows XP,无论如何都必须在XP上测试该补丁。
因此,不幸的是,如果对一些“强大实体”(例如,公司)对Windows XP上受支持的Go毫无兴趣,那么您最好的办法就是实际努力仍然自己来支持FWIW。
还请注意,即使正式停止支持,您仍可能会成功地从源代码构建新的Go版本(这很简单,因为Go 1.5现已使用Go(较早的Go版本)构建,所以Go。) / p>
因此,真正的阻止者是Go团队遇到了一些障碍,这些障碍需要一些Windows XP中不存在的内核功能。 一个很好的例子是some difficulty with SEH handling on Windows 2000,最终导致对该操作系统的支持下降。