Common language runtime (CLR)
Dans le cadre du .NET Framework de Microsoft, le Common Language Runtime (CLR) est le programme qui gère l'exécution des programmes écrits dans les différents langages pris en charge, afin qu'ils puissent partager des classes orientées objet courantes écrites dans n'importe lequel de ces langages. Dans une certaine mesure, le CLR est comparable à la machine virtuelle Java que fournit Sun Microsystems pour l'exécution des programmes compilés en Java. Microsoft le décrit comme un « environnement d'exécution géré ». Un programme compilé pour le CLR n'a pas besoin d'un environnement d'exécution propre à un langage particulier. Il peut facilement être déplacé vers tout système exécutant Windows 2000 ou Windows XP et s'y exécuter.
Les programmeurs en Visual Basic, Visual C++ ou C# compilent une forme de code intermédiaire dite CIL (Common Intermediate Language) de leurs programmes dans un fichier PE (portable execution), gérable et exécutable par le CLR. Lors de la compilation, le programmeur et l'environnement fournissent des informations descriptives sur le programme, informations qui sont stockées sous forme de métadonnées avec le programme compilé. Ces métadonnées stockées dans le programme compilé indiquent au CLR le langage utilisé, sa version et les bibliothèques de classes nécessaires. Avec le CLR, une instance d'une classe écrite dans un langage peut appeler une méthode d'une classe écrite dans un autre langage. Le CLR fournit en outre des services de récupération de mémoire (il rend la mémoire non utilisée à l'ordinateur), de traitement des exceptions et de débogage.