jonnifyfsharp
C0.2.2

The platform's path

Framework → Core → unified .NET

One platform, three eras: Windows-only, then cross-platform, then one .NET.

The runtime under F# did not stand still. It began as the .NET Framework, a Windows-only, in-place platform. A second line, .NET Core, rebuilt it open and cross-platform. Then the two converged into one unified .NET on an annual cadence. For F# the consequence is concrete: it runs on Linux and macOS, builds with one command-line tool, and shares the platform's base library. This dive walks the documented release line and reads off what each era changed for the language.

Three eras of the platform

The platform's history falls into three bands. The .NET Framework era (2002–2019) was Windows-only and installed in place, one version at a time: 1.0 in 2002, 2.0 in 2005 (which added generics), 3.0 in 2006 (WPF, WCF, WF), 3.5 in 2007 (LINQ), 4.0 in 2010, and a last release at 4.8 in 2019. The .NET Core era opened in 2016 with a cross-platform, open-source, modular rebuild that runs on Windows, Linux, and macOS and installs side by side, driven by the dotnet command-line tool. The unified .NET era began with .NET 5 in November 2020 — the name dropped "Core", and one .NET carried forward, with even-numbered releases marked long-term support.

Select a release below to read its year, whether it ran cross-platform, whether it was open-source, and its headline feature.

The .NET release line · select a release

.NET Framework · Windows-only .NET Core · cross-platform unified .NET 2002 2005 2006 2007 2010 2019 2016 2019 2020 2021 2022 2023 in-place, one version side-by-side · annual
.NET Framework 1.0 · 2002 — The first release. Windows-only, closed-source, installed in place. The original CLR, the base class library, ASP.NET and Windows Forms. The platform F# would later be built on top of.

Even-numbered unified releases (.NET 6, .NET 8) carry long-term support; the platform ships a new major version each November. The years and versions here are the documented release line — Framework 1.0 (2002) through .NET 8 (2023).

Two lines became one: a Windows-only framework and a cross-platform rebuild converged into a single .NET that ships every year.

What cross-platform meant for F#

The move off Windows changed where and how F# is used. On the .NET Framework, F# ran where Windows ran. After .NET Core, the same F# code runs on Linux and macOS, which is why an F# service can be built in a container and deployed to a Linux host. The build experience unified too: one dotnet command-line tool restores, builds, runs, and tests an F# project on any supported operating system, and the base class library an F# program calls is the platform's shared library, not a Windows-specific one.

Two organisations sit in the background of this story. The .NET Foundation, established in 2014, is an independent steward for open-source .NET projects. And Mono, started by Miguel de Icaza around 2004, was an earlier independent cross-platform implementation of .NET — a precursor to the cross-platform direction the unified platform later took.

Platform change

.NET Core (2016) made the runtime cross-platform and open-source; .NET 5 (2020) unified the two lines.

For F#

F# now runs on Linux and macOS; the dotnet tool builds and runs it; the base class library is shared across the platform.

The platform's path is F#'s path: cross-platform .NET is what put F# on a Linux server and a Mac laptop, not only on Windows.

References

Sources

Related in this course