DemirPython - IronPython
| Orijinal yazar(lar) | Jim Hugunin , Microsoft |
|---|---|
| Geliştirici(ler) | Dino Viehland, .NET Vakfı |
| İlk sürüm | 5 Eylül 2006 |
| kararlı sürüm | |
| Önizleme sürümü | 3.4.0-alpha1 / 20 Nisan 2021
|
| depo | |
| Yazılmış | C# |
| İşletim sistemi | Windows , Linux , macOS |
| platformu | .NET Framework , .NET , Mono |
| Tip | Python programlama dili uygulaması |
| Lisans | Apache Lisansı 2.0 |
| İnternet sitesi |
ironpython |
IronPython , .NET Framework ve Mono'yu hedefleyen Python programlama dilinin bir uygulamasıdır . Jim Hugunin projeyi yarattı ve 5 Eylül 2006'da yayınlanan 1.0 Sürümüne kadar aktif olarak katkıda bulundu. IronPython 2.0, 10 Aralık 2008'de yayınlandı. Sürüm 1.0'dan sonra 2.7 Beta 1'e kadar Microsoft'ta küçük bir ekip tarafından sürdürüldü. serbest bırakmak. Microsoft , 2010'un sonlarında IronPython'u (ve kardeş projesi IronRuby'yi ) terk etti, ardından Hugunin Google'da çalışmak için ayrıldı. Proje şu anda GitHub'da bir grup gönüllü tarafından yürütülüyor . Ücretsiz ve açık kaynaklı bir yazılımdır ve Microsoft'un Visual Studio IDE'si için ücretsiz ve açık kaynaklı bir uzantı olan Visual Studio için Python Araçları ile uygulanabilir .
IronPython tamamen C# ile yazılmıştır , ancak kodunun bir kısmı Python'da yazılmış bir kod oluşturucu tarafından otomatik olarak oluşturulur .
IronPython, diğer şeylerin yanı sıra dinamik diller için dinamik yazma ve dinamik yöntem gönderimi sağlayan Ortak Dil Altyapısının üzerinde çalışan bir kitaplık olan Dinamik Dil Çalışma Zamanı'nın (DLR) üzerine uygulanır . DLR, .NET Framework 4.0'ın bir parçasıdır ve ayrıca 2009'dan itibaren 2.4 sürümünden beri Mono'nun bir parçasıdır. DLR, daha eski CLI uygulamalarında bir kitaplık olarak da kullanılabilir.
Durum ve yol haritası
- 10 Aralık 2008'de yayınlanan ve 23 Ekim 2009'da 2.0.3 olarak güncellenen Sürüm 2.0, CPython 2.5'i hedefler. IronPython 2.0.3, yalnızca .NET Framework 3.5'e kadar uyumludur.
- 11 Aralık 2009'da yayınlanan ve 12 Nisan 2010'da güncellenen Sürüm 2.6, CPython 2.6'yı hedefler. IronPython 2.6.1 sürümleri yalnızca .NET Framework 4.0 ile ikili uyumludur. IronPython 2.6.1, .NET Framework 3.5 üzerinde çalışmak için kaynaklardan derlenmelidir. 21 Ekim 2010'da yayımlanan IronPython 2.6.2, hem .NET Framework 4.0 hem de .NET Framework 3.5 ile ikili uyumludur.
- Sürüm 2.7, 12 Mart 2011'de yayınlandı ve CPython 2.7'yi hedefliyor.
- 2.7.1 Sürümü 21 Ekim 2011'de yayınlandı ve CPython 2.7'yi hedefliyor.
- Sürüm 2.7.2.1 13 Mart 2012'de yayınlandı. ZIP dosya biçimi kitaplıkları, SQLite ve derlenmiş yürütülebilir dosyalar için destek sağlar .
- Sürüm 2.7.4, 7 Eylül 2013'te yayınlandı.
- 2.7.5 Sürümü 6 Aralık 2014'te yayınlandı ve çoğunlukla hata düzeltmelerinden oluşuyor.
- 2.7.6 Sürümü 21 Ağustos 2016'da yayınlandı ve yalnızca hata düzeltmelerinden oluşuyor.
- Sürüm 2.7.7, 7 Aralık 2016'da yayınlandı ve yalnızca hata düzeltmelerinden oluşuyor.
- Sürüm 2.7.8, 16 Şubat 2018'de yayınlandı 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. Ayrıca .NET Core'u destekleyen ilk sürümdür .
- Sürüm 2.7.9, 9 Ekim 2018'de yayınlandı ve hata düzeltmeleri, yeniden düzenlenmiş kodlardan oluşuyor. IronPython 3'ten önceki son sürüm olması amaçlanmıştır.
- Sürüm 2.7.10, 27 Nisan 2020'de yayımlanmıştır ve .NET Core 3.1 desteği ekler.
- Sürüm 2.7.11, 17 Kasım 2020'de yayımlandı ve .NET 5 üzerinde çalışırken sorunları çözüyor .
CPython ile Farklılıklar
Python referans uygulaması 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'de uygulanan dilin uzantılarına bağlı olan CPython uygulamaları, bir .NET birlikte çalışmasında uygulanmadıkça IronPython ile uyumlu değildir. Örneğin, NumPy 2011'de Microsoft tarafından paketlendi ve ona bağlı kod ve kitaplıkların doğrudan .NET Framework'ten çalıştırılmasına izin verdi.
gümüş ışık
IronPython, Silverlight'ta desteklenir (Microsoft tarafından kullanımdan kaldırılmıştır ve Ekim 2021'de desteğini sonlandıracak olan Internet Explorer 11 dışında çoğu web tarayıcısında zaten desteği kaybetmiştir). JavaScript motoru gibi tarayıcıda bir komut dosyası motoru olarak kullanılabilir . IronPython komut dosyaları, <script>-tag'lerdeki 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 .
Bunun arkasındaki teknolojiye Gestalt denir.
// DLR initialization script.
<script src="http://gestalt.ironpython.net/dlr-latest.js" type="text/javascript"></script>
// Client-side script passed to IronPython and Silverlight.
<script type="text/python">
window.Alert("Hello from Python")
</script>
Aynı şey IronRuby için de geçerlidir .
Lisans
0.6 sürümüne kadar IronPython, Ortak Kamu Lisansı koşulları altında yayınlandı . 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üyle birlikte lisans, OSI'nin onayladığı Microsoft Kamu Lisansı olarak değiştirildi . En son sürümler, Apache Lisansı 2.0 koşulları altında yayımlanır .
Arayüz genişletilebilirliği
IronPython'un en önemli avantajlarından biri, .NET dilinde yazılmış uygulama çerçevelerine genişletilebilirlik katmanı işlevi görmesidir. Bir IronPython yorumlayıcısını mevcut bir .NET uygulama çerçevesine entegre etmek nispeten basittir. Yerleştirildikten sonra, aşağı akış geliştiricileri, çerçevedeki .NET nesneleriyle etkileşime giren IronPython'da yazılmış komut dosyalarını kullanabilir, böylece çerçevenin kod tabanını değiştirmek zorunda kalmadan çerçevenin arabirimindeki işlevselliği genişletebilir.
IronPython yansımayı kapsamlı bir şekilde kullanır . Bir .NET nesnesine başvuruda iletildiğinde, o nesne için kullanılabilen türleri ve yöntemleri otomatik olarak içe aktarır. Bu, bir IronPython betiği içinden .NET nesneleri ile çalışırken oldukça sezgisel bir deneyim sağlar.
Örnekler
Aşağıdaki IronPython betiği, .NET Framework nesnelerini yönetir. Bu komut dosyası, üçüncü taraf istemci tarafı uygulama geliştiricisi tarafından sağlanabilir ve bir arabirim aracılığıyla sunucu tarafı çerçevesine aktarılabilir. İstemci uygulamasının gerektirdiği analitiği desteklemek için ne arabirimin ne de sunucu tarafı kodunun değiştirilmediğini unutmayın.
from BookService import BookDictionary
booksWrittenByBookerPrizeWinners = [book.Title for book in BookDictionary.GetAllBooks()
if "Booker Prize" in book.Author.MajorAwards]
Bu durumda, .NET Framework'ün BookService adlı bir modülde BookDictionary adlı bir sınıf uyguladığını ve IronPython komut dosyalarının gönderilebileceği ve yürütülebileceği bir arabirim yayınladığını varsayalım .
Bu komut dosyası, söz konusu arayüze gönderildiğinde, çerçeve tarafından sağlanan kitapların tüm listesini yineleyecek ve Booker Ödüllü yazarlar tarafından yazılanları seçecektir.
İlginç olan, gerçek analitiği yazma sorumluluğunun istemci tarafı geliştiricisine ait olmasıdır. Sunucu tarafı geliştiriciden talepler minimum düzeydedir, esasen yalnızca sunucu tarafından tutulan verilere erişim sağlar. Bu tasarım modeli, karmaşık uygulama çerçevelerinin dağıtımını ve bakımını büyük ölçüde basitleştirir.
Aşağıdaki komut dosyası, basit bir Merhaba Dünya mesajı oluşturmak için .NET Framework'ü kullanır.
import clr
clr.AddReference("System.Windows.Forms")
from System.Windows.Forms import MessageBox
MessageBox.Show("Hello World")
Verim
Python'un referans uygulaması olan CPython ile karşılaştırıldığında IronPython'un performans özellikleri, kullanılan kesin kıyaslamaya bağlıdır. IronPython, PyStone komut dosyasıyla alınan çoğu kıyaslamada CPython'dan daha kötü, ancak diğer kıyaslamalarda daha iyi performans gösteriyor. IronPython, JIT derleyicisine sahip olduğu ve Global Interpreter Lock'a sahip olmadığı için iş parçacıkları veya çoklu çekirdek kullanan Python programlarında daha iyi performans gösterebilir .
Ayrıca bakınız
- Boo – Python'dan ilham alan sözdizimine ve C# ve Ruby'den ödünç alınan özelliklere sahip .NET Framework ve Mono için bir dil
- Kobra
- DemirŞema
- Jython - Java Sanal Makinesi için bir Python uygulaması
- Cython
- pypy – Python programlama dili için kendi kendini barındıran bir yorumlayıcı
- Tao Çerçevesi
- Unladen Swallow – LLVM tabanlı bir tam zamanında derleyici kullanarak üstün performans sağlamayı amaçlayan CPython'un (artık feshedilmiş) bir dalı