**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**) 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.

Ikhtisar
--------

Gambaran visual dari Common Language Infrastructure (CLI)
Spesifikasi CLI menggambarkan, antara lain, keempat aspek berikut:

Common Type System (CTS)
Kumpulan tipe data dan operasi yang dapat digunakan oleh semua bahasa pemrograman yang memenuhi persyaratan CTS.
Metadata
Informasi mengenai struktur program merupakan bahasa agnostik, sehingga dapat direferensikan antara bahasa dan perkakas, mempermudah untuk bekerja dengan kode yang ditulis dalam bahasa yang tidak digunakan oleh pengembang.
Common Language Specification (CLS)
CLI harus mematuhi kumpulan aturan dasar yang ditargetkan setiap bahasa, karena bahasa tersebut harus berinteraksi dengan bahasa lain yang memenuhi persyaratan CTS. Aturan-aturan CLS adalah subset dari Common Type System.
Virtual Execution System (VES)
VES memasukkan dan mengeksekusi program yang kompatibel dengan CLI, dengan menggunakan metadata untuk menggabungkan potongan-potongan kode yang dibuat secara terpisah pada saat runtime.
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.

Standardisasi dan lisensi
-------------------------

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, Microsoft telah menambahkan C# dan CLI ke dalam daftar spesifikasi yang berlaku bagi Microsoft Community Promise (Janji Komunitas Microsoft), 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, yang tidak tercakup oleh Community Promise.

Implementasi
------------

* .NET Framework adalah implementasi komersial orisinal Microsoft dari CLI. Hanya mendukung Windows. Digantikan oleh .NET pada bulan November 2020.
* .NET, sebelumnya dikenal sebagai .NET Core, adalah penerus .NET Framework yang tanpa biaya dan merupakan sumber terbuka dan multi-platform, yang dikeluarkan di bawah Lisensi MIT
* .NET Compact Framework adalah implementasi komersial Microsoft atas CLI untuk perangkat portabel dan Xbox 360.
* .NET Micro Framework adalah implementasi sumber terbuka CLI untuk perangkat dengan sumber terbatas.
* Mono adalah implementasi sumber terbuka alternatif atas CLI dan teknologi penyerta, biasanya digunakan untuk pengembangan ponsel dan permainannya.

Lihat juga
----------

* Pustaka Standar (CLI)
* Daftar bahasa CLI
* .NET Standar

Catatan
-------

1. 1 2  "ISO/IEC 23271:2012 - Information technology -- Common Language Infrastructure (CLI)".
2. 1 2  "Standard ECMA-335 - 6th edition (June 2012)".
3. ↑  "Introduction to Advanced Windows Store App Development using HTML5 and JavaScript | Microsoft Press Store".
4. ↑  "WinRT demystified - Miguel de Icaza".
5. ↑  "The Ecma C# and CLI Standards - Port 25: The Open Source Community at Microsoft". 2009-07-06. Diarsipkan dari versi asli tanggal July 9, 2009. Diakses tanggal September 26, 2009.  Parameter `|url-status=` yang tidak diketahui akan diabaikan (bantuan)
6. 1 2  "Covered Specifications | Microsoft Open Specifications". *Microsoft*.

Referensi
---------

* "Standard ECMA-335, Common Language Infrastructure (CLI)". *Ecma International*. Diakses tanggal August 31, 2005.
* "ISO/IEC 23271, Common Language Infrastructure". *ISO/IEC*. Diakses tanggal September 27, 2006.
* "Ecma C# and Common Language Infrastructure Standards". *Microsoft Corporation*. Diakses tanggal October 13, 2009.

Pranala luar
------------

* ISO/IEC 23271:2012 Information technology — Common Language Infrastructure (CLI)