आयरनपायथन

आयरनपाइथन .NET फ्रेमवर्क और मोनो (सॉफ्टवेयर) को लक्षित करने वाले पायथन (प्रोग्रामिंग भाषा) का कार्यान्वयन है। जिम ह्यूगुनिन ने परियोजना बनाई और संस्करण 1.0 तक सक्रिय रूप से योगदान दिया, जो 5 सितंबर, 2006 को जारी किया गया था। आयरनपायथन 2.0 को 10 दिसंबर, 2008 को जारी किया गया था। संस्करण 1.0 के बाद इसे 2.7 बीटा 1 रिलीज़ होने तक Microsoft की एक छोटी टीम द्वारा बनाए रखा गया था। Microsoft ने 2010 के अंत में IronPython (और उसकी बहन परियोजना IronRuby) को छोड़ दिया, जिसके बाद ह्यूगुनिन ने Google में काम करना छोड़ दिया। परियोजना वर्तमान में गिटहब में स्वयंसेवकों के एक समूह द्वारा रखी गई है। यह फ्री और ओपन-सोर्स सॉफ्टवेयर है, और विजुअल स्टूडियो के लिए पायथन टूल्स के साथ लागू किया जा सकता है, जो माइक्रोसॉफ्ट के विजुअल स्टूडियो आईडीई के लिए एक फ्री और ओपन-सोर्स एक्सटेंशन है। IronPython पूरी तरह से C Sharp (प्रोग्रामिंग लैंग्वेज)|C# में लिखा गया है, हालांकि इसका कुछ कोड Python में लिखे गए स्रोत कोड पीढ़ी द्वारा स्वचालित रूप से उत्पन्न होता है।

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

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

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

CPython
के साथ अंतर

पायथन संदर्भ कार्यान्वयन CPython और IronPython के बीच कुछ अंतर हैं। IronPython के शीर्ष पर बनी कुछ परियोजनाओं को CPython के तहत काम नहीं करने के लिए जाना जाता है। इसके विपरीत, CPython एप्लिकेशन जो C में लागू की गई भाषा के एक्सटेंशन पर निर्भर करते हैं, वे IronPython के साथ संगत नहीं हैं , जब तक कि उन्हें .NET इंटरॉप में लागू नहीं किया जाता। उदाहरण के लिए, NumPy को Microsoft द्वारा 2011 में लपेटा गया था, जिससे उस पर निर्भर कोड और लाइब्रेरी को सीधे .NET फ्रेमवर्क से चलाया जा सके।

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

इसके पीछे की तकनीक को गेस्टाल्ट कहा जाता है। <वाक्यविन्यास लैंग = html4सख्त> // डीएलआर आरंभीकरण स्क्रिप्ट। 

// क्लाइंट-साइड स्क्रिप्ट आयरनपीथन और सिल्वरलाइट को पास की गई।  विंडो। अलर्ट (पायथन से हैलो)  

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

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

इंटरफ़ेस एक्स्टेंसिबिलिटी
IronPython के प्रमुख लाभों में से एक .NET भाषा में लिखे गए एप्लिकेशन फ्रेमवर्क के लिए एक एक्स्टेंसिबिलिटी परत के रूप में इसका कार्य है। आयरनपाइथन दुभाषिया को मौजूदा .NET एप्लिकेशन फ्रेमवर्क में एकीकृत करना अपेक्षाकृत सरल है। एक बार स्थापित हो जाने के बाद, डाउनस्ट्रीम डेवलपर आयरनपाइथन में लिखी गई स्क्रिप्ट का उपयोग कर सकते हैं जो फ्रेमवर्क में .NET ऑब्जेक्ट्स के साथ इंटरैक्ट करती हैं, जिससे फ्रेमवर्क के किसी भी कोड बेस को बदले बिना फ्रेमवर्क के इंटरफेस में कार्यक्षमता का विस्तार होता है। आयरनपायथन प्रतिबिंब (कंप्यूटर विज्ञान) का व्यापक उपयोग करता है। जब किसी .NET ऑब्जेक्ट के संदर्भ में पास किया जाता है, तो यह स्वचालित रूप से उस ऑब्जेक्ट के लिए उपलब्ध प्रकारों और विधियों को आयात करेगा। यह एक IronPython स्क्रिप्ट के भीतर .NET ऑब्जेक्ट्स के साथ काम करते समय अत्यधिक सहज अनुभव का परिणाम देता है।

उदाहरण
निम्नलिखित आयरनपाइथन स्क्रिप्ट .NET फ्रेमवर्क ऑब्जेक्ट्स में हेरफेर करती है। यह स्क्रिप्ट एक तृतीय-पक्ष क्लाइंट-साइड एप्लिकेशन डेवलपर द्वारा आपूर्ति की जा सकती है और एक इंटरफ़ेस के माध्यम से सर्वर-साइड फ्रेमवर्क में पास की जा सकती है। ध्यान दें कि क्लाइंट एप्लिकेशन द्वारा आवश्यक विश्लेषणों का समर्थन करने के लिए न तो इंटरफ़ेस और न ही सर्वर-साइड कोड को संशोधित किया गया है। <वाक्यविन्यास लैंग = अजगर> BookService आयात BookDictionary से BooksWrittenByBookerPrizeWinners = [book.Title for book in BookDictionary.GetAllBooks यदि Book.Author.MajorAwards में बुकर पुरस्कार]  इस स्थिति में, मान लें कि .NET फ्रेमवर्क BookService नामक मॉड्यूल में एक वर्ग, BookDictionary को लागू करता है, और एक इंटरफ़ेस प्रकाशित करता है जिसमें आयरनपाइथन स्क्रिप्ट को भेजा और निष्पादित किया जा सकता है।

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

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

निम्न स्क्रिप्ट एक सरल हैलो वर्ल्ड संदेश बनाने के लिए .NET फ्रेमवर्क का उपयोग करती है। <वाक्यविन्यास लैंग = अजगर> आयात सीएलआर clr.AddReference (System.Windows.Forms)

System.Windows.Forms से MessageBox आयात करें संदेशबॉक्स.शो (हैलो वर्ल्ड) 

प्रदर्शन
CPython की तुलना में IronPython की प्रदर्शन विशेषताएँ, Python का संदर्भ कार्यान्वयन, उपयोग किए गए सटीक बेंचमार्क पर निर्भर करता है। थ्रिस्टोन स्क्रिप्ट के साथ लिए गए अधिकांश बेंचमार्क पर आयरनपाइथन सीपीथॉन से खराब प्रदर्शन करता है लेकिन अन्य बेंचमार्क पर बेहतर है। IronPython Python प्रोग्राम्स में बेहतर प्रदर्शन कर सकता है जो थ्रेड्स या मल्टीपल कोर का उपयोग करते हैं, क्योंकि इसमें समय-समय पर संकलन कंपाइलर है, और इसलिए भी कि इसमें ग्लोबल इंटरप्रेटर लॉक नहीं है।

यह भी देखें

 * बू (प्रोग्रामिंग भाषा) - .NET फ्रेमवर्क के लिए एक भाषा और पायथन-प्रेरित सिंटैक्स के साथ मोनो और सी शार्प (प्रोग्रामिंग भाषा) | सी # और रूबी (प्रोग्रामिंग भाषा) से उधार ली गई सुविधाएँ
 * कोबरा (प्रोग्रामिंग भाषा)
 * लोहा योजना
 * ज्योथन - जावा वर्चुअल मशीन के लिए पायथन (प्रोग्रामिंग भाषा) का कार्यान्वयन
 * साइथन
 * PyPy - पायथन प्रोग्रामिंग भाषा के लिए एक स्व-होस्टिंग दुभाषिया
 * ताओ फ्रेमवर्क
 * Unladen Swallow – CPython की एक (अब निष्क्रिय) शाखा जिसका उद्देश्य LLVM-आधारित जस्ट-इन-टाइम संकलन|जस्ट-इन-टाइम कंपाइलर का उपयोग करके बेहतर प्रदर्शन प्रदान करना है