# Common Language Infrastructure
Common Language Infrastructure veya kısaca CLI, programlama dili ve platformdan bağımsız bir şekilde uygulama geliştirme ve yürütmeyi mümkün kılan sistemleri belirleyen uluslararası bir teknik normdur. Standart, Uluslararası Standardizasyon Örgütü tarafından ISO/IEC 23271 numarası altında ve Ecma International tarafından ECMA-335 adı altında sürdürülmektedir. Mevcut versiyon, Haziran 2012'den itibaren 6 numaralı versiyondur.
CLI bir uygulama değil, bir şartnamedir. CLI standartlarının en yaygın yürütüldüğü uygulama, Microsoft'un Windows sistemleri için geliştirdiği .NET Framework'tür. Ancak Unix/Linux sistemleri, Mac OS X ve BSD işletim sistemleri için de CLI standartlarının uygulandığı sistemler mevcuttur.
Geliştirme büyük ölçüde Microsoft tarafından yapılır.


## Gelişim tarihçesi.
  - Ağustos 2000 – Microsoft, Hewlett-Packard ve Intel, CLI şartnamesini standardizasyon için ECMA'ya sundu.
  - Aralık 2001 – Standart ECMA-335 olarak kabul edildi. Geliştirmeye IBM, Fujitsu Software, Plum Hall, Monash Üniversitesi ve ISE katkıda bulundu.
  - Aralık 2001 - CLI spesifikasyonu standardizasyon için ISO/IEC'ye sunuldu.
  - Aralık 2002 – ECMA-335 2. versiyon standardının ilk revizyonu kabul edildi.
  - Nisan 2003 - ECMA-335 2. versiyonunun içeriği ISO/IEC tarafından ISO/IEC 23271 (CLI) ve ISO/IEC 23272 (CLI TR) olarak onaylandı.
  - Haziran 2005 – ECMA-335 3. versiyon ECMA tarafından standartlaştırıldı. Genel iyileştirmelere ek olarak, bu standart öncelikle genel veri yapıları için destek ve hata ayıklama bilgileri için standartlaştırılmış bir format sağlar.
  - Haziran 2006 – ECMA-335 4. versiyon ECMA tarafından standartlaştırıldı.
  - Aralık 2006 – ECMA-335 5. versiyon ECMA tarafından standartlaştırıldı
  - Haziran 2012 – ECMA-335 6. versiyon ECMA tarafından standartlaştırıldı.


## Temel yapısı.
Standart, aşağıdaki temel kısımları içermektedir:
  - Common Type System (CTS)
  - Virtual Execution System (VES)
  - Common Language Spesification (CLS)
  - Common Intermediate Language (CIL)
  - Metadata


## CLI'yı oluşturan bölümler.
CLI standardı ECMA-335 3. baskı, bölümler olarak adlandırılan altı bölüme ayrılmıştır. Bunlar ayrıntılı olarak:
  - Bölüm I: Konsept ve Mimari - CLI'nin genel mimarisini açıklar.
  - Bölüm II: Metadata Tanımı ve Semantiği - Metadatalar hakkında bilgi içerir: Bunların içinde dosyaların arayüz düzeni, içerikleri ve yapıları bulunur.
  - Bölüm III: CIL – CIL'nin talimatlarını açıklar
  - Bölüm IV: Kütüphaneler – CLI'nin bir parçası olarak standartlaştırılmış sınıfların ve bu sınıfların kütüphanelerinin özelliklerini içerir.
  - Bölüm V: Bileşik hata ayıklama biçimini açıklar.
  - Bölüm VI: Ekler.


## CLI standartlarının uygulamaları.
CLI'nin aşağıdaki uygulamaları mevcuttur:
  - .NET Framework (standart, ek olarak pek çok sayıda kütüphaneyi içerecek şekilde genişletilmiştir)
  - MSSCLI (ayrıca: Rotor) (BSD için)
  - Mono (çeşitli Unix/Linux sistemleri, Mac OS X ve Windows içindir  açık kaynak olarak tasarlanmıştır)
  - .NET Compact Framework (x86, MIPS, SH4 veya ARM işlemcilerini temel alan Windows CE uygulaması)
  - .NET Micro Framework
  - Silverlight
  - DotGNU
  - .NET Core
Bu CLI uygulamalarının her birinin ayrıca bir VES (Virtual Execution System) uygulaması vardır. Bu VES uygulamalarının bilinen adları şunlardır:
  - Common Language Runtime (CLR), .NET Framework için
  - TinyCLR, .NET Micro Framework için
  - Portable.NET, DotGNU için
  - CoreCLR, .NET Core için