Fact-checked by Grok 2 weeks ago

Common Language Runtime

The Common Language Runtime (CLR) is a managed execution environment developed by Microsoft as the core component of the .NET Framework, responsible for loading, verifying, and executing code written in .NET-compatible programming languages such as C# and Visual Basic .NET. It provides essential services including automatic memory management via garbage collection, type safety enforcement, and cross-language interoperability through a unified type system and metadata format. The CLR operates by compiling source code into an intermediate form called (CIL), which is then just-in-time (JIT) compiled into native at runtime for optimal performance. This process, combined with features like structured , multithreading support, and code access security, enables developers to build robust, portable applications without directly managing low-level details such as memory allocation or thread synchronization. The runtime also facilitates , , and versioning to ensure reliable deployment and maintenance of software components. As an implementation of the open standard (ECMA-335), the CLR promotes language neutrality and has influenced alternative runtimes like Mono and .NET Core's CoreCLR. Introduced in February 2002 with .NET Framework 1.0 (CLR version 1.0), it evolved significantly with CLR 2.0 in 2005—adding generics and 64-bit support—and CLR 4.0 in 2010, which introduced dynamic language runtime enhancements and improved parallel programming capabilities; all .NET Framework versions from 4.0 onward continue to use CLR 4 as the foundational runtime.

History

Origins and Development

The development of the Common Language Runtime (CLR) originated in the late 1990s as a central element of Microsoft's Next Generation Windows Services (NGWS) project, which aimed to create a robust platform for distributed web services and applications amid growing demand for internet-centric computing. NGWS sought to overcome the complexities of prior Microsoft technologies like (COM) by introducing a managed runtime environment that automated tasks such as memory allocation and security enforcement, thereby improving developer efficiency and application reliability. This initiative was driven by the need to compete with emerging platforms like , while leveraging Windows as the primary host. On June 22, 2000, Microsoft announced the .NET platform, rebranding NGWS and highlighting the CLR as its execution engine for running code compiled to Common Intermediate Language (CIL) from diverse languages like C# and Visual Basic .NET. The CLR provided foundational services including just-in-time (JIT) compilation, garbage collection, and type verification to ensure secure and portable execution, with influences from the Java Virtual Machine but customized for seamless integration with Windows APIs and enterprise tools. A preview of the .NET Framework, featuring an early CLR implementation, was first shown at the Professional Developers Conference in July 2000, enabling initial developer feedback on its managed code model. To promote openness and interoperability, Microsoft submitted the Common Language Infrastructure (CLI) specification—encompassing the CLR's core mechanics—to in August 2000, resulting in its adoption and publication as ECMA-335 by December 2001 and subsequent ISO ratification in 2002. This standard defined the virtual execution system (VES) that the CLR implements, allowing for potential cross-platform implementations while maintaining compatibility with Microsoft's ecosystem. The CLR's maturation culminated in the release of .NET Framework 1.0 on February 13, 2002, introducing production-ready features like cross-language inheritance and remoting support.

Release History and Versions

The Common Language Runtime (CLR) debuted as version 1.0 alongside the .NET Framework 1.0 on February 13, 2002, establishing the foundational managed execution environment for .NET applications on Windows. This initial release supported just-in-time (JIT) compilation, garbage collection, and type safety for languages like C# and Visual Basic .NET, marking Microsoft's shift toward a unified platform for web, desktop, and enterprise development. CLR 1.1 followed with the .NET Framework 1.1 release on April 30, 2003, introducing enhancements such as improved performance, mobile device support via the .NET Compact Framework, and better compatibility, while maintaining backward compatibility with version 1.0 assemblies. These updates addressed early adoption feedback, enabling broader deployment in server environments. A significant evolution occurred with CLR 2.0, released on November 7, 2005, as part of .NET Framework 2.0. This version delivered substantial performance gains through improved compilation and garbage collection algorithms, alongside new features like generics for type-safe reusable code, enhanced security via Code Access Security (CAS) expansions, and better support for 64-bit architectures. CLR 2.0 powered subsequent .NET Framework releases—3.0 on November 6, 2006, which integrated Windows Presentation Foundation (WPF), (WCF), and (WF); and 3.5 on November 19, 2007, adding (LINQ) and AJAX-enabled —without altering the core runtime version, allowing seamless upgrades for developers. The final major CLR version, 4.0, launched with .NET Framework 4.0 on April 12, 2010, introducing dynamic language runtime () support for scripting languages like IronPython, and contravariance in generics, and a new concurrent garbage collector for better multicore scalability. From .NET Framework 4.5 (August 15, 2012) through 4.8.1 (August 9, 2022), all iterations have retained CLR 4, focusing instead on framework-level innovations such as asynchronous programming patterns in 4.5, improved diagnostics in 4.6, and accessibility enhancements in 4.8, with ongoing security and quality updates as of 2025, ensuring long-term stability for Windows-centric applications.

Architecture

Core Components

The Common Language Runtime (CLR) comprises several foundational components that enable the managed execution of code, providing services such as , , and interoperability across languages. At its core is the Common Type System (CTS), which defines how types are declared, used, and managed within the runtime. The CTS supports cross-language integration by establishing a unified object-oriented model that accommodates various programming languages, categorizing types into value types (such as structures and enumerations) and reference types (such as classes, , and delegates). It includes a set of primitive data types like and Int32, and enforces rules for , , and type interactions to ensure seamless object communication between languages. For instance, classes inherit from System.Object, while structures derive from System.ValueType and prohibit inheritance to optimize for small data structures. Complementing the CTS is the Common Language Specification (CLS), a subset of CTS rules designed to promote by standardizing the features exposed in public interfaces of assemblies. The CLS ensures that components developed in one .NET language, such as C#, can be reliably consumed by others, like , by mandating compliance with specific guidelines—such as using only CLS-compliant types (e.g., Int16 instead of UInt16) in signatures and ensuring exceptions derive from System.Exception. Compliance is enforced via the CLSCompliantAttribute, which compilers use to issue warnings for non-conforming elements, thereby facilitating the creation of reusable libraries without language-specific barriers. Another essential component is , which provides a comprehensive description of types, members, and assembly references embedded directly within portable executable (PE) files. Metadata enables the CLR to perform critical tasks like loading classes, resolving method calls, enforcing security policies, and managing object lifetimes without requiring separate type libraries. Every managed assembly contains this self-describing metadata, allowing the runtime to bind types dynamically and support versioning by verifying dependencies at load time. The execution pipeline relies on the and the Just-In-Time (JIT) compiler. Source code from CLR-targeted languages is first compiled into CPU-independent CIL bytecode, augmented with , and stored in assemblies. At runtime, the JIT compiler translates this CIL into native on a method-by-method basis, optimizing for the host processor while verifying to prevent invalid operations like unsafe memory access. This verification process, part of the CLR's model, ensures code adheres to runtime rules unless explicitly skipped via policy. Tools like NGen.exe can pre-compile CIL to native images for faster startup in certain scenarios. Finally, the garbage collector (GC) serves as the CLR's automatic memory manager, allocating objects on a managed and reclaiming memory from unreachable instances to prevent leaks. The GC operates across three generations—Gen 0 for short-lived objects, Gen 1 as a transitional buffer, and Gen 2 for long-lived ones—using a mark-and-sweep algorithm to identify live objects from roots like stack variables and static fields, followed by compaction to consolidate free space. Large objects are handled separately on the large object to minimize fragmentation. This generational approach balances performance by focusing collections on younger, more frequently allocated objects.

Execution Model

The execution model of the Common Language Runtime (CLR) provides a managed environment for running .NET applications, ensuring portability, security, and services like memory management across diverse platforms. It transforms high-level source code from languages such as C# or Visual Basic .NET into executable form through a series of steps, leveraging the Common Type System (CTS) to define consistent data types and the Common Language Specification (CLS) for interoperability between languages. This model contrasts with unmanaged execution by enforcing type safety and providing runtime services, allowing code to run in a controlled "sandbox" without direct hardware access. The process begins with compilation of using a CLR-targeted compiler, which generates CPU-independent (MSIL, also known as or CIL) and associated . , embedded within the resulting (PE) file, describes the types, members, and dependencies of the code, eliminating the need for separate type libraries like those in . serve as the fundamental unit of deployment and versioning in .NET, containing both the IL code and to enable self-description. Upon loading into the CLR—typically triggered by like the executable—the CLR extracts on demand to resolve types and dependencies. Assemblies are loaded into application domains (AppDomains), which act as isolated boundaries within a single process to provide , reliability, versioning, and the ability to unload code without terminating the entire application. This loading phase includes , where the locates and verifies the integrity of required assemblies using strong names for and versioning. Once loaded, the IL code undergoes verification to ensure , checking aspects such as memory access patterns, array bounds, and method call validity; this step can be skipped only under specific policies, such as full-trust environments. Verification helps prevent common errors like buffer overflows, contributing to the robustness of managed code. Just-in-time () compilation then converts the verified into native optimized for the host , occurring on a method-by-method basis as needed during execution to balance startup time and performance. The CLR's compiler, part of the execution engine, applies optimizations like inlining and tailored to the environment. For improved startup performance in production scenarios, tools like NGen.exe enable ahead-of-time (AOT) compilation, pre-generating native images stored in the Native Image Cache, though these may still require minor adjustments at due to dynamic factors. During execution, the runtime environment invokes the native code while providing essential services, including automatic via collection, management, enforcement through code access , and . The CLR's execution engine oversees these operations, ensuring that managed code interacts safely with the operating system and unmanaged resources via interoperability mechanisms like P/Invoke. This model supports cross-language development by enforcing CLS compliance, marked via attributes like CLSCompliantAttribute, allowing components written in different .NET languages to seamlessly integrate. Overall, the CLR's execution model enhances developer productivity by abstracting low-level details, focusing instead on reliable, portable application behavior.

Key Features

Memory Management and Garbage Collection

The Common Language Runtime (CLR) provides automatic through its garbage collector (), which handles the allocation and reclamation of memory for managed objects, eliminating the need for explicit deallocation by developers. This approach prevents common issues like memory leaks and dangling pointers, allowing focus on application logic while the GC optimizes performance based on observed allocation patterns. In the CLR, memory for reference types is allocated on a managed , a contiguous reserved per using Windows APIs like VirtualAlloc and VirtualFree. The CLR's GC employs a generational approach to improve efficiency, dividing the heap into three generations based on object survival rates: Generation 0 for newly allocated short-lived objects, Generation 1 as a buffer for objects promoted from Generation 0, and Generation 2 for long-lived objects. Generations 0 and 1, known as ephemeral generations, reside in a smaller segment (typically 16 MB on 32-bit workstation GC), enabling frequent, low-pause collections. A collection is triggered when the heap threshold is exceeded, physical memory is low, or explicitly via GC.Collect(). The process follows a mark-and-sweep algorithm: marking identifies live objects starting from roots (e.g., stack variables, CPU registers, static fields), sweeping reclaims memory from unreachable objects, and compaction rearranges live objects to eliminate fragmentation, updating references accordingly. Large objects, defined as those 85,000 bytes or larger (such as large arrays), are allocated on a separate large object heap (LOH) within Generation 2 to avoid the high cost of compaction during frequent collections. The LOH is collected concurrently with Generation 2 but is not compacted by default, relying instead on a free list for reuse; however, compaction can be enabled via GCSettings.LargeObjectHeapCompactionMode for the next full blocking GC in .NET Framework 4.5.1 and later. Best practices recommend pooling and reusing large objects to minimize allocations and fragmentation. To reduce pause times, the CLR supports background garbage collection for Generation 2, where a dedicated thread performs the collection concurrently with application execution, suspending managed threads only briefly for ephemeral generations as needed. This feature, enabled by default, is available in workstation GC (one thread since .NET Framework 4) and server GC (one thread per logical processor since .NET Framework 4.5), with server mode offering non-timeout threads for better scalability on multi-core systems. Background GC enhances responsiveness in latency-sensitive applications by allowing the heap to expand and ephemeral collections to occur opportunistically during Generation 2 work. In .NET 9 (released November 2024), garbage collection introduced Dynamic Adaptation to Application Sizes (DATAS) as the default mode, dynamically adjusting heap limits based on long-lived object patterns for improved memory efficiency over traditional server GC configurations.

Type Safety, Security, and Exception Handling

The Common Language Runtime (CLR) enforces through its (CTS) and a during just-in-time (JIT) compilation. The CTS defines rules for declaring, using, and managing types across languages, ensuring consistent behavior for primitive data types like and Int32, as well as complex structures such as classes and . This framework promotes type compatibility via and interface implementation, preventing invalid type interactions that could lead to runtime errors. During the managed execution , the CLR verifies (CIL) code and metadata to confirm that it accesses only authorized locations and adheres to type definitions, thereby isolating objects and avoiding corruption. If verification fails but the code is deemed type-safe by policy, the CLR may allow execution but could throw exceptions for non-compliant operations. This , which uses delegates instead of function pointers, enhances both and by eliminating direct manipulation risks. Security in the CLR has evolved significantly, initially relying on Code Access Security (CAS) to grant permissions to assemblies based on evidence like origin and publisher. Under CAS, the runtime evaluated code evidence to enforce a stack walk, demanding permissions for sensitive operations and preventing untrusted code from accessing restricted resources. played a crucial role here, as verified code could be sandboxed within application domains, providing process-level at lower cost. In .NET Framework 4 and later, CAS policy was disabled by default, shifting to full trust for unhosted applications while introducing Level 2 Security to categorize code as transparent (untrusted, no security-critical actions), security-critical (privileged operations), or safe-critical (bridging the two). However, CAS has been fully deprecated across .NET Framework and modern .NET versions, with related APIs marked obsolete and no longer honored, emphasizing instead OS-level , libraries, and role-based access. In contemporary .NET (post-.NET Core), continues to underpin by enabling reliable and preventing common vulnerabilities like overflows. In .NET 9 (released November 2024), the runtime enables Control-flow Enforcement Technology (CET) by default on Windows, providing hardware-based protection against (ROP) exploits to further enhance execution . The CLR supports robust exception handling through a structured model that integrates with language-specific syntax while maintaining consistency across implementations. Exceptions, represented as objects deriving from System.Exception, are thrown for errors and propagated up the call stack until caught or causing application termination. This mechanism uses try-catch-finally blocks (or equivalents) to handle faults, with the runtime searching for compatible catch handlers based on exception type hierarchy. Cross-language support ensures exceptions thrown in one .NET language can be handled in another, facilitated by metadata that preserves type information. The CLR also integrates with Windows Structured Exception Handling (SEH) for unmanaged interop, allowing managed code to catch native exceptions and vice versa, though this requires careful handling to avoid security risks. In multithreaded scenarios, unhandled exceptions in worker threads propagate to the thread pool or terminate the application, promoting reliable error recovery without silent failures. In .NET 9 (released November 2024), exception handling was optimized for 2-4 times faster performance, with Windows SEH support removed except on x86 architectures.

Threading and Interoperability

The Common Language Runtime (CLR) provides robust support for multithreading, enabling developers to create scalable and responsive applications by executing operations concurrently on multiple threads. Managed threads in the CLR are created and controlled using the System.Threading.Thread class, which abstracts the underlying operating system threads and ensures integration with CLR services such as garbage collection and exception handling. Each managed thread maintains its own execution context, including a call stack and local state, while the CLR scheduler allocates processor time based on thread priority and system resources. To optimize performance, the CLR includes a managed thread pool via the System.Threading.ThreadPool class, which maintains a pool of worker threads to handle short-lived tasks without the overhead of frequent thread creation and destruction. This pool dynamically adjusts its size based on workload, starting with a minimum number of threads (typically one per processor) and growing as needed, up to a maximum to prevent excessive context switching. Synchronization is a core aspect of CLR threading to prevent race conditions and ensure data integrity in multithreaded environments. The CLR offers primitives such as the lock statement (which uses Monitor.Enter and Monitor.Exit under the hood) for mutual exclusion, as well as more advanced options like Mutex, Semaphore, and ReaderWriterLockSlim for coordinating access to shared resources. These mechanisms are designed to minimize contention, with recommendations to use short critical sections and avoid nested locks to prevent deadlocks. For cooperative cancellation, the CLR supports CancellationToken since .NET Framework 4, allowing threads to check for cancellation requests periodically without abrupt termination, which is safer than the deprecated Thread.Abort method. In multi-core systems, the CLR's thread pool incorporates work-stealing queues in later versions to balance load across processors, improving throughput by reducing lock contention in scenarios like bursty workloads. Best practices emphasize using higher-level abstractions like the Task Parallel Library (TPL) for most scenarios, as it handles thread management automatically and supports asynchronous patterns. Interoperability in the CLR facilitates seamless integration between managed code written in different .NET languages and legacy unmanaged code, leveraging a unified execution model. Cross-language interoperability is achieved through the (CTS), which defines rules for types, inheritance, and object layout, allowing classes defined in one language (e.g., C#) to be inherited or instantiated in another (e.g., VB.NET) without recompilation. embedded in assemblies describes types and members, enabling the CLR to enforce compatibility and support passing objects across language boundaries as if they were native to the calling language. This promotes code reuse and modular development, with the CLR handling method calls, property access, and exception propagation uniformly across languages. For interaction with native (unmanaged) code, the CLR provides (P/Invoke) via attributes like [DllImport] or the newer [LibraryImport] (introduced in .NET 7), which allow managed code to call functions in native DLLs directly. The CLR's marshaler automatically converts data types between managed and unmanaged representations, supporting blittable types (e.g., integers) that require no conversion for performance, while handling complex types like strings and arrays through attributes such as [MarshalAs]. (COM) interoperability is facilitated by runtime callable wrappers (RCWs) and type libraries, enabling .NET applications to consume COM objects and expose managed objects to COM clients via COM-callable wrappers (CCWs). Best practices include using SafeHandle for managing unmanaged resource lifetimes to avoid memory leaks, wrapping P/Invoke calls in dedicated classes, and minimizing marshaling overhead by preferring structs over classes for native structures. These features ensure secure and efficient bridging, with the CLR enforcing and garbage collection even across boundaries.

Modern Implementations and Evolution

CLR in .NET Framework

The Common Language Runtime (CLR) serves as the foundational execution engine within the .NET Framework, managing the lifecycle of managed code and providing essential services to simplify development and enhance application reliability. Introduced with the initial release of .NET Framework 1.0 in 2002, the CLR enables developers to write applications in multiple languages that compile to a , which it then just-in-time (JIT) compiles to native for execution. This architecture allows for seamless cross-language and abstracts platform-specific details, making .NET Framework applications more portable within Windows environments. At its core, the CLR in .NET Framework consists of several key components that form the (CLI). , embedded in (PE) files, describes program structures such as types, members, and references, enabling the runtime to load and verify assemblies dynamically. The (CTS) defines rules for creating, using, and managing types across languages, ensuring consistent behavior for value types, reference types, and interfaces. Additionally, the (CIL) provides a platform-agnostic instruction set that compilers target, which the CLR's translates at runtime for optimal performance on the host processor. These elements collectively support the managed execution model, where the CLR handles resource allocation, code verification, and security enforcement before execution begins. The execution process in the .NET Framework CLR begins with the host environment—such as the operating system or a loader—initializing the and creating application domains for isolation. Upon loading an , the CLR verifies the IL code for type safety and performs compilation, converting it to native code only when methods are invoked, which balances startup speed with efficiency. Key services include automatic via a generational garbage collector that traces and reclaims unreachable objects, preventing common issues like memory leaks and dangling pointers. Security is enforced through the Code Access Security (CAS) model, which uses to grant or deny permissions based on code origin and evidence, mitigating risks from untrusted assemblies. Threading support allows for managed multithreading with synchronization primitives, while provides structured error propagation across language boundaries. Interoperability with unmanaged code is facilitated through platform invocation (P/Invoke) and COM interop, enabling legacy integration without full rewriting. Over the evolution of .NET Framework, the CLR has seen targeted enhancements while maintaining . Early versions (1.0 and 1.1) introduced foundational features like side-by-side execution for multiple applications. Starting with in 2005, the CLR added support for generics, improved garbage collection, and became the base for subsequent releases up to 3.5, which built incrementally without altering the CLR version. From 4.0 onward (2010), the CLR introduced side-by-side hosting within processes, allowing multiple CLR instances to coexist, and supported in-place updates for minor versions, ensuring applications targeting later frameworks require the updated runtime. The following table summarizes CLR versions across .NET Framework releases:
.NET Framework VersionCLR Version
1.01.0
1.11.1
2.0, 3.0, 3.52.0
4.0 to 4.8.14.0
This versioning strategy minimizes conflicts, with CLR 4.0 and later emphasizing performance optimizations like background collection and better 64-bit support, solidifying the runtime's role in Windows applications.

CoreCLR and Cross-Platform .NET

CoreCLR, or the Core Common Language Runtime, serves as the foundational runtime environment for .NET Core, an open-source, modular implementation of the .NET platform designed specifically for cross-platform application development. It executes managed code written in languages like C# and F#, handling core functions such as just-in-time (JIT) compilation, garbage collection, and exception management while abstracting platform-specific details. Unlike the full .NET Framework CLR, which was Windows-centric, CoreCLR was engineered from the outset to support deployment on diverse operating systems, enabling developers to build and run applications consistently across environments without code modifications. The development of CoreCLR began in 2014 as part of Microsoft's initiative to modernize .NET for cloud-native and serverless workloads, with its open-source release announced on February 3, 2015, under the via . This move marked a significant shift, allowing community contributions and fostering interoperability with projects like Mono, while prioritizing performance optimizations for high-throughput scenarios. The first stable release of .NET Core 1.0, powered by CoreCLR, arrived in June 2016, introducing support for Windows, (including distributions like and ), and macOS on x64 and x86 architectures. Subsequent versions expanded hardware compatibility to include Arm64, enhancing its viability for and mobile devices. At its core, CoreCLR comprises essential components that ensure portability and efficiency, including the RyuJIT compiler for generating optimized , a generational mark-and-sweep garbage collector tuned for low-latency applications, and foundational class libraries for primitives like threading and I/O operations. These elements are packaged in a lightweight footprint—typically under 50 MB for the —compared to the larger .NET Framework, facilitating containerized deployments in environments like . Cross-platform capabilities are achieved through platform abstraction layers (PALs) that map .NET APIs to native system calls, allowing a single codebase to target multiple runtime identifiers (RID), such as win-x64, linux-x64, or osx-arm64. This design promotes "" semantics, with self-hosting in C# for easier maintenance and extension. The evolution of CoreCLR has been integral to the unification of the .NET ecosystem, culminating in .NET 5 (November 2020), where .NET Core became the single .NET platform, deprecating the separate .NET Framework for new development. Today, CoreCLR powers modern .NET versions up to .NET 10 (November 2025), supporting advanced features like ahead-of-time (AOT) compilation via Native AOT for reduced startup times and smaller binaries, particularly beneficial for cross-platform scenarios in web, desktop, and cloud applications. Its open-source nature has driven innovations, such as improved integration and support, solidifying .NET's role in landscapes.

References

  1. [1]
    Common Language Runtime (CLR) overview - .NET - Microsoft Learn
    The Common Language Runtime (CLR) is a .NET runtime environment that runs code and provides services, enabling managed code with features like cross-language ...
  2. [2]
    ECMA-335 - Ecma International
    This Standard defines the Common Language Infrastructure (CLI) in which applications written in multiple high-level languages can be executed in different ...
  3. [3]
    NET Framework & Windows OS versions - Microsoft Learn
    Each version of .NET Framework contains the common language runtime (CLR), the base class libraries, and other managed libraries. This article describes the ...Version Information · . Net Framework 3.5 · Remarks For Version 4.5 And...
  4. [4]
    .NET Framework - History and Advantages - ByteScout
    During the development phase in the late 90s, the .NET framework was given the name “Next Generation Windows Services” shorthand notation was NGWS. Microsoft ...
  5. [5]
    What's the early history of the .Net framework? - Stack Overflow
    Jul 5, 2009 · Microsoft started development on the .NET Framework in the late 1990s originally under the name of Next Generation Windows Services (NGWS).Missing: origins | Show results with:origins
  6. [6]
    Microsoft Unveils Vision for Next Generation Internet - Source
    Jun 22, 2000 · This new family of Microsoft .NET products and technologies replaces the previous working title of Next Generation Windows Services (NGWS) ...Missing: framework | Show results with:framework
  7. [7]
    Ecma standards for .NET - Microsoft Learn
    The C# Language and the Common Language Infrastructure (CLI) specifications are standardized through Ecma International®.
  8. [8]
    .NET Framework - Versions of .NET
    Releases ; 4.8.1, Released on 2022-08-09, CLR Version: 4, Included in Windows ️ 11 September 2022 Release (version 22621), Included in Windows Server ️ 2025 ; 4.8 ...<|control11|><|separator|>
  9. [9]
    Microsoft .NET Framework - Microsoft Lifecycle
    Support Dates. Listing, Start Date, End Date. Microsoft .NET Framework, 2006-02-17T00:00:00.000-08:00, See Note. Releases. Version, Start Date, End Date .NET ...
  10. [10]
    Common Type System - .NET - Microsoft Learn
    Jan 3, 2024 · The common type system defines how types are declared, used, and managed in the common language runtime.Types In . Net · Enumerations · Type Members
  11. [11]
    Language independence and language-independent components
    Dec 20, 2022 · This common set of features is defined by the Common Language Specification (CLS), which is a set of rules that apply to generated assemblies.Cls Compliance Rules · Types And Type-Member... · Generic Types And Members
  12. [12]
    Managed Execution Process - .NET - Microsoft Learn
    Apr 20, 2024 · The common language runtime provides the infrastructure that enables managed execution to take place and services that can be used during ...Compile To Cil · Compile Cil To Native Code · Code Verification
  13. [13]
    Fundamentals of garbage collection - .NET | Microsoft Learn
    In the common language runtime (CLR), the garbage collector (GC) serves as an automatic memory manager. The garbage collector manages the allocation and ...Fundamentals Of Memory · The Managed Heap · GenerationsMissing: components metadata
  14. [14]
    NET garbage collection - Microsoft Learn
    Sep 15, 2021 · .NET's garbage collector manages the allocation and release of memory for your application. Each time you create a new object, the common language runtime ...
  15. [15]
    Large object heap (LOH) on Windows - .NET
    ### Summary of Large Object Heap in CLR GC
  16. [16]
    Background garbage collection - .NET
    ### Summary of Background Garbage Collection in CLR
  17. [17]
    .NET Security: The Security Infrastructure of the CLR | Microsoft Learn
    The common language runtime of the .NET Framework has its own secure execution model that isn't bound by the limitations of the operating system it's running ...
  18. [18]
    Exploring the .NET Framework 4 Security Model - Microsoft Learn
    The .NET Framework 4 boasts a simpler, improved security model that makes it easy for hosts and libraries to sandbox code and libraries to safely expose ...
  19. [19]
    Most code access security APIs are obsolete - .NET - Microsoft Learn
    Most code access security (CAS)-related types in .NET are now obsolete as warning. This includes CAS attributes, such as SecurityPermissionAttribute, CAS ...Change description · Reason for change
  20. [20]
    Security in .NET - Microsoft Learn
    Sep 15, 2021 · The common language runtime and .NET provide many useful classes and services that enable developers to write secure code, use cryptography, and implement role ...
  21. [21]
    Handling and throwing exceptions in .NET - Microsoft Learn
    Sep 15, 2021 · Learn how to handle and throw exceptions in .NET. Exceptions are how .NET operations indicate failure to applications.
  22. [22]
    Exception-handling statements - throw and try, catch, finally - C# ...
    Aug 19, 2025 · When an exception is thrown, the common language runtime (CLR) looks for the catch block that can handle this exception. If the currently ...
  23. [23]
    Exceptions in Managed Threads - .NET | Microsoft Learn
    Jun 1, 2022 · The common language runtime allows most unhandled exceptions in threads to proceed naturally. In most cases, this means that the unhandled exception causes the ...
  24. [24]
    Threads and threading - .NET - Microsoft Learn
    Mar 11, 2022 · A thread is the basic unit to which an operating system allocates processor time. Each thread has a scheduling priority and maintains a set of structures.
  25. [25]
    The managed thread pool - .NET | Microsoft Learn
    Sep 15, 2021 · The System.Threading.ThreadPool class provides your application with a pool of worker threads that are managed by the system.Thread Pool Characteristics · Thread Pool Minimums · Using The Thread Pool
  26. [26]
    Managed Threading Best Practices - .NET - Microsoft Learn
    Jun 1, 2022 · To prevent the execution of code on a type that is not initialized, the common language runtime blocks all calls from other threads to static ...Deadlocks And Race... · Race Conditions · General Recommendations
  27. [27]
    Using threads and threading - .NET | Microsoft Learn
    Oct 4, 2022 · Learn about using threads and threading in .NET, so you can write applications to perform many operations at the same time (multithreading).How To: Create And Start A... · How To: Stop A Thread · Thread Properties
  28. [28]
    CLR Inside Out: Thread Management In The CLR - Microsoft Learn
    Threading in the CLR is an example of a concurrent environment where many factors (such as those introduced by multiple-core architectures) can influence the ...
  29. [29]
    Native interoperability best practices - .NET - Microsoft Learn
    Jul 9, 2025 · .NET gives you various ways to customize your native interoperability code. This article includes the guidance that Microsoft's .NET teams follow for native ...
  30. [30]
    Overview of .NET Framework - Microsoft Learn
    Mar 29, 2023 · .NET Framework consists of the common language runtime (CLR) and the .NET Framework class library. The common language runtime is the foundation ...
  31. [31]
    dotnet/coreclr - GitHub
    Jan 23, 2023 · CoreCLR is the runtime for .NET Core. It includes the garbage collector, JIT compiler, primitive data types and low-level classes.
  32. [32]
    Introduction to .NET - Microsoft Learn
    Jan 10, 2024 · .NET is a free, cross-platform, open-source developer platform for building many kinds of applications. It can run programs written in multiple languages.
  33. [33]
    NET Core - .NET Goes Cross-Platform with .NET Core
    First, .NET Core is cross-platform. It runs on Windows, OS X and multiple distributions of Linux. It also supports different CPU architectures. We're ...
  34. [34]
    CoreCLR is now Open Source - .NET Blog
    Feb 3, 2015 · We're excited to announce that CoreCLR is now open source on GitHub. CoreCLR is the .NET execution engine in .NET Core, performing functions ...Missing: documentation | Show results with:documentation
  35. [35]
    Microsoft .NET and .NET Core - Microsoft Lifecycle
    Beginning with .NET 5.0, Microsoft .NET Core has been rebranded as .NET. ASP.NET Core and Entity Framework Core follow the same lifecycle as .NET Core.
  36. [36]
    NET is a cross-platform runtime for cloud, mobile, desktop ... - GitHub
    This repo contains the code to build the .NET runtime, libraries and shared host ( dotnet ) installers for all supported platforms.Issues · Activity · Releases 146