आयरनपायथन

From Vigyanwiki

आयरनपायथन .नेट रूपरेखा और मोनो (सॉफ्टवेयर) को लक्षित करने वाले पायथन (प्रोग्रामिंग भाषा) का कार्यान्वयन है। जिम ह्यूगुनिन ने परियोजना बनाई और संस्करण 1.0 तक सक्रिय रूप से योगदान दिया, जो 5 सितंबर, 2006 को प्रचलित किया गया था।[1] आयरनपायथन 2.0 को 10 दिसंबर, 2008 को प्रचलित किया गया था।[2] संस्करण 1.0 के बाद इसे 2.7 बीटा 1 रिलीज़ होने तक माइक्रोसॉफ्ट की छोटी टीम द्वारा बनाए रखा गया था। माइक्रोसॉफ्ट ने 2010 के अंत में आयरनपायथन (और उसकी बहन परियोजना आयरनरूबी) को छोड़ दिया, जिसके बाद ह्यूगुनिन ने गूगल में काम करना छोड़ दिया।[3] परियोजना वर्तमान में गिटहब में स्वयंसेवकों के समूह द्वारा रखी गई है। यह निःशुल्क और ओपन-सोर्स सॉफ्टवेयर है, और विजुअल स्टूडियो के लिए पायथन उपकरणों के साथ प्रयुक्त किया जा सकता है, जो माइक्रोसॉफ्ट के विजुअल स्टूडियो आईडीई के लिए निःशुल्क और ओपन-सोर्स विस्तार है।[4][5]

आयरनपायथन पूरी तरह से C शार्प (प्रोग्रामिंग भाषा) C# में लिखा गया है, चूंकि इसका कुछ कोड पायथन में लिखे गए स्रोत कोड पीढ़ी द्वारा स्वचालित रूप से उत्पन्न होता है।

आयरनपायथन को गतिशील भाषा रनटाइम (डीएलआर) के शीर्ष पर प्रयुक्त किया गया है, जो सामान्य भाषा इन्फ्रास्ट्रक्चर के शीर्ष पर चलने वाली पुस्तकालय है जो डायनेमिक टाइपिंग और डायनामिक विधि डिस्पैच, अन्य बातों के अतिरिक्त, डायनेमिक भाषाओं के लिए प्रदान करती है।[6] डीएलआर .नेट रूपरेखा 4.0 का भाग है और 2009 से संस्करण 2.4 के बाद से मोनो का भी भाग है।[7] डीएलआर का उपयोग पुराने सीएलआई कार्यान्वयनों पर पुस्तकालय के रूप में भी किया जा सकता है।

स्थिति और रोडमैप

  • रिलीज़ 2.0, 10 दिसंबर, 2008 को प्रचलित किया गया, और 23 अक्टूबर, 2009 को 2.0.3 के रूप में अपडेट किया गया, C पायथन 2.5 को लक्षित करता है।[8] आयरनपायथन 2.0.3 केवल .नेट रूपरेखा 3.5 तक संगत है।
  • रिलीज़ 2.6, 11 दिसंबर, 2009 को रिलीज़ हुई और 12 अप्रैल, 2010 को अपडेट की गई, C पायथन 2.6 को लक्षित करती है।[9] आयरनपायथन 2.6.1 संस्करण केवल .नेट रूपरेखा 4.0 के साथ बाइनरी संगत है। आयरनपायथन 2.6.1 को .नेट रूपरेखा 3.5 पर चलने के लिए स्रोतों से संकलित किया जाना चाहिए। आयरनपायथन 2.6.2, 21 अक्टूबर, 2010 को प्रचलित किया गया, .नेट रूपरेखा 4.0 और .नेट रूपरेखा 3.5 दोनों के साथ बाइनरी संगत है।
  • रिलीज 2.7 12 मार्च, 2011 को प्रचलित किया गया था और यह सीपीथॉन 2.7 को लक्षित करता है।[10]
  • रिलीज 2.7.1 21 अक्टूबर, 2011 को प्रचलित किया गया था और यह C पायथन 2.7 को लक्षित करता है।[11]
  • रिलीज 2.7.2.1 13 मार्च 2012 को प्रचलित किया गया था। यह ज़िप फ़ाइल स्वरूप पुस्तकालय, एसक्यू लाइट, और संकलित निष्पादनयोग्य के लिए समर्थन को सक्षम बनाता है।[12]
  • रिलीज़ 2.7.4 को 7 सितंबर, 2013 को रिलीज़ किया गया था।[13]
  • रिलीज़ 2.7.5 को 6 दिसंबर 2014 को रिलीज़ किया गया था और इसमें अधिकतर बग फिक्स सम्मिलित हैं।[14]
  • रिलीज़ 2.7.6 को 21 अगस्त 2016 को रिलीज़ किया गया था और इसमें केवल बग फिक्स सम्मिलित हैं।[15]
  • रिलीज़ 2.7.7 को 7 दिसंबर, 2016 को रिलीज़ किया गया था और इसमें केवल बग फिक्स सम्मिलित हैं।[16]
  • रिलीज 2.7.8 16 फरवरी, 2018 को प्रचलित किया गया था और इसमें बग फिक्स, पुनर्गठित कोड और अद्यतन परीक्षण आधारभूत संरचना सम्मिलित है (मोनो (सॉफ्टवेयर) के अनुसार लिनक्स पर महत्वपूर्ण परीक्षण सहित)। यह .नेट कोर को समर्थन करने वाली पहली रिलीज़ भी है।[17]
  • रिलीज़ 2.7.9 को 9 अक्टूबर, 2018 को रिलीज़ किया गया था और इसमें बग फिक्स, पुनर्गठित कोड सम्मिलित हैं। यह आयरनपायथन 3 से पहले अंतिम रिलीज होने का आशय है।[18]
  • रिलीज़ 2.7.10 को 27 अप्रैल, 2020 को रिलीज़ किया गया था और इसमें .नेट कोर 3.1 समर्थन में जोड़ा गया है।[19]
  • रिलीज़ 2.7.11 को 17 नवंबर, 2020 को रिलीज़ किया गया था और .नेट 5 पर चलते समय आने वाली समस्याओं का समाधान करता है।
  • रिलीज़ 2.7.12 को 21 जनवरी, 2022 को रिलीज़ किया गया था और यह .नेट 6 की समस्याओं को हल करती है और .नेट कोर 2.1 के लिए समर्थन हटाती है[20]

C पायथन के साथ अंतर

पायथन संदर्भ कार्यान्वयन C पायथन और आयरनपायथन के बीच कुछ अंतर हैं।[21] आयरनपायथन के शीर्ष पर बनी कुछ परियोजनाओं को C पायथन के अंतर्गत काम नहीं करने के लिए जाना जाता है।[22] इसके विपरीत, C पायथन अनुप्रयोग जो C में प्रयुक्त की गई भाषा के विस्तार पर निर्भर करते हैं, वे आयरनपायथन के साथ संगत नहीं हैं ।

[23] जब तक कि उन्हें .नेट इंटरॉप में प्रयुक्त नहीं किया जाता। उदाहरण के लिए, नमपैय को माइक्रोसॉफ्ट द्वारा 2011 में लपेटा गया था, जिससे उस पर निर्भर कोड और पुस्तकालय को सीधे .नेट रूपरेखा से चलाया जा सके।[24]

सिल्वरलाइट

आयरनपायथन सिल्वरलाइट पर समर्थित है (जिसे माइक्रोसॉफ्ट द्वारा बहिष्कृत किया गया है और पहले से ही अधिकांश वेब ब्राउज़रों में समर्थन खो चुका है[25])। इसे जावास्क्रिप्ट इंजन की तरह ही ब्राउजर में स्क्रिप्टिंग इंजन के रूप में प्रयोग किया जा सकता है।[26] आयरनपायथन <script>-टैग को साधारण क्लाइंट-साइड जावास्क्रिप्ट स्क्रिप्ट्स की तरह पास किया जाता है। तब एम्बेडेड एक्स एएमएल मार्कअप को संशोधित करना भी संभव है।

इसके पीछे की तकनीक को गेस्टाल्ट कहा जाता है।

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

आयरनरूबी के लिए भी यही काम करता है।

लाइसेंस

संस्करण 0.6 तक, आयरनपायथन को सामान्य सार्वजनिक लाइसेंस की नियमों के अनुसार प्रचलित किया गया था।[27] अगस्त 2004 में प्रोजेक्ट लीड की भर्ती के बाद, आयरनपायथन को माइक्रोसॉफ्ट की साझा स्रोत पहल के भाग के रूप में उपलब्ध कराया गया था। यह लाइसेंस ओपन सोर्स पहल-अनुमोदित नहीं है, लेकिन लेखकों का प्रमाण है कि यह ओपन-सोर्स की परिभाषा को पूरा करता है।[28] 2.0 अल्फ़ा रिलीज़ के साथ, लाइसेंस को माइक्रोसॉफ्ट सार्वजनिक लाइसेंस में बदल दिया गया था,[29] जिसे ओएसआई ने स्वीकृति दे दी है। नवीनतम संस्करण अपाचे लाइसेंस 2.0 की नियमों के अनुसार प्रचलित किए गए हैं।

इंटरफ़ेस एक्स्टेंसिबिलिटी

आयरनपायथन के प्रमुख लाभों में से एक .नेट भाषा में लिखे गए अनुप्रयोग रूपरेखा के लिए एक्स्टेंसिबिलिटी परत के रूप में इसका कार्य है। आयरनपायथन दुभाषिया को उपस्थित .नेट अनुप्रयोग रूपरेखा में एकीकृत करना अपेक्षाकृत सरल है। एक बार स्थापित हो जाने के बाद, डाउनस्ट्रीम डेवलपर आयरनपायथन में लिखी गई स्क्रिप्ट का उपयोग कर सकते हैं जो रूपरेखा में .नेट ऑब्जेक्ट्स के साथ इंटरैक्ट करती हैं, जिससे रूपरेखा के किसी भी कोड बेस को बदले बिना रूपरेखा के इंटरफेस में कार्यक्षमता का विस्तार होता है।[30]

आयरनपायथन प्रतिबिंब का व्यापक उपयोग करता है। जब किसी .नेट ऑब्जेक्ट के संदर्भ में पास किया जाता है, तो यह स्वचालित रूप से उस ऑब्जेक्ट के लिए उपलब्ध प्रकारों और विधियों को आयात करेगा। यह आयरनपायथन स्क्रिप्ट के अन्दर .नेट ऑब्जेक्ट्स के साथ काम करते समय अत्यधिक सहज अनुभव का परिणाम देता है।

उदाहरण

निम्नलिखित आयरनपायथन स्क्रिप्ट .नेट रूपरेखा ऑब्जेक्ट्स में हेरफेर करती है। यह स्क्रिप्ट तृतीय-पक्ष क्लाइंट-साइड अनुप्रयोग डेवलपर द्वारा आपूर्ति की जा सकती है और इंटरफ़ेस के माध्यम से सर्वर-साइड रूपरेखा में पास की जा सकती है। ध्यान दें कि क्लाइंट अनुप्रयोग द्वारा आवश्यक विश्लेषणों का समर्थन करने के लिए न तो इंटरफ़ेस और न ही सर्वर-साइड कोड को संशोधित किया गया है।

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

इस स्थिति में, मान लें कि .नेट रूपरेखा बुक सेवा नामक मॉड्यूल में वर्ग, बुक डिक्शनरी को प्रयुक्त करता है, और इंटरफ़ेस प्रकाशित करता है जिसमें आयरनपायथन स्क्रिप्ट को भेजा और निष्पादित किया जा सकता है।

यह स्क्रिप्ट, जब उस इंटरफ़ेस पर भेजी जाती है, तो रूपरेखा द्वारा अनुरक्षित पुस्तकों की पूरी सूची पर पुनरावृति करेगी, और बुकर पुरस्कार विजेता लेखकों द्वारा लिखी गई पुस्तकों को चुनेगी।

आनंद की बात यह है कि वास्तविक विश्लेषण लिखने की उत्तरदायिता क्लाइंट-साइड डेवलपर की है। सर्वर-साइड डेवलपर की मांग न्यूनतम है, अनिवार्य रूप से केवल सर्वर द्वारा अनुरक्षित डेटा तक पहुंच प्रदान करना। यह डिज़ाइन पैटर्न जटिल अनुप्रयोग रूपरेखा की नियुक्ति और देखरेख को बहुत सरल करता है।

निम्न स्क्रिप्ट सरल हैलो वर्ल्ड संदेश बनाने के लिए .नेट रूपरेखा का उपयोग करती है।

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

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

प्रदर्शन

C पायथन की तुलना में आयरनपायथन की प्रदर्शन विशेषताएँ, पायथन का संदर्भ कार्यान्वयन, उपयोग किए गए स्पष्ट बेंचमार्क पर निर्भर करता है। थ्रिस्टोन स्क्रिप्ट के साथ लिए गए अधिकांश बेंचमार्क पर आयरनपायथन सीपायथन से खराब प्रदर्शन करता है लेकिन अन्य बेंचमार्क पर अच्छा है।[31]

आयरनपायथन पायथन प्रोग्राम्स में अच्छा प्रदर्शन कर सकता है जो थ्रेड्स या मल्टीपल कोर का उपयोग करते हैं, क्योंकि इसमें समय-समय पर संकलन कंपाइलर है, और इसलिए भी कि इसमें ग्लोबल इंटरप्रेटर लॉक नहीं है।[32][33]

यह भी देखें


संदर्भ

  1. "Jim Hugunin's blog: IronPython 1.0 released today!". 2006-09-05. Retrieved 2006-12-14.
  2. "Release dates for ironpython". 2008-12-10. Retrieved 2009-01-25.
  3. Clarke, Gavin (2010-10-22). "Microsoft cuts loose Iron languages". The Register. Retrieved 2012-04-05.
  4. "IronPython.net". Retrieved 2013-07-03.
  5. "Python Tools for Visual Studio- Home". Python Tools for Visual Studio. Archived from the original on 2018-01-26. Retrieved 2013-07-03.
  6. "Dynamic Language Runtime Overview". Microsoft. Retrieved 2014-04-01.
  7. "2009-07-02 Marek Safar · mono/Mono@340222f". GitHub.
  8. "2.0.3". ironpython.codeplex.com. Archived from the original on 2017-12-26. Retrieved 2010-10-16.
  9. "2.6". ironpython.codeplex.com. Archived from the original on 2018-01-13. Retrieved 2010-10-16.
  10. "2.7". ironpython.codeplex.com. Archived from the original on 2018-01-02. Retrieved 2011-03-12.
  11. "2.7.1". ironpython.codeplex.com. Archived from the original on 2017-12-26. Retrieved 2011-12-30.
  12. "2.7.2.1". ironpython.codeplex.com. Archived from the original on 2017-12-26. Retrieved 2012-03-24.
  13. "2.7.4". ironpython.codeplex.com. Archived from the original on 2018-01-16. Retrieved 2014-12-07.
  14. "2.7.5". ironpython.codeplex.com. Archived from the original on 2018-01-26. Retrieved 2014-12-07.
  15. "2.7.6". github.com. Retrieved 2016-08-21.
  16. "2.7.7". github.com. Retrieved 2018-01-05.
  17. "2.7.8". github.com. Retrieved 2018-01-05.
  18. "2.7.9". github.com. Retrieved 2018-10-09.
  19. "IronLanguages/ironpython2". GitHub (in English). Retrieved 2020-06-26.
  20. "Releases · IronLanguages/ironpython2". GitHub (in English). Retrieved 2022-08-08.
  21. "Differences between IronPython 1.0 and CPython 2.4.3". Microsoft. 2007-12-18. Retrieved 2008-02-09.
  22. Foord, Michael. "New Project: Implementing .NET Libraries in Pure Python". Archived from the original on 2008-08-30. Retrieved 2008-02-09.
  23. Eby, Phillip (15 October 2005). "Children of a Lesser Python". Retrieved 2008-07-09.
  24. "NumPy and SciPy for .NET". Retrieved 2019-04-05.
  25. "Silverlight 5 System Requirements". www.microsoft.com. Retrieved 2019-11-16.
  26. "Write browser applications in Python". IronPython.net. Archived from the original on 2013-03-17.
  27. "Original IronPython homepage". 2004-07-28. Archived from the original on February 23, 2010. Retrieved 2007-05-13.
  28. "Shared Source License for IronPython". 2006-04-28. Retrieved 2007-05-13.
  29. "Microsoft permissive license". 2007-04-28. Retrieved 2007-05-13.
  30. "Using .NET objects from IronPython in Resolver One". Archived from the original on 2009-01-14. Retrieved 2008-11-18.
  31. "IronPython Performance Report". Retrieved 2009-10-05.[permanent dead link]
  32. "IronPython at python.org". python.org. Retrieved 2011-04-04. IronPython has no GIL and multi-threaded code can use multi core processors.
  33. "Python's Hardest Problem, Revisited". Archived from the original on 2015-10-31. Retrieved 2015-07-15.

बाहरी संबंध