طرح Pyston-lite ، مترجم JIT للأسهم Python

قام مطورو مشروع Pyston ، الذي يقدم تنفيذًا عالي الأداء للغة Python التي تستخدم تقنيات تجميع JIT الحديثة ، بتقديم ملحق Pyston-lite مع تنفيذ مترجم JIT لـ CPython. إذا كان Pyston فرعًا من مصدر كود CPython وتم تطويره بشكل منفصل ، فقد تم تصميم Pyston-lite كملحق عالمي مصمم للاتصال بمترجم Python القياسي (CPython).

يتيح لك Pyston-lite استخدام تقنيات Pyston الأساسية دون تغيير المترجم ، عن طريق تثبيت ملحق إضافي باستخدام PIP أو مدير حزمة Conda. تمت استضافة Pyston-lite بالفعل في مستودعات PyPI و Conda ، وللتثبيت ، ما عليك سوى تشغيل الأمر "pip install pyston_lite_autoload" أو "conda install pyston_lite_autoload -c pyston". يتم اقتراح حزمتين: pyston_lite (JIT مباشرة) و pyston_lite_autoload (يقوم باستبدال JIT تلقائيًا عند بدء عملية Python). من الممكن أيضًا التحكم برمجيًا في تمكين JIT من داخل التطبيق دون تثبيت وحدة التحميل التلقائي ، باستخدام وظيفة pyston_lite.enable ().

على الرغم من أن Pyston-lite لا يغطي جميع التحسينات المتوفرة في Pyston ، إلا أن استخدامه يسمح بتحسينات في الأداء بنسبة 10-25٪ تقريبًا على Python 3.8 العادي. في المستقبل ، نخطط لنقل معظم التحسينات الموجودة في Pyston إلى Pyston-lite ، بالإضافة إلى توسيع الإصدارات المدعومة من CPython (الإصدار الأول يدعم Python 3.8 فقط). من بين الخطط العالمية ، هناك عمل مشترك مع فريق CPython على تنفيذ واجهات برمجة تطبيقات جديدة لـ JIT ، مما يسمح بتحكم كامل في عمل Python. مناقشة إدراج التغييرات المقترحة في فرع Python 3.12. من الناحية المثالية ، يتم النظر في إمكانية نقل جميع الوظائف من Pyston إلى امتداد ، مما سيسمح لنا بالابتعاد عن الحفاظ على شوكة CPython الخاصة بنا.

بالإضافة إلى Pyston-lite ، أصدر المشروع أيضًا تحديثًا لحزمة Pyston 2.3.4 الكاملة ، والتي تتضمن تحسينات جديدة. في اختبار pyperformance ، يكون الإصدار 2.3.4 أسرع من الإصدار 2.3.3 بنحو 6٪. تقدر مكاسب الأداء الإجمالية على CPython بنسبة 66 ٪.

بالإضافة إلى ذلك ، يمكننا ملاحظة التحسينات التي تم تطويرها في إطار دورة تطوير CPython 3.11 في المشروع الرئيسي ، والتي سمحت لنا في بعض الاختبارات بزيادة الأداء بنسبة 25٪. على سبيل المثال ، في CPython 3.11 ، تم تحسين كفاءة التخزين المؤقت لحالة الرمز الثانوي للوحدات الأساسية ، مما سيسرع إطلاق البرامج النصية بنسبة 10-15٪. تم تسريع استدعاءات الوظائف بشكل كبير وتمت إضافة مترجمين فوريين متخصصين للعمليات النموذجية. يجري العمل أيضًا على تنفيذ بعض التحسينات التي أعدها مشروعا Cinder و HotPy.

بالإضافة إلى ذلك ، في إطار مشروع nogil ، يجري العمل على وضع CPython build التجريبي بدون قفل مترجم عالمي (GIL ، Global Interpreter Lock) ، والذي لا يسمح بالوصول المتوازي للكائنات المشتركة من خيوط مختلفة ، مما يمنع موازاة العمليات على أنظمة متعددة النواة. كحل آخر لمشكلة GIL ، يتم تطوير القدرة على ربط GIL منفصل لكل مترجم فوري يعمل داخل العملية (يمكن تشغيل العديد من المترجمين الفوريين في عملية واحدة ، لكن فعالية التنفيذ المتوازي تعتمد على GIL).

المصدر: opennet.ru

إضافة تعليق