Skip to content

The status/purpose of the i586-pc-windows-msvc target is unclear #137244

Closed
@beetrees

Description

@beetrees

Location

The platform support table.

Summary

i586-pc-windows-msvc is the non-SSE version of the i686-pc-windows-msvc target, added back in 2016 in #32034 when Rust supported Windows XP. Windows XP/Vista support was subsequently dropped in MCP 378, and Windows 7/8 support for then-existing targets was dropped in MCP 651. However, the platform support table entry for i586-pc-windows-msvc currently reads "32-bit Windows (original Pentium)" (with no std support), without specifying which version of Windows it targets.

Additionally, Windows hasn't supported pre-SSE2 CPUs since Windows 8, with Windows 7 apparently dropping support for pre-SSE2 CPUs in a March 2018 update. This means that for Windows 10+ i586-pc-windows-msvc is a footgun: it provides worse performance with more miscompilations (see #114479) without providing any greater CPU support, as the underlying OS requires SSE2 anyway.

The appears to be two possibilities:

  1. i586-pc-windows-msvc has a baseline of Windows 10+ - formally speaking I think this is the status quo, as MCP 651 raised "the minimum supported Windows version of current targets to Windows 10". At minimum, this would just require an update to the platform support page to explicitly state this. However, given the lack of purpose for this target on Windows 10+ as detailed above the target almost certainly fails the tier 2 target policy requirement that a target "must document [...] why the specific difference in baseline expectations provides sufficient value to justify a separate target", so should probably either be demoted to tier 3 or removed entirely (these would both require a MCP).
  2. i586-pc-windows-msvc has a baseline of an older Windows version (perhaps Windows 7 or Windows XP). In this case the target should be renamed (similar to the existing -win7- targets) to make explicit this lower baseline.

There aren't any target maintains listed for this target.

cc @ChrisDenton (author of the two Windows version MCPs)

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-docsArea: Documentation for any part of the project, including the compiler, standard library, and toolsA-targetsArea: Concerning the implications of different compiler targetsC-discussionCategory: Discussion or questions that doesn't represent real issues.O-windowsOperating system: WindowsO-x86_32Target: x86 processors, 32 bit (like i686-*) (IA-32)T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions