Codon ، تم نشر مترجم لبيثون

قام Startup Exaloop بنشر كود مشروع Codon ، الذي يطور مترجمًا للغة Python ، قادرًا على إنشاء كود آلة خالص كإخراج ، وليس مرتبطًا بوقت تشغيل Python. تم تطوير المترجم من قبل مؤلفي لغة شبيهة ببايثون Seq ويتم وضعه على أنه استمرار لتطوره. يوفر المشروع أيضًا وقت التشغيل الخاص به للملفات القابلة للتنفيذ ومكتبة من الوظائف التي تحل محل استدعاءات المكتبة بلغة Python. تتم كتابة الكود المصدري للمجمع ووقت التشغيل والمكتبة القياسية باستخدام C ++ (باستخدام التطورات من LLVM) و Python ، وتوزيعها بموجب BSL (ترخيص مصدر الأعمال).

تم اقتراح BSL من قبل مؤسسي MySQL كبديل لنموذج Open Core. يتمثل جوهر BSL في أن كود الوظيفة الموسعة متاح مبدئيًا للتعديل ، ولكن لبعض الوقت يمكن استخدامه مجانًا فقط بشرط إضافي ، مما يتطلب شراء ترخيص تجاري لتجاوزه. تتطلب شروط الترخيص الإضافية لمشروع Codon نقل الكود إلى ترخيص Apache 2.0 بعد 3 سنوات (1 نوفمبر 2025). حتى ذلك الحين ، يسمح الترخيص بالنسخ والتوزيع والتعديل ، بشرط أن يتم استخدامه لأغراض غير تجارية.

يوصف أداء المخرجات التنفيذية على أنها قريبة من البرامج المكتوبة بلغة C. مقارنةً باستخدام CPython ، يُقدر كسب الأداء عند التحويل البرمجي باستخدام Codon بما يتراوح بين 10 و 100 مرة للتنفيذ أحادي الترابط. في الوقت نفسه ، بخلاف Python ، تطبق Codon أيضًا إمكانية استخدام تعدد مؤشرات الترابط ، مما يسمح لك بتحقيق زيادة أكبر في الأداء. يسمح لك Codon أيضًا بالتجميع على مستوى الوظيفة لاستخدام العرض المترجم في مشاريع Python الحالية.

تم تصميم Codon باستخدام بنية معيارية تسمح لك بتوسيع الوظائف من خلال المكونات الإضافية التي يمكنها إضافة مكتبات جديدة ، وتنفيذ تحسينات للمترجم ، وحتى تقديم دعم لبناء جملة إضافي. على سبيل المثال ، يتم تطوير العديد من المكونات الإضافية بالتوازي لاستخدامها في المعلوماتية الحيوية والرياضيات المالية. يستخدم جامع القمامة Boehm لإدارة الذاكرة.

يدعم المترجم معظم بناء جملة Python ، لكن التحويل البرمجي إلى الكود الأصلي يفرض عددًا من القيود التي تمنع استخدام Codon كبديل شفاف لـ CPython. على سبيل المثال ، يستخدم Codon نوع int 64 بت للأعداد الصحيحة ، بينما يحتوي CPython على أعداد صحيحة غير محدودة. قد يتطلب توافق Codon مع قواعد التعليمات البرمجية الكبيرة تغييرات في التعليمات البرمجية. عادةً ما يكون سبب عدم التوافق هو عدم تنفيذ Codon لبعض وحدات Python النمطية وعدم القدرة على استخدام بعض الميزات الديناميكية للغة. لكل حالة عدم توافق من هذا القبيل ، يصدر المحول البرمجي رسالة تشخيصية مفصلة مع معلومات حول كيفية التغلب على المشكلة.

Codon ، تم نشر مترجم لبيثون


المصدر: opennet.ru

إضافة تعليق