Skip to content

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

Closed as not planned
Closed as not planned

Description

@dmitshur

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

  1. added this to the Backlog milestone on Dec 5, 2024
  2. gabyhelp commented on Dec 5, 2024

    @gabyhelp
  3. 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

  4. 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
  5. 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.

  6. 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?

  7. 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.

    Details
    $ 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.

  8. mcandre commented on Feb 11, 2025

    @mcandre
  9. gdams commented on Nov 11, 2025

    @gdams
    Contributor

    I'm guessing now that the port has been removed this likely isn't worth keeping open?

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

      Issue actions