Skip to content

Update .NET Linux Build for .NET 10 #109939

@richlander

Description

@richlander

The Microsoft distribution of .NET is built to be compatible with the broad Linux ecosystem. We decide and communicate minimum supported distro versions with each release, first to get feedback, and then to set expectations. Distro compatibility is an important property of each release.

Minimum compatible distros:

We model compatibility on Ubuntu for glibc distros and Alpine for musl distros.

This means that .NET 10 apps will run on Alpine 3.17 and Ubuntu 18.04 and later (and other compatible distro versions). They will not run on distros versions before that (like Ubuntu 16.04), while .NET 8 and 9 apps will.

If an app is run on a distro with an older libc than the .NET build targets, the app will fail to launch with errors related to missing libc exports.

We have communicated similar plans for .NET 8 and .NET 9.

Details

The Microsoft distribution for .NET 10 is built in an Azure Linux 3.0 container and targets the minimum supported distro using cross-compilation techniques. The approach we use is covered in more detail in Linux build methodology.

It is important that we continue to move the minimum supported versions forward so that we can securely build .NET and to take advantage of low-level capabilities that are present in newer libc versions. For example, we were forced to do that Arm32.

The versions listed in this document are a compatibility not support statement. Supported distros and versions are provided separately.

glibc compatibility

Ubuntu 18.04 includes glibc version 2.27.

The following distro versions (and higher) are compatible:

  • AlmaLinux 8: 2.28
  • Amazon Linux 2023: 2.34
  • Arch Linux 20241027.0.273886: 2.40
  • CentOS Stream 9: 2.34
  • Debian 11: 2.31
  • Fedora 38: 2.37
  • RHEL 8: 2.28

Recent Ubuntu glibc versions:

  • Ubuntu 24.04: 2.39
  • Ubuntu 22.04: 2.35
  • Ubuntu 20.04: 2.31
  • Ubuntu 18.04: 2.27
  • Ubuntu 16.04: 2.23

musl compatibility

Alpine 3.17 includes musl version 1.2.3.

The following distro versions (and higher) are compatible:

  • None listed; please contribute non-Alpine distros you use.

Recent Alpine musl versions:

  • Alpine 3.20: 1.2.5
  • Alpine 3.19: 1.2.4
  • Alpine 3.18: 1.2.4
  • Alpine 3.17: 1.2.3
  • Alpine 3.16: 1.2.3
  • Alpine 3.15: 1.2.2
  • Alpine 3.14: 1.2.2
  • Alpine 3.13: 1.2.2

Toolset

The Microsoft build uses a variety of tools. This choice is most relevant for distros that build .NET from source and want to use the same or similar tool versions to ensure compatible results. It can also be important for users that want to understand if an observed behavior is due to known issues with those tools.

Tools:

  • clang 20
  • cmake 3.26

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Done

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions