جلد منسلخ
Shed Skin هو مُترجم تجريبي محدود النطاق للغة البرمجة C++، مُصمم لتحويل برامج بايثون (3.8+) إلى C++ . يُمكنه ترجمة برامج بايثون الأصلية، ذات الكتابة الثابتة الضمنية ، إلى C++ مُحسّنة. كما يُمكنه إنشاء برامج مستقلة أو وحدات إضافية يُمكن استيرادها واستخدامها في برامج بايثون أكبر.
Shed Skin هو مشروع مفتوح المصدر بمساهمات من العديد من الأشخاص، إلا أن المؤلف الرئيسي هو مارك دوفور . وقد بدأ العمل على Shed Skin منذ عام 2005. [ 1 ]
سمات
إلى جانب قيود الكتابة، لا يمكن للبرامج [ 2 ] استخدام مكتبة بايثون القياسية بحرية، على الرغم من دعم حوالي 20 وحدة نمطية شائعة، مثل `public` و`public` (التعبيرات النمطية)، اعتبارًا من عام 2011. كما أن بعض ميزات بايثون غير مدعومة، مثل randomالدوال itertoolsالمتداخلة reوعدد الوسائط المتغير . العديد من الأجزاء الديناميكية الاستبطانية للغة غير مدعومة. على سبيل المثال، دوال مثل `public` getattrو` hasattrpublic` غير مدعومة.
اعتبارًا من مايو 2011، لم يعد نظام يونيكود مدعومًا. [ 3 ]
اعتبارًا من يونيو 2016، بالنسبة لمجموعة من 75 برنامج اختبار غير بسيط (بإجمالي يزيد عن 25000 سطر من التعليمات البرمجية)، [ 4 ] تُظهر القياسات تسارعًا نموذجيًا يتراوح بين 2 و20 ضعفًا مقارنةً بـ Psyco ، وبين 2 و200 ضعف مقارنةً بـ CPython . [ 5 ] [ 6 ] [ 7 ] [ 8 ] لا يزال Shed Skin في مرحلة مبكرة من التطوير، لذا لن يتم تجميع العديد من البرامج الأخرى دون تعديل. [ 9 ]
يمكن استخدام Shed Skin لإنشاء ملفات تنفيذية مستقلة لا تحتاج إلا إلى مكتبات وقت تشغيل C++. كما يمكن استخدامه لإنشاء وحدات CPython. يتيح ذلك تجميع أجزاء من برامج أكبر باستخدام Shed Skin، بينما يتم تشغيل الأجزاء الأخرى باستخدام CPython العادي.
ومن الاستخدامات الأخرى تغليف فئات C++ باستخدام Shed Skin للسماح باستخدام فئات C++ كفئات Python. [ 10 ]
يخضع ترخيص شفرة المصدر لبرنامج Shed Skin لجزأين. شفرة المُصرّف الرئيسية مرخصة بموجب رخصة جنو العمومية (GPL). أما الشفرة الداعمة التي تُستخدم كمكتبة وقت التشغيل فهي مرخصة بموجب رخصة BSD أو MIT ، وذلك حسب الوحدة. وهذا يسمح بتجميع البرامج المرخصة بموجب رخصة GPL والبرامج غير المرخصة بها.
استنتاج النوع
يجمع برنامج Shed Skin بين خوارزمية الضرب الديكارتي (CPA) لأولي أغيسن وجزء تحليل التدفق التكراري (IFA) لجون بليفياك، الذي يعتمد على تعدد أشكال البيانات. [ 11 ] وقد أدخل الإصدار 0.6 تحسينات على قابلية التوسع، حيث يقوم بتحليل نسخ أكبر من البرنامج بشكل متكرر (بالإضافة إلى التقنيات المذكورة)، حتى يتم تحليله بالكامل. وهذا يسمح لبرنامج Shed Skin باستنتاج أنواع البيانات في برامج أكبر من ذي قبل. يبدأ البرنامج بمخطط استدعاءات فارغ، ثم يضيف إليه تدريجيًا حتى يكتمل. وقد نشر المؤلف رسمًا بيانيًا يوضح أوقات التحليل لخمسين برنامجًا كمثال، بإجمالي حوالي 15000 سطر. [ 12 ]
الوحدات
يدعم الإصدار 0.9 بشكل كبير الوحدات النمطية الـ 25 التالية. [ 13 ] وقد تم تجميع العديد منها، مثل os.path، إلى لغة C++ باستخدام Shed Skin.
- مصفوفة
- بيناسي
- شطر
- المجموعات (القاموس الافتراضي، قائمة الانتظار المزدوجة)
- ConfigParser (بدون SafeConfigParser)
- ينسخ
- ألوان
- ملف CSV (بدون لهجة، بدون أداة تحليل)
- التاريخ والوقت
- fnmatch
- getopt
- غلوب
- Heapq
- itertools (بدون خريطة النجوم)
- الرياضيات
- mmap
- os
- os.path
- عشوائي
- يكرر
- المقبس
- خيط
- struct (no Struct, pack_into, unpack_from)
- sys
- وقت
لاحظ أنه يمكن استخدام أي وحدة أخرى، مثل pygame أو pyqt أو pickle، مع وحدة إضافية مُولَّدة بواسطة Shed Skin . للاطلاع على أمثلة، راجع أمثلة Shed Skin .
انظر أيضاً
مراجع
- ↑ الإصدار الأول من Shed Skin
- ↑ قسم كتاب تعلم بايثون حول شيد سكين
- ↑ شرح برنامج Shed Skin (قسم قيود مجموعة بايثون الفرعية)
- ↑ "Shedskin/Shedskin" . GitHub . 17 مايو 2022.
- ↑ تسريع بايثون: Unladen مقابل Shed Skin مقابل PyPy مقابل Cython مقابل C
- ↑ التعامل مع الجلد المتساقط
- ↑ تسريع كود بايثون باستخدام Shed Skin
- ↑ MiniLight، معيار أداء مُعالج العرض ذي الإضاءة العالمية الدنيا
- ↑ صفحة ويب شيد سكين
- ↑ تغليف فئات C++ باستخدام Shed Skin
- ↑ رسالة ماجستير مارك دوفور، "Shed Skin: مُترجم مُحسِّن من بايثون إلى سي++" ، 19 أبريل 2006
- ↑ قابلية التوسع في استنتاج النوع ، 2010-2012
- ↑ ملاحظات إصدار Shedskin 0.9
روابط خارجية
- مترجمات لغة C++
- مترجمات من المصدر إلى المصدر
- برنامج 2005
