L’infrastruttura del linguaggio comune (CLI) è un insieme di standard tecnici internazionali che promuovono l’interoperabilità del linguaggio di programmazione dei computer. La CLI consente inoltre a molti linguaggi di alto livello di sviluppare applicazioni indipendenti da piattaforme e architetture. Esistono più di 30 linguaggi di programmazione raggruppati per questo scopo e che utilizzano quattro divisioni delle specifiche di programmazione del linguaggio comune per diventare conformi alla CLI.
L’utilizzo di quello che viene chiamato sistema di tipo comune (CTS), utilizzando un insieme di tipi di dati e operazioni e informazioni sui metadati sulle strutture di programmazione consente la scrittura di codice in più lingue. La CLI compila le lingue in un linguaggio intermedio comune (CIL) e da CIL comunica gli aspetti dell’applicazione al linguaggio macchina assembly, che si rivolge all’hardware. Inoltre, ci sono specifiche del linguaggio comune (CLS), che sono un set di regole di base per l’uso da parte di qualsiasi linguaggio che cerca l’interoperabilità e un sistema di esecuzione virtuale (VES) per il caricamento, l’esecuzione e la generazione di codici di esecuzione per tutti i programmi compatibili con CLI .
La maggior parte dei linguaggi compatibili con CLI viene compilata direttamente in CIL tramite Common Language Runtime (CLR). Dopo essere stato compilato e memorizzato nella cache, un compilatore just-in-time si appropria del codice macchina dall’architettura esistente. La costruzione del codice macchina di assemblaggio può anche essere costruita prima del CLR con un compilatore anticipato.
Affinché i linguaggi conformi alla CLI possano sfruttare la specificità degli oggetti, l’infrastruttura del linguaggio comune specifica che gli oggetti devono solo esporre le funzionalità che hanno in comune con gli altri linguaggi conformi alla CLI quando vengono chiamati. I componenti del codice sviluppati per utilizzare solo i tipi di dati accettati nel CTS sono detti conformi alla CLI e accessibili a tutti gli altri linguaggi conformi alla CLI. Inoltre, qualsiasi costrutto di un linguaggio che non può essere verificato rapidamente dalla sicurezza del tipo del codice è escluso dal CLS, in modo che solo i codici verificabili possano dirsi conformi a CLS.
Alcune funzionalità di programmazione sono comuni sia ai compilatori che agli sviluppatori e altre sono disponibili solo per i compilatori. L’elenco è lungo e pieno di funzioni utili. Una funzionalità disponibile solo per i compilatori è: parole chiave che forniscono identificatori di riferimento e che possono sovrascrivere i metodi virtuali con nomi che sono parole chiave. Una funzionalità disponibile sia per i compilatori che per gli sviluppatori include: funzionalità di modifica che dicono che una proprietà e i suoi valutatori devono essere tutti “statici”, devono essere tutti “virtuali”, devono essere tutti “istanza”.
I programmi di implementazione sono per desktop, server, dispositivi mobili e console di gioco. Anche i programmi di miglioramento della visione artificiale e i toolkit di macchine virtuali di basso livello sono sviluppati da linguaggi compatibili con l’infrastruttura del linguaggio comune. I runtime dell’infrastruttura del linguaggio comune allocano le risorse di sistema e chiamano i dispositivi periferici in modo efficiente, sebbene siano indipendenti dalla piattaforma.