dotnet / dotnet/sdk

Stop producing Linux ARM32 SDK distributions in .NET 12

Open
#56,306 3 comments 0 reactions 0 assignees View on GitHub
Area-Linux breaking-change Feature Request
Dominant language
C#
Stars
3.2k
Forks
1.3k
PR merge metrics
PR metrics pending

Description

### Is your feature request related to a problem? Please describe.

We currently produce and publish native Linux ARM32 SDK distributions for GNU (`linux-arm`) and musl (`linux-musl-arm`) environments. Linux ARM32 remains important for deployed applications and long-lived embedded devices, but the available telemetry indicates that very few machines run the SDK itself natively on ARM32.

In rolling 30-day .NET CLI telemetry from August 16 through September 14, 2026:

| Cohort | Distinct machine identifiers | Share of all observed machines | Share of observed Linux machines |
|---|---:|---:|---:|
| All Linux ARM32 SDKs (`arm` + `musl-arm`) | 294 | 0.000526% | 0.000683% |
| GNU Linux ARM32 (`arm`) | 186 | 0.000333% | 0.000432% |
| musl Linux ARM32 (`musl-arm`) | 109 | — | — |

One machine used both variants, so the GNU and musl rows are not additive. The observed denominators were approximately 55.85 million distinct machine identifiers overall and 43.07 million on Linux.

The ARM32 population was primarily non-CI:

| Classification | Distinct machine identifiers | Share of ARM32 machines |
|---|---:|---:|
| Non-CI only | 261 | 88.78% |
| CI only | 12 | 4.08% |
| Both CI and non-CI | 2 | 0.68% |
| CI property unavailable | 19 | 6.46% |

These measurements deduplicate the `dotnet/cli/toplevelparser/command` event by its telemetry machine identifier. A machine identifier is not necessarily a unique person, and the overall population includes CI machines, so the percentages should be treated as directional. The absolute ARM32 count and the explicit CI classification provide additional context.

Continuing to build, test, sign, publish, and service native ARM32 SDK distributions has a cost disproportionate to this observed usage. Before making the change, we want to identify customers or workflows that have a hard dependency on running the SDK itself natively on Linux ARM32.

### Describe the solution you'd like

Starting with .NET 12, stop producing and publishing native Linux ARM32 SDK distributions. This includes:

- Stop producing the `linux-arm` and `linux-musl-arm` SDK archive artifacts.
- Remove the Linux ARM32 SDK entries from release download tables.
- Stop including Linux ARM32 SDK artifacts in `release.json` metadata.
- Remove Linux ARM32 SDK downloads from the .NET download page.

This proposal is limited to the native Linux ARM32 SDK distributions. It does not propose removing:

- Linux ARM32 runtime distributions or runtime support.
- The `linux-arm` or `linux-musl-arm` runtime identifiers.
- The ability to target or cross-publish Linux ARM32 applications from a supported SDK architecture.
- Linux ARM64 SDK or runtime distributions.

Artifacts for currently supported .NET releases would continue to follow their existing servicing lifecycle. The change would apply to .NET 12 and later.

### Feedback requested

If you depend on a native Linux ARM32 SDK, please describe:

- The scenario that requires the SDK process itself to run on ARM32 hardware.
- Whether you use the GNU (`linux-arm`) or musl (`linux-musl-arm`) distribution.
- Why an x64 or ARM64 SDK cannot be used to build or cross-publish the application.
- Whether the dependency is on the SDK archive, release metadata, download scripts, or another distribution surface.
- What migration time, documentation, or tooling would be required.

### Additional context

The broader question of dropping Linux ARM32 runtime support was discussed in dotnet/runtime#71042. The decision there was to retain Linux ARM32 runtime support after customers identified important embedded and industrial scenarios. This proposal is intentionally narrower: stop distributing SDKs that run natively on ARM32 while preserving the ability to build and run ARM32 applications.

Historical context for introducing the ARM32 SDK archives: #9360.

Related .NET 12 proposal for the Windows x86 SDK distribution: #56300.

Contributor guide

No contributing guide indexed for this repository

Research direction

Review how Linux ARM32 SDK archive artifacts are produced and then trace their release download tables, release.json metadata, and the .NET download page. Done means .NET 12 and later no longer publish native linux-arm or linux-musl-arm SDKs, while ARM32 runtime distributions, runtime identifiers, and cross-publishing remain available.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
build-system, cli, release
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.