Infrastruktur Bahasa Umum bahasa Inggris: Common Language Infrastructure (CLI) adalah spesifikasi terbuka dan standar teknis yang pada awalnya dikembangkan oleh Microsoft dan di-standardisasi oleh ISO/IEC (ISO/IEC 23271) dan Ecma Internasional (ECMA 335)[1][2] yang menggambarkan tentang kode yang dapat dieksekusi dan lingkungan runtime yang memperbolehkan berbagai bahasa aras tinggi untuk dapat digunakan di platform komputer yang berbeda tanpa harus ditulis ulang untuk arsitektur tertentu. Ini menyiratkan bahwa CLI merupakan platform agnostik. .NET Framework, .NET dan Mono adalah implementasi CLI.
Format metadata tersebut juga digunakan untuk menentukan definisi API yang dipaparkan oleh Runtime Windows.[3][4]
Spesifikasi CLI menggambarkan, antara lain, keempat aspek berikut:
Semua bahasa yang kompatibel akan terkompilasi menjadi Common Intermediate Language (CIL), yang merupakan bahasa pengantaraan yang di-abstraksi dari perangkat keras platform. Ketika kode dieksekusi, VES yang spesifik terhadap platform akan mengkompilasi CIL menjadi bahasa mesin menurut perangkat dan sistem operasi yang ditentukan.
Pada bulan Agustus 2000, Microsoft, Hewlett-Packard, Intel, dan lainnya bekerja untuk menstandardisasi CLI. Pada bulan Desember 2001, standar tersebut diratifikasi oleh Ecma, dan diikuti oleh standardisasi ISO/IEC pada bulan April 2003.
Microsoft dan para rekannya memegang paten untuk CLI. Ecma dan ISO/IEC mensyaratkan bahwa semua paten yang diperlukan untuk implementasi harus tersedia di bawah "aturan yang wajar dan tidak diskriminatif (RAND)." Lisensi RAND umumnya memerlukan pembayaran royalti, yang dapat menjadi penyebab kekhawatiran bagi Mono. Pada bulan Januari 2013, Microsoft maupun para rekan belum mengidentifikasi paten apa pun yang diperlukan untuk implementasi CLI yang tunduk kepada aturan RAND.
Hingga bulan Juli 2009,[5] Microsoft telah menambahkan C# dan CLI ke dalam daftar spesifikasi yang berlaku bagi Microsoft Community Promise (Janji Komunitas Microsoft),[6] sehingga siapa pun dapat dengan aman mengimplementasi edisi standar yang ditentukan tanpa takut akan adanya gugatan paten dari Microsoft. Implementasi dari standar CLI memerlukan ketaatan terhadap salah satu standar profil yang didukung dan didefinisikan, sekurang-kurangnya profil kernel. Profil kernel sebenarnya merupakan kumpulan tipe yang sangat kecil untuk didukung, dibandingkan dengan pustaka inti instalasi .NET asal yang banyak dikenal. Namun, klausul ketaatan CLI memungkinkan untuk memperluas profil yang didukung dengan cara menambahkan metode dan tipe baru ke kelas-kelas, dan juga menurunkan dari namespace baru. Tetapi tidak diperbolehkan untuk menambahkan anggota baru ke antarmuka. Ini berarti bahwa fitur dari CLI dapat digunakan dan diperluas, selama implementasi profil yang sesuai tidak mengubah perilaku program yang dirancang untuk bekerja atas profil tersebut, secara bersamaan memperbolehkan perilaku yang tidak diketahui dari program yang ditulis khusus untuk implementasi tersebut.
Pada tahun 2012, Ecma dan ISO/IEC menerbitkan edisi baru dari standar CLI,[1][2] yang tidak tercakup oleh Community Promise.[6]
<ref>
tidak sah; nama "iso_iec_23271_2012" didefinisikan berulang dengan isi berbeda
<ref>
tidak sah; nama "ecma_355_2012" didefinisikan berulang dengan isi berbeda
<ref>
tidak sah; nama "mcp_covered_specifications" didefinisikan berulang dengan isi berbeda