Infrastructura limbajului comun (CLI) este un set de standarde tehnice internaționale care promovează interoperabilitatea limbajului de programare pentru calculatoare. CLI permite, de asemenea, multor limbaje de nivel înalt să dezvolte aplicații care sunt independente de platforme și arhitecturi. Există mai mult de 30 de limbaje de programare grupate în acest scop și utilizând patru divizii de specificații de programare în limbaj comun pentru a deveni compatibil CLI.
Folosirea a ceea ce se numește un sistem de tip comun (CTS), folosind un set de tipuri de date și operațiuni și informații despre metadate privind structurile de programare permite scrierea codului în mai multe limbi. CLI compilează limbaje într-un limbaj intermediar comun (CIL), iar din CIL, comunică aspectele aplicației către limbajul mașinii de asamblare, care se adresează hardware-ului. În plus, există specificații comune de limbaj (CLS), care sunt reguli de bază stabilite pentru utilizare de către orice limbă care caută interoperare și un sistem de execuție virtuală (VES) pentru încărcarea, execuția și generarea codurilor de rulare pentru toate programele compatibile cu CLI. .
Majoritatea limbajelor compatibile cu CLI se compilează direct în CIL prin utilizarea Common Language Runtime (CLR). După ce a fost compilat și stocat în cache, un compilator just-in-time își însușește apoi codul mașinii din arhitectura existentă. Construcția codului mașinii de asamblare poate fi, de asemenea, construită înaintea CLR cu un compilator anticipat.
Pentru ca limbajele compatibile CLI să profite de specificitatea obiectului, infrastructura limbajului comun specifică faptul că obiectele trebuie să expună doar caracteristicile pe care le au în comun cu celelalte limbaje compatibile cu CLI atunci când sunt apelate. Componentele de cod dezvoltate pentru a utiliza numai tipuri de date acceptate în CTS se spune că sunt compatibile cu CLI și sunt accesibile pentru toate celelalte limbaje compatibile cu CLI. În plus, orice construcție a unui limbaj care nu poate fi verificată rapid prin siguranța tipului codului este exclusă din CLS, astfel încât doar codurile verificabile se pot spune că sunt conforme cu CLS.
Unele caracteristici de programare sunt comune atât pentru compilatori, cât și pentru dezvoltatori, iar altele sunt disponibile numai pentru compilatori. Lista este lungă și plină de funcții utile. O caracteristică disponibilă numai pentru compilatori este: cuvinte cheie care furnizează identificatori de referință și care pot suprascrie metodele virtuale cu nume care sunt cuvinte cheie. O caracteristică disponibilă atât pentru compilatori, cât și pentru dezvoltatori include: caracteristici modificatoare care spun că o proprietate, precum și evaluatorii săi trebuie să fie toate „statice”, trebuie să fie toate „virtuale”, toate trebuie să fie „instanță”.
Programele de implementare sunt pentru desktop-uri, servere, dispozitive mobile și console de jocuri. Programele de îmbunătățire a vederii computerizate și seturile de instrumente virtuale de nivel scăzut sunt, de asemenea, dezvoltate din limbaje compatibile cu infrastructura limbajului comun. Runtimele infrastructurii de limbaj comun alocă resurse de sistem și apelează eficient dispozitivele periferice, deși sunt independente de platformă.