Module C0.2
The .NET runtime & the open-source turn
A language is half ideas, half platform. This is F#'s platform.
F#'s first inheritance is its lineage — the ML family of typed, functional languages. Its second is its platform. F# targets .NET: the same managed runtime, the same type system, and the same libraries as C#. That choice gave F# garbage collection, a JIT compiler, and a vast base class library on day one — and it tied F#'s fortunes to the platform's own. This module follows .NET from a Windows-only framework to one cross-platform runtime, and follows F# from a Microsoft Research project to an open, community-stewarded language.
What the runtime gives F#
A functional language needs a home: somewhere to allocate values, reclaim them, and call into a library of useful code. F# did not build that home. It moved into one already standing — the Common Language Runtime, the managed virtual machine that also runs C# and Visual Basic. Three things came with the address.
Managed memory. The runtime allocates on a garbage-collected heap and reclaims unreachable values. F#'s immutable values and short-lived intermediate results lean on that collector rather than on manual memory management. A shared type system. An F# record is a .NET object; an F# function value is a .NET delegate-like object. The Common Type System is one vocabulary across every .NET language, which is why F# can call a C# library directly. Interop. The whole base class library — collections, IO, networking, dates, JSON — is available to F# unchanged, because it is the platform's library, not C#'s.
Select a column below to see what each one carries.
What .NET gives F# · select a pillar
The CLR allocates F# values on a garbage-collected heap and reclaims the unreachable ones. Immutable values and short-lived intermediates rely on the collector, not on manual frees.
F# brought the ideas; .NET supplied the floor under them — memory, a type system, and a library too large to rewrite.
The three dives
One module, three dives. The first looks at the runtime itself — how F# source becomes running code. The second traces the platform's evolution from a Windows-only framework to one cross-platform .NET. The third covers the open-source turn: the F# Software Foundation and the community that stewards the language alongside Microsoft.
The CLR — managed execution & interop
Source → CIL in an assembly → JIT → native code. One intermediate language, one type system, two languages.
Framework → Core → unified .NET
From Windows-only .NET Framework (2002) to cross-platform .NET Core (2016) to one unified .NET (2020).
The F# Software Foundation & the community
The non-profit, the open compiler at dotnet/fsharp, the RFC process, and the ecosystem around it.
Read them in order: the machine that runs the code, the platform's path to cross-platform, then the people who keep the language open.
References
Sources
- Microsoft — .NET documentation — the runtime, the CLR, and the platform overview.
- Microsoft — F# documentation — how F# sits on .NET, and the language guide.
- The F# Software Foundation — the language's home, history, and community.
Related in this course
- C0.2.1 — The CLR — managed execution, the common type system, interop.
- C0.2.2 — The evolution of .NET — Framework to Core to unified .NET.
- C0.2.3 — The F# Software Foundation — the open community.
- C0 · History — the chapter landing.
- Elixir F0.2 — the evolution of the runtime — the BEAM's story, a contrast to the CLR.