Skip to content

build: windows/arm (32-bit ARM) port is broken #70705

Open
@dmitshur

Description

@dmitshur
Member

The Go porting policy has a section on broken ports, https://go.dev/wiki/PortingPolicy#broken-ports. The GOOS=windows GOARCH=arm (not arm64) port was marked broken in August 2024 (CL 601777) for the following reasons:

This is an umbrella issue to track the status of the port.

CC @golang/windows, @golang/release.

Activity

added this to the Backlog milestone on Dec 5, 2024
gopherbot

gopherbot commented on Dec 5, 2024

@gopherbot
Contributor

Change https://go.dev/cl/634077 mentions this issue: _content/doc/go1.24: document broken windows/arm port

added
NeedsDecisionFeedback is required from experts, contributors, and/or the community before a change can be made.
NeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.
and removed
NeedsDecisionFeedback is required from experts, contributors, and/or the community before a change can be made.
on Dec 6, 2024
qmuntal

qmuntal commented on Dec 9, 2024

@qmuntal
Member

IMO, the important fact here is that windows/arm32 has been broken since Go 1.17 and nobody complained until now, almost 4 years later. Additionally, Windows 11 no longer supports arm32, not even via arm64 to arm32 emulation. From https://learn.microsoft.com/en-us/windows/arm/arm32-to-arm64:

Windows devices running on an Arm processor (for example, Snapdragon processors from Qualcomm) will no longer support AArch32 (Arm32).

Given these facts, I'm inclined to remove the windows/arm32 port altogether. This will also help making the Windows port easier to maintain, as it's one less architecture to touch when refactoring the compiler and the runtime.

mcandre

mcandre commented on Feb 11, 2025

@mcandre

Please elide broken platforms from go tool dist list.

That mechanism can act as a single source of truth for working platforms, so that dev utilities like factorio can function without requiring constantly republishing manual lists of broken ports.

https://github.com/mcandre/factorio

Could there be a Go stdlib API member, so we don't need to shell out every time?

dmitshur

dmitshur commented on Feb 11, 2025

@dmitshur
MemberAuthor

@mcandre go tool dist list already leaves out broken ports by default. Broken ports can be listed too by passing in the -broken flag.


$ go version
go version go1.24.0 darwin/arm64
$ go tool dist list | grep windows/arm
windows/arm64
$ go tool dist list -broken | grep windows/arm
windows/arm
windows/arm64

$ GOTOOLCHAIN=go1.17.13 go tool dist list | grep windows/arm
windows/arm
windows/arm64

That was issue #56679.

There's no package in the standard library that's a good fit for this, and this information can changes only in major Go releases, so at most once every 6 month, so executing a cmd/dist shouldn't be too onerous. If you still think there's more to do, please file a separate issue for that, since this issue is about the window/arm port specifically. Thanks.

mcandre

mcandre commented on Feb 11, 2025

@mcandre

5 remaining items

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    NeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.OS-Windowsarch-armIssues solely affecting the 32-bit arm architecture.umbrella

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @mcandre@mknyszek@dmitshur@qmuntal@gopherbot

        Issue actions

          build: windows/arm (32-bit ARM) port is broken · Issue #70705 · golang/go