IronPython - IronPython

IronPython
Ironpython-logo.png
Orijinal yazar (lar)Jim Hugunin, Microsoft
Geliştirici (ler)Dino Viehland,
.NET Vakfı
İlk sürüm5 Eylül 2006; 14 yıl önce (2006-09-05)[1]
Kararlı sürüm
2.7.10 / 27 Nisan 2020; 7 ay önce (2020-04-27)[2]
Depo Bunu Vikiveri'de düzenleyin
YazılmışC #
İşletim sistemipencereler, Linux, Mac os işletim sistemi
Platform.NET Framework, .NET Çekirdeği, Mono
TürPython programlama dili uygulama
LisansApache Lisans 2.0
İnternet sitesiIronpython.ağ Bunu Vikiveri'de düzenleyin

IronPython bir uygulamasıdır Python programlama dili hedeflemek .NET Framework ve Mono. Jim Hugunin projeyi oluşturdu ve 5 Eylül 2006'da yayınlanan Sürüm 1.0'a kadar aktif olarak katkıda bulundu.[3] IronPython 2.0, 10 Aralık 2008'de yayınlandı.[4] 1.0 sürümünden sonra küçük bir ekip tarafından Microsoft 2.7 Beta 1 sürümüne kadar. Microsoft, IronPython'u (ve kardeş projesini) terk etti IronRuby ) 2010'un sonlarında, ardından Hugunin Google'da çalışmak üzere ayrıldı.[5] Proje şu anda bir grup gönüllü tarafından sürdürülmektedir. GitHub. Ücretsiz ve açık kaynaklı bir yazılımdır ve Microsoft'un ücretsiz ve açık kaynaklı bir uzantısı olan Python Tools for Visual Studio ile uygulanabilir. Görsel stüdyo IDE.[6][7]

IronPython tamamen C #, kodunun bir kısmı otomatik olarak bir kod üreteci Python ile yazılmış.

IronPython, Dinamik Dil Çalışma Zamanı (DLR), Ortak Dil Altyapısı dinamik diller için diğer şeylerin yanı sıra dinamik yazım ve dinamik yöntem gönderimi sağlar.[8] DLR, .NET Framework 4.0'ın bir parçasıdır ve 2009'dan itibaren 2.4 sürümünden beri Mono'nun da bir parçasıdır.[9] DLR, 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 2.0 sürümü, CPython 2.5'i hedefliyor.[10] 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 2.6 sürümü, CPython 2.6'yı hedefliyor.[11] 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ınlanan IronPython 2.6.2, hem .NET Framework 4.0 hem de .NET Framework 3.5 ile ikili uyumludur.
  • 2.7 sürümü 12 Mart 2011'de yayınlandı ve CPython 2.7'yi hedefliyor.[12]
  • 2.7.1 sürümü 21 Ekim 2011'de yayınlandı ve CPython 2.7'yi hedefliyor.[13]
  • 2.7.2.1 sürümü 13 Mart 2012'de yayınlandı. ZIP dosya biçimi kütüphaneler, SQLite ve derlenmiş çalıştırılabilir dosyalar.[14]
  • 2.7.4 sürümü, 7 Eylül 2013'te yayınlandı.[15]
  • 2.7.5 sürümü 6 Aralık 2014'te yayınlandı ve çoğunlukla hata düzeltmelerinden oluşuyor.[16]
  • 2.7.6 sürümü 21 Ağustos 2016'da yayınlandı ve yalnızca hata düzeltmelerinden oluşuyor.[17]
  • 2.7.7 sürümü 7 Aralık 2016'da yayınlandı ve yalnızca hata düzeltmelerinden oluşuyor.[18]
  • 2.7.8 sürümü 16 Şubat 2018'de yayınlandı ve hata düzeltmeleri, yeniden düzenlenmiş kod ve güncellenmiş bir test altyapısı (üzerinde önemli testler dahil) Linux altında Mono ). Aynı zamanda desteklenen ilk sürümdür .NET Çekirdeği.[19]
  • 2.7.9 sürümü 9 Ekim 2018'de yayınlandı ve hata düzeltmelerinden ve yeniden düzenlenen koddan oluşur. IronPython 3'ten önceki son sürüm olması amaçlanmıştır.[2]
  • 2.7.10 sürümü 27 Nisan 2020'de yayınlandı ve .NET Core 3.1 desteğini ekledi.[20]

CPython ile Farklar

Python referans uygulaması CPython ile IronPython arasında bazı farklılıklar vardır.[21] IronPython üzerine inşa edilen bazı projelerin CPython altında çalışmadığı bilinmektedir.[22] Tersine, C'de uygulanan dilin uzantılarına bağlı olan CPython uygulamaları IronPython ile uyumlu değildir,[23] .NET birlikte çalışmasında uygulanmadıkları sürece. Örneğin, Dizi 2011'de Microsoft tarafından paketlendi ve buna bağlı kod ve kitaplıkların doğrudan .NET Framework'ten çalıştırılmasına izin verdi.[24]

Silverlight

IronPython şunlarda desteklenir: Silverlight (Microsoft tarafından kullanımdan kaldırılan ve Ekim 2021'de desteği sona erdirecek olan Internet Explorer 11 haricinde çoğu web tarayıcısında desteği zaten kaybetmiştir.[25]). Tarayıcıda bir komut dosyası motoru olarak kullanılabilir, tıpkı JavaScript motor.[26] IronPython komut dosyaları, basit istemci tarafı JavaScript komut dosyaları gibi aktarılır. <script>-Etiketler. Daha sonra gömülü modifiye etmek de mümkündür XAML biçimlendirme.

Bunun arkasındaki teknolojiye Gestalt denir.[kaynak belirtilmeli ]

// DLR başlatma komut dosyası.<senaryo src="http://gestalt.ironpython.net/dlr-latest.js" tip="metin / javascript"></senaryo>// İstemci tarafı komut dosyası IronPython ve Silverlight'a aktarıldı.<senaryo tip="metin / python">    pencere.Uyarmak("Python'dan Merhaba")</senaryo>

Aynı şey için de geçerli IronRuby.

Lisans

0.6 sürümüne kadar, IronPython şu şartlar altında yayınlandı: Ortak Kamu Lisansı.[27] Ağustos 2004'te proje liderinin işe alınmasının ardından, IronPython Microsoft'un bir parçası olarak kullanıma sunuldu. Paylaşılan Kaynak girişim. Bu lisans, OSI -Onaylandı, ancak yazarlar açık kaynak tanımını karşıladığını iddia ediyor.[28] 2.0 alfa sürümüyle birlikte lisans şu şekilde değiştirildi: Microsoft Kamu Lisansı,[29] OSI'nin onayladığı. En son sürümler şu hükümler altında yayınlanır: Apache Lisans 2.0.

Arayüz genişletilebilirliği

IronPython'un temel 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 kolaydır. Bir kez yerleştirildiğinde, 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 arayüzündeki işlevselliği genişletir.[30]

IronPython, yansıma. 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 komut dosyası içinden .NET nesneleriyle çalışırken oldukça sezgisel bir deneyimle sonuçlanır.

Örnekler

Aşağıdaki IronPython betiği, .NET Framework nesnelerini işler. Bu komut dosyası, üçüncü taraf bir istemci tarafı uygulama geliştiricisi tarafından sağlanabilir ve bir arabirim aracılığıyla sunucu tarafı çerçevesine aktarılabilir. Ne arayüzün ne de sunucu tarafı kodunun, istemci uygulamasının gerektirdiği analitiği desteklemek için değiştirilmediğini unutmayın.

itibaren BookService ithalat BookDictionary booksWrittenByBookerPrizeWinners = [kitap.Başlık için kitap içinde BookDictionary.GetAllBooks()                                     Eğer "Booker Ödülü" içinde kitap.Yazar.Büyük Ödüller]

Bu durumda, .NET Framework'ün bir sınıf uyguladığını varsayalım, BookDictionaryadlı bir modülde BookServiceve IronPython komut dosyalarının gönderilebileceği ve çalıştırılabileceği bir arayüz yayınlar.

Bu komut dosyası, bu arayüze gönderildiğinde, çerçeve tarafından tutulan kitapların tüm listesini yineleyecek ve Booker Ödülü sahibi yazarlar tarafından yazılanları seçecektir.

İlginç olan, gerçek analitiği yazma sorumluluğunun istemci tarafı geliştiriciye ait olmasıdır. Sunucu tarafı geliştiricisinin talepleri 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.

ithalat clrclr.Referans ekle("System.Windows.Forms")itibaren System.Windows.Forms ithalat Mesaj KutusuMesaj Kutusu.Göstermek("Selam Dünya")

Verim

IronPython'un performans özellikleri CPython, Python'un referans uygulaması, kullanılan kesin ölçüye bağlıdır. IronPython, CPython'dan daha kötü performans gösterir. PyStone komut dosyası ancak diğer kriterlerde daha iyi.[31]IronPython, iş parçacıkları veya birden çok çekirdek kullanan Python programlarında daha iyi performans gösterebilir. JIT derleyici ve ayrıca Global Tercüman Kilidi.[32][33]

Ayrıca bakınız

Referanslar

  1. ^ http://ironpython.codeplex.com/releases/view/423
  2. ^ a b "2.7.9". github.com. Alındı 2018-10-09.
  3. ^ "Jim Hugunin'in blogu: IronPython 1.0 bugün yayınlandı!". 2006-09-05. Alındı 2006-12-14.
  4. ^ "İronpython için yayın tarihleri". 2008-12-10. Alındı 2009-01-25.
  5. ^ Clarke, Gavin (2010-10-22). "Microsoft gevşek Demir dillerini kesiyor". Kayıt. Alındı 2012-04-05.
  6. ^ "IronPython.net". IronPython.net. Alındı 2013-07-03.
  7. ^ "Visual Studio için Python Araçları - Ana Sayfa". Visual Studio için Python Araçları. Alındı 2013-07-03.
  8. ^ "Dinamik Dil Çalışma Zamanına Genel Bakış". Microsoft. Alındı 2014-04-01.
  9. ^ https://github.com/mono/mono/commit/340222ffe8b958cd22d9eb0388488f326845b363
  10. ^ "2.0.3". ironpython.codeplex.com. Alındı 2010-10-16.
  11. ^ "2.6". ironpython.codeplex.com. Alındı 2010-10-16.
  12. ^ "2.7". ironpython.codeplex.com. Alındı 2011-03-12.
  13. ^ "2.7.1". ironpython.codeplex.com. Alındı 2011-12-30.
  14. ^ "2.7.2.1". ironpython.codeplex.com. Alındı 2012-03-24.
  15. ^ "2.7.4". ironpython.codeplex.com. Alındı 2014-12-07.
  16. ^ "2.7.5". ironpython.codeplex.com. Alındı 2014-12-07.
  17. ^ "2.7.6". github.com. Alındı 2016-08-21.
  18. ^ "2.7.7". github.com. Alındı 2018-01-05.
  19. ^ "2.7.8". github.com. Alındı 2018-01-05.
  20. ^ "IronLanguages ​​/ ironpython2". GitHub. Alındı 2020-06-26.
  21. ^ "IronPython 1.0 ve CPython 2.4.3 arasındaki farklar". Microsoft. 2007-12-18. Alındı 2008-02-09.
  22. ^ Efendim, Michael. "Yeni Proje: .NET Kitaplıklarını Saf Python'da Uygulama". Arşivlenen orijinal 2008-08-30 tarihinde. Alındı 2008-02-09.
  23. ^ Eby, Phillip. "Küçük Python'un Çocukları". Alındı 2008-07-09.
  24. ^ ".NET için NumPy ve SciPy". Alındı 2019-04-05.
  25. ^ "Silverlight 5 Sistem Gereksinimleri". www.microsoft.com. Alındı 2019-11-16.
  26. ^ "Tarayıcı uygulamalarını Python'da yazın". IronPython.net. Arşivlenen orijinal 2013-03-17 tarihinde.
  27. ^ "Orijinal IronPython ana sayfası". 2004-07-28. Arşivlenen orijinal 23 Şubat 2010. Alındı 2007-05-13.
  28. ^ "IronPython için Paylaşılan Kaynak Lisansı". 2006-04-28. Alındı 2007-05-13.
  29. ^ "Microsoft izinli lisans". 2007-04-28. Alındı 2007-05-13.
  30. ^ "Çözücü One'da IronPython'dan .NET nesnelerini kullanma". Arşivlenen orijinal 2009-01-14 tarihinde. Alındı 2008-11-18.
  31. ^ "IronPython Performans Raporu". Alındı 2009-10-05.
  32. ^ "Python.org'da IronPython". python.org. Alındı 2011-04-04. IronPython'da GIL yoktur ve çok iş parçacıklı kod çok çekirdekli işlemcileri kullanabilir.
  33. ^ "Arşivlenmiş kopya". Arşivlenen orijinal 2015-10-31 tarihinde. Alındı 2015-07-15.CS1 Maint: başlık olarak arşivlenmiş kopya (bağlantı)

Dış bağlantılar