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

## Ayrıca bakınız
* Global Assembly Cache

## Kaynakça
* James S. Miller, Susan Ragsdale: *Ortak Dil Altyapısı Açıklamalı Standardı*, Addison-Wesley 2003, ISBN 0321154932

## Dış bağlantılar

* Ecma International'ın resmi sitesi
* ISO'daki resmi site