Skip to content

Conversation

KobeArthurScofield
Copy link
Contributor

@KobeArthurScofield KobeArthurScofield commented Apr 4, 2025

根据 golang/go#71671 ,Go 官方已经数年没有可用的 Windows ARM 32 位 builder 以至于现在出来的 Windows ARM 32 工具链存在问题(Go 1.24 中已经标记为 broken 并且没有提供对应的工具链下载只能交叉编译,并且已经确定在 Go 1.26 移除对 Windows ARM 32 位的支持

因此不用太着急合并,可以最晚到 v26 才移除。

影响范围大概是 Windows 8.1 RT(如果能直接跑的话)、Windows 10 ARM 32 位(含 IoT 版本)、Windows Server Nano ARM 32 位,以及使用 Windows on ARM 64 位但是还在使用 ARM 32 位 Xray-core 的用户。基于 Windows 11 24H2 / Windows Server 2024 的用户不受此影响,因为新系统已经移除运行 32 位 ARM 应用的支持。

To those who wants to keep support for Windows ARM 32-bit:

Please,

  • find an available community solution for building and running apps with newer Go,
  • or maintain a go-windows-arm.

We do not have any Windows ARM devices that can be used to confirm the built binary, unless someone provide one for testing. We do not accept any baby cries like "Why not just keep supporting them?" or "Keeping supporting them does not hurt any thing.", etc. that without reaching out any helping hands.

@yuhan6665
Copy link
Member

Yeah I agree with remove support with official go. BTW I don't think we should support Windows 7 forever, especially now that protocols are rather stable

@KobeArthurScofield
Copy link
Contributor Author

移除 Windows ARM 32 位构建大概阻力大概不会很大,因为必须用到这个构建的人数可能非常少,甚至不知道真的有没有使用者。(Windows 10 开始 64 位版本 Windows on ARM 能支持原生 ARM64 二进制运行,支持 ARM32 大概相当于给之前的 32 位 ARM UWP APP 开支持)

而且目标是 Windows 的话,支持旧版比支持一个 CPU 架构容易:支持旧版大多数调换调用的 API 即可,但是支持一个 CPU 架构需要会汇编。

BTW I don't think we should support Windows 7 forever, especially now that protocols are rather stable

人力上来说永远支持 win7 就不可能,不过支持一段时间还是可以的。 更何况目前只提供编译支持
而且考虑到新功能加入和 bug 修复的话,能支持的时候不下放好像也不太恰当。

不过何时终止支持可以以以下三点其中至少一项来考量:

  • 特定地区(如 CN)使用份额是否一段时间内持续低于特定百分比;
  • 以现有方法支持 1-3 年(在 v26(小概率)/27(可能)/28(可能) 终止);
  • 新版 Go 调用了只有新版 Windows 才有的 API,但是该 API 在旧版 Windows 上没有等位替代或者相近替代。(硬性限制,直接无视上面两条)

@RPRX
Copy link
Member

RPRX commented Apr 15, 2025

其实就是微软的锅,我觉得 Win8/10 就是 Win7 套壳,Win11 就是 Win10 套壳,明明可以一直滚动更新,为了卖新系统非要出个新版本号,现在 Win10 也快 EOL 了,估计 Win12 还是 Win7 的控制面板,系统出好几年了 UI 都还没统一,地狱笑话

@RPRX
Copy link
Member

RPRX commented Apr 15, 2025

而且重复卖系统这件事最明显的就是,当初 Win10 说是最后一个大版本,以后只滚动更新,后来换人了就直接不认账了,Win11 很多人都说明显就是计划报废旧电脑,逼你买新电脑顺带强制重新买一份 Windows(笔记本,还没得选),带着厂商一起赢

@KobeArthurScofield
Copy link
Contributor Author

已经被背刺两次的 WP8 和 W10M 用户表示早已坐和放宽

@KobeArthurScofield
Copy link
Contributor Author

Go 1.25 和 Go 1.25 for Windows 7 已经准备好,随时可以升级。

距离 Go 官方发布不支持 ARM32 Windows 的 1.26 还有半年,那边已经在主分支删掉了支持 ARM32 Windows 的代码。如果确认后续也不再打算支持 ARM32 Windows 的话,从使用 Go 1.25 的第一版就可以考虑移除,建议最晚在发 v26 第一版前完成移除。

因为 ARM32 版本只有早期 Windows RT 设备以及数量不多的可以跑 Windows 的 ARM 盒子使用,Win10/11 已经支持 ARM64 的二进制,11 24H2 的WoA 甚至连跑 ARM32 二进制的能力都撤了,想测试的话基本要跑模拟器(没 Win7 好处理)。

如果不是现在立刻移除 ARM32 Windows 版本,可以考虑在 release note 提前标注。

@RPRX
Copy link
Member

RPRX commented Aug 13, 2025

半年后吧

@kristibektashi
Copy link

I just want to inform you that a version of go for ARM32 Windows will continue to be maintained on this fork: https://github.com/armdevvel/go, although support will be on a best effort basis.

@RPRX
Copy link
Member

RPRX commented Aug 23, 2025

开个 fork 支持 Win7 还可以理解,支持 Windows ARM32 是什么癖好

@KobeArthurScofield
Copy link
Contributor Author

也不能说没需求,但是维护一个分支 Go 每个大版本至少一个不同的 patch 来应对官方撤支持之后的不兼容改动,没对应条件也维护不了

@RPRX RPRX force-pushed the main branch 3 times, most recently from 8e4f881 to cbade89 Compare September 4, 2025 21:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants