IronPython

IronPython, Python programlama dilinin .NET Framework ve Mono'yu hedefleyen bir gerçeklemesidir. Proje Jim Hugunin tarafından başlatılmış, Hugunin 5 Eylül 2006'da yayınlanan 1.0 sürümüne kadar aktif olarak katkıda bulunmuştur. IronPython 2.0 10 Aralık 2008'de piyasaya sürüldü. 1.0 sürümünden sonra, 2.7 Beta 1 sürümüne kadar Microsoft'ta küçük bir ekip tarafından geliştirildi. Hugunin'in Google'da çalışmaya başlamasının ardından Microsoft, IronPython'u (ve kardeş projesi IronRuby'yi) geliştirmeyi 2010 yılının sonlarında sonlandırdı. Proje şu anda GitHub'da bir grup gönüllü tarafından yürütülmektedir . Ücretsiz ve açık kaynaklı bir yazılımdır ve Microsoft Visual Studio IDE için ücretsiz ve açık kaynaklı bir uzantı olan Visual Studio için Python Tools (PTVS) ile uygulanabilir.

IronPython, diğer diller dışında dinamik diller için dinamik yazım ve dinamik yöntem gönderimi sağlayan Ortak Dil Altyapısı (Common Language Inrastructure) üzerinde çalışan bir kitaplık olan Dinamik Dil Çalışma Zamanı'nın (DLR) üzerine uygulanır. DLR, .NET Framework 4.0'ın ve ayrıca 2009'un 2.4 sürümünden beri Mono'nun bir parçasıdır. DLR ayrıca eski CLI uygulamalarında bir kütüphane olarak da kullanılabilir.

10 Aralık 2008'de yayınlanan ve 23 Ekim 2009'da 2.0.3 olarak güncellenen 2.0 sürümü, CPython 2.5'i hedeflemektedir. IronPython 2.0.3 sadece .NET Framework 3.5'e dek uyumludur.

11 Aralık 2009'da yayınlanan ve 12 Nisan 2010'da güncellenen 2.6 sürümü, CPython 2.6'yı hedeflemektedir. IronPython 2.6.1 sadece .NET Framework 4.0 sürümleri ile uyumludur. IronPython 2.6.1, .NET Framework 3.5 çalıştırılacak kaynaklardan derlenmelidir. 21 Ekim 2010'da yayınlanan Iron Python 2.6.2, .NET Framework 4.0 ve. NET Framework 3.5'in her ikisiyle de ikili olarak uyumludur.

Sürüm 2.7.8 16 Şubat 2018'de piyasaya sürüldü ve hata düzeltmeleri, yeniden düzenlenen kod ve güncellenmiş bir test altyapısından (Mono altında Linux üzerinde önemli testler dahil) oluşur. Aynı zamanda .NET Core desteklenen ilk sürümdür.

Python'un standart başvuru uygulaması olan CPython ve IronPython arasında bazı farklılıklar vardır. IronPython üzerine inşa edilen bazı projelerin CPython altında çalışmadığı bilinmektedir. Tersine, C uygulanan dile uzantıları bağlıdır CPython uygulamaları da C'de yer alan uzantılar .NET ile uyumlu olmadğı sürece IronPython ile uyumlu değildir. Örneğin, NumPy 2011 yılında Microsoft tarafından paketlenmiş ve ona bağlı kod ve kitaplıkların .NET Framework içinde doğrudan çalıştırılmasına izin vermiştir.

IronPython, Microsoft tarafından kullanımdan kaldırılmıştır ve Ekim 2021'de desteğini sona erdirecek Internet Explorer 11 hariç, çoğu web tarayıcısında artık desteklenmeyen Silverlight'ta desteklenmektedir. Tarayıcıda JavaScript motoru gibi bir komut dosyası motoru olarak kullanılabilir. IronPython komut dosyaları, <script> etiketlerinde basit istemci tarafı JavaScript komut dosyaları gibi geçirilir. Daha sonra gömülü XAML işaretlemesini değiştirmek de mümkündür.

0.6 sürümüne kadar IronPython, Ortak Kamu Lisansı koşulları altında piyasaya sürüldü. Ağustos 2004'te proje liderinin işe alınmasının ardından IronPython, Microsoft'un Paylaşılan Kaynak girişiminin bir parçası olarak kullanıma sunuldu. Bu lisans OSI onaylı değildir, ancak yazarlar açık kaynak tanımını karşıladığını iddia etmektedir. 2.0 alfa sürümünde, lisans OSI'nin onayladığı Microsoft Public License olarak değiştirildi. En son sürümler Apache License 2.0 koşulları altında yayınlanmıştır.

IronPython'un en önemli avantajlarından biri, .NET dili ile yazılmış uygulamalar için bir genişletilebilirlik katmanı işlevi görmesidir. Bir IronPython yorumlayıcıyı .NET çerçevesinde var olan bir uygulamaya entegre etmek nispeten basittir. Yerleştirildikten sonra, alt geliştiriciler .NET, nesnenin çerçevesindeki kod tabanını değiştirmek zorunda kalmadan, IronPython'da etkileşimde bulunan komut dosyalarını kullanabilirler ve çerçevenin arabirimindeki işlevselliği genişletebilirler.

IronPython'un Python'un referans uygulaması CPython'a kıyasla performans özellikleri, kullanılan tam ölçütlere bağlıdır. IronPython, PyStone betiği ile çekilen çoğu kriterde CPython'dan daha kötü performans gösterirken, diğer kriterlerde daha iyi performans gösterir. IronPython, JIT ve Küresel Tercüman Kilidi (Global Intrepreter Lock) olmadığı için çoklu işlem veya çoklu çekirdek gerektiren uygulamalarda CPython'dan daha iyi performans gösterebilir.