Infrastruktur bahasa umum (CLI) adalah seperangkat standar teknis internasional yang mempromosikan interoperabilitas bahasa pemrograman komputer. CLI juga memungkinkan banyak bahasa tingkat tinggi untuk mengembangkan aplikasi yang independen dari platform dan arsitektur. Ada lebih dari 30 bahasa pemrograman yang dikelompokkan untuk tujuan ini dan menggunakan empat divisi spesifikasi pemrograman bahasa umum agar sesuai dengan CLI.
Memanfaatkan apa yang disebut sistem tipe umum (CTS), menggunakan satu set tipe data dan operasi dan informasi metadata pada struktur pemrograman memungkinkan penulisan kode lintas bahasa. CLI mengkompilasi bahasa menjadi bahasa perantara umum (CIL), dan dari CIL, mengkomunikasikan aspek aplikasi ke bahasa mesin perakitan, yang membahas perangkat keras. Selain itu, ada spesifikasi bahasa umum (CLS), yang merupakan aturan dasar yang ditetapkan untuk digunakan oleh setiap bahasa yang mencari interoperasi, dan sistem eksekusi virtual (VES) untuk pemuatan, eksekusi, dan pembuatan kode yang dijalankan untuk semua program yang sesuai dengan CLI. .
Sebagian besar bahasa yang sesuai dengan CLI mengkompilasi langsung ke CIL dengan menggunakan runtime bahasa umum (CLR). Setelah dikompilasi dan di-cache, compiler just-in-time kemudian mengambil kode mesin dari arsitektur yang ada. Konstruksi kode mesin perakitan juga dapat dibangun di depan CLR dengan compiler sebelumnya.
Agar bahasa yang sesuai dengan CLI dapat memanfaatkan kekhususan objek, infrastruktur bahasa umum menetapkan bahwa objek hanya perlu mengekspos fitur yang mereka miliki bersama dengan bahasa yang sesuai dengan CLI saat dipanggil. Komponen kode yang dikembangkan untuk hanya menggunakan tipe data yang diterima di CTS dikatakan sesuai dengan CLI dan dapat diakses oleh semua bahasa yang sesuai dengan CLI lainnya. Selain itu, setiap konstruksi bahasa yang tidak dapat diverifikasi dengan cepat oleh keamanan jenis kode dikeluarkan dari CLS, sehingga hanya kode yang dapat diverifikasi yang dapat dikatakan sesuai dengan CLS.
Beberapa fitur pemrograman umum untuk kompiler dan pengembang dan yang lainnya hanya tersedia untuk kompiler. Daftarnya panjang dan penuh dengan fitur yang bermanfaat. Sebuah fitur yang tersedia hanya untuk kompiler adalah: kata kunci yang menyediakan pengenal referensi dan yang dapat menimpa metode virtual dengan nama yang merupakan kata kunci. Fitur yang tersedia untuk kompiler dan pengembang meliputi: fitur pengubah yang mengatakan bahwa properti serta penilainya harus semuanya “statis”, semuanya harus “virtual”, semuanya harus “instance”.
Program implementasi untuk desktop, server, perangkat seluler, dan konsol game. Program peningkatan penglihatan komputer dan perangkat mesin virtual tingkat rendah juga dikembangkan dari bahasa yang sesuai dengan infrastruktur bahasa umum. Runtime infrastruktur bahasa umum mengalokasikan sumber daya sistem dan memanggil perangkat periferal secara efisien, meskipun platform tersebut independen.