آيرون بايثون
IronPython هو تطبيق للغة البرمجة بايثون، مُصمم خصيصًا لإطاري عمل .NET و Mono . يتولى فريق من المتطوعين حاليًا صيانة المشروع على منصة GitHub . وهو برنامج مجاني ومفتوح المصدر، ويمكن استخدامه مع أدوات بايثون لـ Visual Studio، وهي إضافة مجانية ومفتوحة المصدر لبيئة تطوير Visual Studio المتكاملة من مايكروسوفت . [ 2 ] [ 3 ]
تم كتابة IronPython بالكامل بلغة C# ، على الرغم من أن بعض أكوادها يتم إنشاؤها تلقائيًا بواسطة مولد أكواد مكتوب بلغة Python.
تم تطوير IronPython باستخدام بيئة تشغيل اللغات الديناميكية (DLR)، وهي مكتبة تعمل على البنية التحتية للغة المشتركة (CIN) وتوفر، من بين أمور أخرى، ميزات مثل الكتابة الديناميكية وإرسال الدوال الديناميكية للغات الديناميكية. [ 4 ] تُعد DLR جزءًا من إطار عمل .NET 4.0، كما أنها جزء من Mono منذ الإصدار 2.4 عام 2009. [ 5 ] ويمكن أيضًا استخدام DLR كمكتبة في تطبيقات سطر الأوامر القديمة.
الوضع وخارطة الطريق
أنشأ جيم هوغونين المشروع وساهم فيه بفعالية حتى الإصدار 1.0 الذي صدر في 5 سبتمبر 2006. [ 6 ] وصدر IronPython 2.0 في 10 ديسمبر 2008. [ 7 ] بعد الإصدار 1.0، تولى فريق صغير في مايكروسوفت صيانته حتى إصدار النسخة التجريبية 2.7 بيتا 1. تخلت مايكروسوفت عن IronPython (ومشروعه الشقيق IronRuby ) في أواخر عام 2010، وبعدها انتقل هوغونين للعمل في جوجل. [ 8 ] ويتولى حاليًا مجموعة من المتطوعين على منصة GitHub صيانة المشروع .
- الإصدار 2.0، الذي صدر في 10 ديسمبر 2008، وتم تحديثه إلى 2.0.3 في 23 أكتوبر 2009، يستهدف CPython 2.5. [ 9 ] يتوافق IronPython 2.0.3 فقط مع .NET Framework 3.5.
- الإصدار 2.6، الذي صدر في 11 ديسمبر 2009 وتم تحديثه في 12 أبريل 2010، يستهدف CPython 2.6. [ 10 ] إصدار IronPython 2.6.1 متوافق ثنائيًا فقط مع .NET Framework 4.0. يجب تجميع IronPython 2.6.1 من المصادر لتشغيله على .NET Framework 3.5. إصدار IronPython 2.6.2، الذي صدر في 21 أكتوبر 2010، متوافق ثنائيًا مع كل من .NET Framework 4.0 و .NET Framework 3.5.
- تم إصدار الإصدار 2.7 في 12 مارس 2011 وهو يستهدف CPython 2.7. [ 11 ]
- تم إصدار الإصدار 2.7.1 في 21 أكتوبر 2011 وهو يستهدف CPython 2.7. [ 12 ]
- تم إصدار النسخة 2.7.2.1 في 13 مارس 2012. وهي تدعم مكتبات تنسيق ملفات ZIP و SQLite والملفات التنفيذية المُجمّعة. [ 13 ]
- تم إصدار النسخة 2.7.4 في 7 سبتمبر 2013. [ 14 ]
- تم إصدار النسخة 2.7.5 في 6 ديسمبر 2014، وتتضمن في الغالب إصلاحات للأخطاء. [ 15 ]
- تم إصدار النسخة 2.7.6 في 21 أغسطس 2016، وهي تتضمن فقط إصلاحات للأخطاء. [ 16 ]
- تم إصدار النسخة 2.7.7 في 7 ديسمبر 2016، وهي تتضمن فقط إصلاحات للأخطاء. [ 17 ]
- صدر الإصدار 2.7.8 في 16 فبراير 2018، ويتضمن إصلاحات للأخطاء، وإعادة تنظيم الكود، وبنية اختبار محدثة (بما في ذلك اختبارات مكثفة على نظام لينكس باستخدام Mono ). وهو أيضًا أول إصدار يدعم .NET Core . [ 18 ]
- تم إصدار النسخة 2.7.9 في 9 أكتوبر 2018، وتتضمن إصلاحات للأخطاء وإعادة تنظيم الكود. ومن المقرر أن تكون هذه النسخة الأخيرة قبل إصدار IronPython 3. [ 19 ]
- تم إصدار النسخة 2.7.10 في 27 أبريل 2020، وهي تضيف دعمًا لـ .NET Core 3.1. [ 20 ]
- تم إصدار الإصدار 2.7.11 في 17 نوفمبر 2020، وهو يحل المشكلات التي تحدث عند التشغيل على .NET 5 .
- تم إصدار الإصدار 2.7.12 في 21 يناير 2022، وهو يحل المشكلات المتعلقة بـ .NET 6 ويزيل دعم .NET core 2.1 [ 21 ]
- تم إصدار الإصدار 3.4.0 في 12 ديسمبر 2022 وهو أول إصدار يدعم Python 3.x. [ 22 ]
- تم إصدار النسخة 3.4.1 في 12 يوليو 2023، وتتضمن وضع UTF-8 ، ودعم وحدة الكتابة في المكتبة القياسية، بالإضافة إلى العديد من إصلاحات الأخطاء. [ 23 ]
- تم إصدار الإصدار 3.4.2 في 20 ديسمبر 2024 ويتضمن إصلاحات للأخطاء، بما في ذلك مشكلة تمنع الاستخدام على .NET 9. [ 24 ]
الاختلافات مع CPython
توجد بعض الاختلافات بين تطبيق بايثون المرجعي CPython وتطبيق IronPython. [ 25 ] من المعروف أن بعض المشاريع المبنية على IronPython لا تعمل على CPython. [ 26 ] في المقابل، فإن تطبيقات CPython التي تعتمد على إضافات للغة مكتوبة بلغة C غير متوافقة مع IronPython، [ 27 ] إلا إذا تم تنفيذها باستخدام .NET interop. على سبيل المثال، قامت مايكروسوفت بتغليف NumPy في عام 2011، مما سمح بتشغيل التعليمات البرمجية والمكتبات التي تعتمد عليها مباشرةً من .NET Framework. [ 28 ]
سيلفرلايت
يدعم IronPython منصة Silverlight (التي أوقفت مايكروسوفت دعمها، وقد فقدت بالفعل دعمها في معظم متصفحات الويب [ 29 ] ). ويمكن استخدامه كمحرك برمجة نصية في المتصفح تمامًا مثل محرك JavaScript . [ 30 ] تُمرر نصوص IronPython النصية كنصوص JavaScript بسيطة من جانب العميل باستخدام <script>وسوم <script>. ومن ثم، يُمكن أيضًا تعديل ترميز XAML المُضمّن .
تُسمى التقنية الكامنة وراء ذلك "الجشطالت". [ 31 ]
<!-- نص برمجي لتهيئة DLR. --> < script src = " http://gestalt.ironpython.net/dlr-latest.js" type = "text/javascript" > </script><!-- نص برمجي من جانب العميل يتم تمريره إلى IronPython و Silverlight. --> < script type = " text / python" > window.Alert ( " Hello from Python" ) </script>وينطبق الأمر نفسه على IronRuby .
رخصة
حتى الإصدار 0.6، كان IronPython يُصدر بموجب شروط رخصة Common Public License . [ 32 ] بعد تعيين قائد المشروع في أغسطس 2004، أُتيح IronPython كجزء من مبادرة المصادر المشتركة لشركة مايكروسوفت . هذه الرخصة غير معتمدة من قِبل مبادرة المصادر المفتوحة (OSI) ، لكن المؤلفين يدّعون أنها تُلبي تعريف المصادر المفتوحة. [ 33 ] مع إصدار النسخة التجريبية 2.0، تم تغيير الرخصة إلى رخصة مايكروسوفت العامة ، [ 34 ] التي اعتمدتها مبادرة المصادر المفتوحة. تُصدر أحدث الإصدارات بموجب شروط رخصة أباتشي 2.0 .
قابلية توسيع الواجهة
تتمثل إحدى المزايا الرئيسية لـ IronPython في وظيفتها كطبقة قابلة للتوسيع لأطر عمل التطبيقات المكتوبة بلغة .NET. من السهل نسبيًا دمج مترجم IronPython في إطار عمل تطبيق .NET موجود. بمجرد اكتمال الدمج، يمكن للمطورين استخدام البرامج النصية المكتوبة بلغة IronPython للتفاعل مع كائنات .NET في إطار العمل، وبالتالي توسيع وظائف واجهة إطار العمل، دون الحاجة إلى تغيير أي جزء من قاعدة بيانات إطار العمل. [ 35 ]
يستخدم IronPython تقنية الانعكاس بشكل مكثف . فعند تمرير مرجع إلى كائن .NET، يقوم تلقائيًا باستيراد الأنواع والأساليب المتاحة لهذا الكائن. ينتج عن ذلك تجربة استخدام سلسة للغاية عند التعامل مع كائنات .NET من داخل سكربت IronPython.
أمثلة
يقوم البرنامج النصي التالي المكتوب بلغة IronPython بمعالجة كائنات .NET Framework. يمكن لمطور تطبيقات العميل الخارجي توفير هذا البرنامج النصي وتمريره إلى إطار عمل الخادم عبر واجهة. تجدر الإشارة إلى أنه لم يتم تعديل الواجهة أو كود الخادم لدعم التحليلات المطلوبة لتطبيق العميل.
من BookService استورد BookDictionarybooksWrittenByBookerPrizeWinners = [ book . Title for book in BookDictionary . GetAllBooks () if "Booker Prize" in book . Author . MajorAwards ]في هذه الحالة، افترض أن إطار عمل .NET يقوم بتنفيذ فئة، BookDictionary ، في وحدة تسمى BookService ، وينشر واجهة يمكن إرسال وتنفيذ نصوص IronPython إليها.
عند إرسال هذا النص البرمجي إلى تلك الواجهة، سيتكرر على القائمة الكاملة للكتب التي يحتفظ بها الإطار، وسيختار تلك التي كتبها مؤلفون حائزون على جائزة بوكر.
الأمر المثير للاهتمام هو أن مسؤولية كتابة التحليلات الفعلية تقع على عاتق مطور جانب العميل. أما متطلبات مطور جانب الخادم فهي ضئيلة، وتقتصر في الأساس على توفير الوصول إلى البيانات التي يحتفظ بها الخادم. يُسهّل هذا النمط التصميمي بشكل كبير نشر وصيانة أطر التطبيقات المعقدة.
يستخدم البرنامج النصي التالي إطار عمل .NET لإنشاء رسالة "Hello World" بسيطة.
استيراد clr clr.AddReference ( " System.Windows.Forms " )from System.Windows.Forms import MessageBox MessageBox.Show ( " Hello World " )أداء
تعتمد خصائص أداء IronPython مقارنةً بـ CPython ، وهي النسخة المرجعية للغة بايثون، على معيار الأداء المستخدم. يُظهر IronPython أداءً أسوأ من CPython في معظم معايير الأداء التي تُجرى باستخدام برنامج PyStone النصي، ولكنه يتفوق عليه في معايير أخرى. [ 36 ] قد يكون أداء IronPython أفضل في برامج بايثون التي تستخدم الخيوط أو المعالجات متعددة النوى، نظرًا لاحتوائه على مُترجم JIT ، وأيضًا لعدم احتوائه على قفل المفسر العام . [ 37 ] [ 38 ]
نظرة عامة والميزات الرئيسية
- التكامل مع .NET : يتيح لك IronPython استخدام مكتبات وأطر عمل .NET مباشرةً في كود بايثون الخاص بك. هذا يعني أنه يمكنك الاستفادة من النظام البيئي الواسع لـ .NET والوصول إلى الميزات الخاصة ببيئات .NET.
- وقت تشغيل اللغة الديناميكية (DLR) : يعمل IronPython على وقت تشغيل اللغة الديناميكية، وهو عبارة عن مجموعة من الخدمات التي تدعم الكتابة الديناميكية واستدعاء الأساليب الديناميكية في لغات .NET.
- التوافقية : يمكنك استدعاء كود .NET من IronPython والعكس صحيح. وهذا يُتيح دمج نصوص بايثون البرمجية مع تطبيقات .NET الحالية أو استخدام مكونات .NET ضمن مشاريع بايثون.
- بناء الجملة والدلالات : يهدف IronPython إلى أن يكون أقرب ما يمكن إلى لغة Python القياسية (CPython)، على الرغم من أنه قد تكون هناك اختلافات طفيفة بسبب منصة .NET الأساسية.
- الأداء : على الرغم من أن IronPython يوفر أداءً جيدًا للعديد من التطبيقات، إلا أنه قد لا يكون بنفس سرعة CPython في بعض المهام، وخاصة تلك التي تعتمد بشكل كبير على مكتبات Python الأصلية.
- التوافق : يتوافق IronPython مع Python 2.x، ولكنه لا يدعم ميزات Python 3.x. هذا يعني أن بعض مكتبات Python أو صيغها الأحدث قد لا تكون متاحة.
انظر أيضاً
- Boo – لغة لإطار عمل .NET و Mono مع بنية مستوحاة من لغة Python وميزات مستعارة من لغتي C# و Ruby
- الكوبرا
- مخطط الحديد
- جيثون – تطبيق للغة بايثون لآلة جافا الافتراضية
- سيثون
- باي باي – مترجم ذاتي الاستضافة للغة البرمجة بايثون
- Unladen Swallow – فرع (متوقف الآن) من CPython كان يهدف إلى توفير أداء فائق باستخدام مترجم فوري قائم على LLVM
مراجع
- ↑ "أرشيف كود بليكس" . مؤرشف من الأصل بتاريخ 26-12-2017 . تم الاطلاع عليه بتاريخ 30-05-2014 .
- ↑ "IronPython.net" . تم الاطلاع عليه بتاريخ 2013-07-03 .
- ↑ "أدوات بايثون لـ Visual Studio - الصفحة الرئيسية" . أدوات بايثون لـ Visual Studio . مؤرشف من الأصل بتاريخ 26 يناير 2018. تم الاطلاع عليه بتاريخ 3 يوليو 2013 .
- ↑ "نظرة عامة على وقت تشغيل اللغة الديناميكية" . مايكروسوفت . تم الاسترجاع في 1 أبريل 2014 .
- ^ "02-07-2009 ماريك سفر · mono/Mono@340222f" . جيثب .
- ↑ مدونة جيم هوغونين: تم إصدار IronPython 1.0 اليوم! . 2006-09-05 . تم الاطلاع عليه بتاريخ 2006-12-14 .
- ↑ "مواعيد إصدار IronPython" . 10-12-2008 . تم الاطلاع عليه بتاريخ 25-01-2009 .
- ↑ كلارك، جافين (22 أكتوبر 2010). "مايكروسوفت تتخلى عن لغات Iron" . ذا ريجستر . تم الاسترجاع في 5 أبريل 2012 .
- ↑ "2.0.3" . ironpython.codeplex.com. مؤرشف من الأصل بتاريخ 26-12-2017 . تم الاطلاع عليه بتاريخ 16-10-2010 .
- ↑ "2.6" . ironpython.codeplex.com. مؤرشف من الأصل بتاريخ 13 يناير 2018. تم الاطلاع عليه بتاريخ 16 أكتوبر 2010 .
- ↑ "2.7" . ironpython.codeplex.com. مؤرشف من الأصل بتاريخ 2018-01-02 . تم الاطلاع عليه بتاريخ 2011-03-12 .
- ↑ "2.7.1" . ironpython.codeplex.com. مؤرشف من الأصل بتاريخ 26-12-2017 . تم الاطلاع عليه بتاريخ 30-12-2011 .
- ↑ "2.7.2.1" . ironpython.codeplex.com. مؤرشف من الأصل بتاريخ 26-12-2017 . تم الاطلاع عليه بتاريخ 24-03-2012 .
- ↑ "2.7.4" . ironpython.codeplex.com. مؤرشف من الأصل بتاريخ 16 يناير 2018. تم الاطلاع عليه بتاريخ 7 ديسمبر 2014 .
- ↑ "2.7.5" . ironpython.codeplex.com. مؤرشف من الأصل بتاريخ 26-01-2018 . تم الاطلاع عليه بتاريخ 07-12-2014 .
- ↑ "2.7.6" . github.com . تم الاطلاع عليه بتاريخ 21-08-2016 .
- ↑ "2.7.7" . github.com . تم الاطلاع عليه بتاريخ 2018-01-05 .
- ↑ "2.7.8" . github.com . تم الاطلاع عليه بتاريخ 2018-01-05 .
- ↑ "2.7.9" . github.com . تم الاطلاع عليه بتاريخ 2018-10-09 .
- ↑ "IronLanguages/ironpython2" . GitHub . تم الاطلاع عليه بتاريخ 26-06-2020 .
- ↑ "الإصدارات · IronLanguages/ironpython2" . GitHub . تم الاطلاع عليه بتاريخ 2022-08-08 .
- ↑ "الإصدارات · IronLanguages/ironpython3" . GitHub . تم الاطلاع عليه بتاريخ 2023-07-09 .
- ↑ IronLanguages. "إصدار IronPython 3.4.1 · IronLanguages/ironpython3" . GitHub . تم الاطلاع عليه بتاريخ 26-04-2026 .
- ↑ IronLanguages. "إصدار IronPython 3.4.2 · IronLanguages/ironpython3" . GitHub . تم الاطلاع عليه بتاريخ 26-04-2026 .
- ↑ "الاختلافات بين IronPython 1.0 و CPython 2.4.3" . مايكروسوفت . 18 ديسمبر 2007. تاريخ الاسترجاع: 9 فبراير 2008 .
- ↑ فورد، مايكل. "مشروع جديد: تطبيق مكتبات .NET بلغة بايثون خالصة" . مؤرشف من الأصل بتاريخ 30 أغسطس 2008. تم الاطلاع عليه بتاريخ 9 فبراير 2008 .
- ↑ إيبي، فيليب (15 أكتوبر 2005). "أبناء ثعبان بايثون صغير" . تم الاسترجاع في 9 يوليو 2008 .
- ↑ "NumPy و SciPy لـ .NET" . تم الاطلاع عليه بتاريخ 2019-04-05 .
- ↑ "متطلبات نظام Silverlight 5" . www.microsoft.com . تم الاطلاع عليه بتاريخ 16 نوفمبر 2019 .
- ↑ "اكتب تطبيقات متصفح بلغة بايثون" . IronPython.net . مؤرشف من الأصل بتاريخ 17-03-2013.
- ↑ "تضمين بايثون، وروبي، وXAML مباشرةً في صفحة HTML الخاصة بك باستخدام Gestalt" . InfoQ . تم الاطلاع عليه بتاريخ 26-04-2026 .
- ↑ "الصفحة الرئيسية الأصلية لـ IronPython" . 28-07-2004. مؤرشفة من الأصل في 23 فبراير 2010. تم الاطلاع عليها في 13-05-2007 .
- ↑ "رخصة المصدر المشترك لـ IronPython" . 2006-04-28 . تم الاطلاع عليه بتاريخ 2007-05-13 .
- ↑ "رخصة مايكروسوفت المتساهلة" . 28-04-2007 . تم الاطلاع عليه بتاريخ 13-05-2007 .
- ↑ "استخدام كائنات .NET من IronPython في Resolver One" . مؤرشف من الأصل بتاريخ 14 يناير 2009. تم الاطلاع عليه بتاريخ 18 نوفمبر 2008 .
- ↑ "تقرير أداء IronPython" . تم الاطلاع عليه بتاريخ 2009-10-05 .
{{cite web}}: CS1 maint: deprecated archiveal service ( link ) - ↑ "IronPython at python.org" . python.org . تم الاطلاع عليه بتاريخ 4 أبريل 2011.
لا يحتوي IronPython على GIL ويمكن للتعليمات البرمجية متعددة الخيوط استخدام معالجات متعددة النوى.
- ↑ "أصعب مشكلة في بايثون، إعادة النظر فيها" . مؤرشف من الأصل بتاريخ 31-10-2015 . تم الاطلاع عليه بتاريخ 15-07-2015 .
روابط خارجية
- لغات برمجة .NET
- برنامج مجاني مكتوب بلغة سي شارب
- برامج مايكروسوفت المجانية
- لغات برمجة مايكروسوفت
- تطبيقات لغة البرمجة بايثون
- مكتبات لغة البرمجة بايثون
- برنامج يستخدم ترخيص أباتشي
- برنامج 2006
