IronPython

S Vikipedije, slobodne enciklopedije
IronPython
Originalni nazivengl. IronPython
Izgovara seAjron Pajton
Modelimperativni, objektno-orijentisani, funkcionalni
Autor(i)Dino Viehland
Aktuelna verzija2.7.5
LicencaApache License, v2.0
Veb-sajthttp://ironpython.net

IronPython je implementacija programskog jezika Pajton ciljajući na . NET Frejmvork i Mono. Džim Hugunin je napravio projekat i aktivno doprinosio istom do verzije 1.0 koja je izbačena 5. septembra 2006.[1] Nakon toga, održavan je od strane malog tima u Majkrosoftu sve do verzije 2.7 Beta 1; Majkrosoft je napustio IronPython (i sestrinski projekat IronRuby) kasne 2010., nakon čega je Hugunin otišao da radi u Guglu.[2] IronPython 2.0 je izbačen 10. decembra 2008.[3] Projekat je trenutno održavan od strane grupe volontera u skladište otvorenog koda Majkrosofta CodePlex. Besplatan je i otvorenog koda, i može se koristiti kao implementacija u alatkama Pajtona za Visual Studio, koja je besplatna ekstenzija otvorenog koda, izolovana, i komercijalnih verzija Majkrosoftovog Visual Studio IDE.[4][5]

IronPython je napisan u C#, iako delovi njegovog koda su automatski generisani od strane generatora koda napisanog u Pajtonu.

IronPython je implementiran preko Dynamic Language Runtime (DLR), biblioteke koja radi preko Opšte jezičke infrastrukture koja doprinosi dinamično pisanje i dinamične metode depeša, između ostalih stvari, za dinamične jezike.[6] DLR je deo .NET Frejmvorka 4.0 i takođe je deo bildova Monoa. DLR takođe može biti korišćen kao biblioteka na stare CLI implementacije.

Status i mapa puta[uredi | uredi izvor]

  • Verzija 2.0, izbačena 10.12.2008., i osvežena sa 2.0.3 na 23.10.2009., cilja CPython 2.5.[7] IronPython 2.0.3 je samo kompatibilno do .NET Frejmvork 3.5.
  • Verzija 2.6, izbačena 11.12.2009., i osvežena 12.04.2010., cilja CPython 2.6.[8] IronPython 2.6.1 verzije su binarno kompatibilne samo sa .NET Frejmvorkom 4.0. IronPython 2.6.1 mora biti kompajlovan od izvora da radi na .NET Frejmvorku 3.5. Iron Python 2.6.2, izbačen 21.10.2010., je binarno kompatibilan sa .NET Frejmvorkom 4.0 i .NET Frejmvorkom 3.5.
  • Verzija 2.7 izbačena 12.03.2011. cilja CPython 2.7.[9]
  • Verzija 2.7.1 izbačena 21.10.2011. i cilja CPython 2.7.[10]
  • Verzija 2.7.2.1 izbačena 13.03.2012. Omogućava podršku za ZIP biblioteke, SQLite, i kompajlovane aplikacije[11]
  • Verzija 2.7.4 izbačena 07.09.2013.[12]
  • Verzija 2.7.5 izbačena 06.12.2014. i najviše sadrži ispravke grešaka.[13]

Razlike sa CPython[uredi | uredi izvor]

Postoje neke razlike između referenci implementacija Pajtona i CPython-a i IronPython-a.[14] Za neke projekte napravljenih preko IronPython-a se zna da ne rade pod CPython-om.[15] CPython aplikacije koje zavise od ekstenzija na jezik koji su implementirani u C (npr. NumPy) nisu kompatibilni sa IronPython-om,[16] iako je komercijalno-podržan projekat otvorenog koda je na putu da ispravi ovaj problem.[17]

Silverlajt[uredi | uredi izvor]

IronPython je podržan na Silverlajt-u. Može biti korišćen kao motor skriptovanja u pretraživaču baš kao JavaScript motor.[18] IronPython skripte su prosleđene kao jednostavne Javascript-skripte u <script>-tagovima. Onda je takođe moguće modifikovati ugrađeni XAML.

Tehnologija iza ovoga se zove Gestalt.

//DLR initiation 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>

Isto radi za IronRuby.

Licenca[uredi | uredi izvor]

Sve do verzije 0.6 IronPython je izbačen pod Common Public License licencom.[19] Naredno regrutovanje projekta tokom avgusta 2004., IronPython je postao dostupan kao deo Majkrosoftove inicijative zvane Shared Source. Ova licenca nije odobrena od strane OSI ali autori tvrde da ispunjava definicije otvorenog koda.[20] Sa 2.0 alfa verzijom, licenca je promenjena u Majkrosoft Javna Licenca,[21] kojom je inicijativa otvorenog koda potvrdila da zadovoljava njihovu definiciju otvorenog koda. Poslednje verzije se izbacuju pod licencom Apache License 2.0.

Rastegljivost interfejsa[uredi | uredi izvor]

Jedan od ključnih prednosti IronPython-a je u njegovoj funkciji kao rastegljivog sloja do frejmvorkova aplikacija napisanih u jeziku .NET. Relativno je jednostavno da se integriše interpretator IronPython u postojeći frejmvork .NET aplikacija. Jednom namešten, programeri mogu koristiti skripte napisane u IronPython-u koje interaguju sa ostalim .NET objektima u frejmvorku, i time proširuju funkcionalnost interfejsa frejmvorka, bez menjanja bilo kog dela baze koda frejmvorka.[22]

IronPython se koristi ekstenzijom refleksije. Kada se prosledi u referencu objekta .NET, automatski će preuzeti sve tipove i metode dostupne za taj objekat. Ovo rezultuje veoma visokim intuitivnim iskustvom prilikom rada sa .NET objektima u okviru IronPython skripte.

Primeri[uredi | uredi izvor]

Sledeća IronPython skripta manipuliše objekte .NET Frejmvorka. Ova skripta može biti dostupna od strane programera korisničkih aplikacija za treća lica i prosleđena u frejmvork servera kroz interfejs. Primetite da niti interfejs, niti kod sa strane servera je modifikovan da podržava analitiku neophodnu od strane aplikacije korisnika.

from BookService import BookDictionary
 
booksWrittenByBookerPrizeWinners = [book.Title for book in BookDictionary.GetAllBooks()
                                    if "Booker Prize" in book.Author.MajorAwards]

U ovom slučaju, zamislite da .NET Frejmvork implementuje klasu, BookDictionary, u modul nazvan BookService, i izbacuje interfejs u kom  IronPython skripte mogu biti poslate i izvršene.

Ova skripta, kada se pošalje u taj interfejs, će preći preko cele liste kljiga održavanim od strane frejmvorka, i izabrati one napisane od strane onih autora koji su nagrađivani.

Ono što je interesantno je da odgovornost za pisanje same analitike je na strani programera korisničkog dela. Zahtevi na programere serverskog dela su minimalni, samo dozvoljavajući pristup podacima održavanim od strane servera. Ovakav dizajn veoma pojednostavljuje razvoj i održavanje kompleksnih frejmvorkova aplikacija.

Sledeća skripta koristi .NET Frejmvork da napravi jednostavnu Hello World poruku.

import clr
clr.AddReference("System.Windows.Forms")

from System.Windows.Forms import MessageBox
MessageBox.Show("Hello World")

Performanse[uredi | uredi izvor]

Karakteristike performansi IronPython-a u poređenju sa CPython-om, referentnom implementacijom Pajtona, zavise konkretno u okviru kog testa se mere. IronPython je sporiji u odnosu na CPython na mnogim PyStone testovima, ali je bolji na drugim.[23] IronPython može biti brži u programima Pajtona koji koriste navoje ili više jezgara, kao što ima JIT, i takođe zato što nema katanac globalnog interpretatora.[24][25]

Vidi još[uredi | uredi izvor]

  • Boo, jezik napisan za . NET Frejmvork i Mono sa Pajton inspirisanim sintaksama i karakteristikama pozajmljenim iz C# i Ruby.
  • Cobra
  • IronLisp
  • IronRuby
  • IronScheme
  • Jython - implementacija Pajtona za JVM.
  • Cython
  • pypy - samo-održivi interpretator za Pajton programski jezik
  • Tao Frejmvork
  • Unladen Swallow - (sada-ugašena) grana CPython-a koja je ciljala da doprinese superiorne performanse korišćenjem LLVM-baziranog tačno-na-vreme kompajlera.

Reference[uredi | uredi izvor]

  1. ^ „Jim Hugunin's blog: IronPython 1.0 released today!”. 5. 9. 2006. Arhivirano iz originala 06. 12. 2006. g. Pristupljeno 14. 12. 2006. 
  2. ^ Clarke, Gavin (22. 10. 2010). „Microsoft cuts loose Iron languages”. The Register. Pristupljeno 5. 4. 2012. 
  3. ^ „Release dates for ironpython”. 10. 12. 2008. Pristupljeno 25. 1. 2009. 
  4. ^ „IronPython.net”. IronPython.net. Pristupljeno 3. 7. 2013. 
  5. ^ „Python Tools for Visual Studio- Home”. Python Tools for Visual Studio. Arhivirano iz originala 26. 01. 2018. g. Pristupljeno 3. 7. 2013. 
  6. ^ „Dynamic Language Runtime Overview”. Microsoft. Pristupljeno 1. 4. 2014. 
  7. ^ „2.0.3”. ironpython.codeplex.com. Arhivirano iz originala 26. 12. 2017. g. Pristupljeno 16. 10. 2010. 
  8. ^ „2.6”. ironpython.codeplex.com. Arhivirano iz originala 13. 01. 2018. g. Pristupljeno 16. 10. 2010. 
  9. ^ „2.7”. ironpython.codeplex.com. Arhivirano iz originala 02. 01. 2018. g. Pristupljeno 12. 3. 2011. 
  10. ^ „2.7.1”. ironpython.codeplex.com. Arhivirano iz originala 26. 12. 2017. g. Pristupljeno 30. 12. 2011. 
  11. ^ „2.7.2.1”. ironpython.codeplex.com. Arhivirano iz originala 26. 12. 2017. g. Pristupljeno 24. 3. 2012. 
  12. ^ „2.7.4”. ironpython.codeplex.com. Arhivirano iz originala 16. 01. 2018. g. Pristupljeno 7. 12. 2014. 
  13. ^ „2.7.5”. ironpython.codeplex.com. Arhivirano iz originala 26. 01. 2018. g. Pristupljeno 7. 12. 2014. 
  14. ^ „Differences between IronPython 1.0 and CPython 2.4.3”. Microsoft. 18. 12. 2007. Pristupljeno 9. 2. 2008. 
  15. ^ Foord, Michael. „New Project: Implementing .NET Libraries in Pure Python”. Arhivirano iz originala 30. 08. 2008. g. Pristupljeno 9. 2. 2008. 
  16. ^ Eby, Phillip. „Children of a Lesser Python”. Pristupljeno 9. 7. 2008. 
  17. ^ „Ironclad”. Arhivirano iz originala 28. 08. 2008. g. Pristupljeno 9. 7. 2008. 
  18. ^ „IronPython in the web browser - IronPython.net”. Arhivirano iz originala 13. 11. 2012. g. Pristupljeno 1. 4. 2014. 
  19. ^ „Original IronPython homepage”. 28. 7. 2004. Arhivirano iz originala 23. 02. 2010. g. Pristupljeno 13. 5. 2007. 
  20. ^ „Shared Source License for IronPython”. 28. 4. 2006. Pristupljeno 13. 5. 2007. 
  21. ^ „Microsoft permissive license”. 28. 4. 2007. Pristupljeno 13. 5. 2007. 
  22. ^ „Using .NET objects from IronPython in Resolver One”. Arhivirano iz originala 14. 01. 2009. g. Pristupljeno 18. 11. 2008. 
  23. ^ „IronPython Performance Report”. Pristupljeno 5. 10. 2009. [mrtva veza]
  24. ^ „IronPython at python.org”. python.org. Pristupljeno 4. 4. 2011. „'IronPython has no GIL and multi-threaded code can use multi core processors.' 
  25. ^ „Python's Hardest Problem, Revisited[[Kategorija:Botovski naslovi]]”. Arhivirano iz originala 31. 10. 2015. g. Pristupljeno 29. 10. 2015.  Sukob URL—vikiveza (pomoć)

Spoljašnje veze[uredi | uredi izvor]