استبدلت جوجل مدقق أنواع بايثون الذي استخدمته لفترة طويلة، Pytype، بأداة Pyrefly، وهي أداة مفتوحة المصدر طورتها ميتا في الأصل. كان الدافع وراء هذا القرار هو مزايا Pyrefly، بما في ذلك فحص الأنواع الأسرع والأكثر دقة، وتكاليف البنية التحتية المنخفضة.
لماذا استبدلت جوجل Pytype بـ Pyrefly؟
مع التطور السريع لنظام أنواع بايثون، واجه Pytype تحديات جوهرية. نظرًا لأنه كان يعمل بتحليل التعليمات البرمجية المترجمة (bytecode) بدلاً من أشجار بناء الجملة المجردة (source ASTs)، أصبح مواكبة مقترحات تحسين بايثون (PEPs) الحديثة المتعلقة بالأنواع عبئًا متزايدًا على الصيانة بسبب عدم استقرار التعليمات البرمجية المترجمة عبر إصدارات بايثون المختلفة.
ما هي أبرز مزايا Pyrefly وأداءها؟
وفقًا لمعايير جوجل الداخلية، فإن Pyrefly أسرع بنحو 10 مرات من Pytype، ويقلل من زمن إعادة البناء التدريجي بنسبة تصل إلى 98%، ويخفض ذروة تكلفة الحوسبة لفحص أنواع بايثون بأكثر من 80%. كما أفادت جوجل بحدوث انخفاض بنسبة 90-99% في وقت فحص الأنواع على مسارات البناء النظيف الحرجة، مما أدى بشكل كبير إلى "إزالة اختناق تطويري طويل الأمد".
توضح جوجل أن إحدى نقاط القوة الرئيسية لـ Pyrefly هي توافقها القوي مع مواصفات بايثون للأنواع، حيث تجتاز حوالي 97% من الاختبارات في مجموعة التوافق. كما أن Pyrefly مدعومة بنشاط من قبل المجتمع، مما يساعدها على مواكبة بناء الجملة الجديد، وتوفر تشخيصاتها ملاحظات أكثر قابلية للتنفيذ، بما في ذلك تعليقات توضيحية مضمنة في التعليمات البرمجية تحدد السبب الجذري للأخطاء، وفي بعض الحالات، تقترح إصلاحات.
استجاب المجتمع باهتمام لإعلان جوجل. بينما اتفق معظم المعلقين على أن أداء Pytype أسوأ من Pyrefly، ناقش آخرون المزايا النسبية لـ Pyrefly مقارنة بـ Ty و Mypy. أشار Gushys إلى أن "Pyrefly أكثر نضجًا بكثير. لقد تجاوزت بالفعل الإصدار 1.0، ولها سرعة أداء مماثلة لـ Ty، وهي أداة مثبتة. Ty لم تصل إلى هذا المستوى بعد." لاحظ WindHawkeye أن "Mypy أسرع بكثير في الإعدادات الكبيرة مما يعتقده الناس. لا يزال لديها أسرع فحص تدريجي للأنواع"، ورد عليه BeamMeUpBiscotti بأن "من المفترض أن يكون Mypy 2.0 أسرع بخمس مرات في المشاريع الكبيرة للفحوصات الباردة، لكن الجيل الأحدث من مدققات الأنواع يمكن أن يكون أسرع بمقدار عشرة أضعاف من ذلك."
تعليقًا على الإعلان على LinkedIn، قدم مطور بايثون أمير رضا آزادمهر منظورًا مختلفًا، مجادلًا بأن قيمة مدقق الأنواع لا تكمن فقط في توفير 30 ثانية في مسارات CI، بل في كيفية تحسين حلقة التحرير والفحص أثناء التطوير. كما أشار إلى أنه: "إذا كنت تقيّم Pyright مقابل Pyrefly مقابل Mypy الآن، فلا تثق بأرقام monorepo لشخص آخر. قم بقياس الأوقات الباردة والدافئة على شجرتك الخاصة، وقيّم جودة التشخيصات بجانب الإنتاجية — فمدقق سريع يغمرك بالضوضاء لا يزال يكلف أكثر من مدقق أبطأ يشير إلى المشكلة الحقيقية."
فتحت ميتا مصدر Pyrefly العام الماضي. صُممت Pyrefly لتحقيق أداء عالٍ وتم تنفيذها بلغة Rust لزيادة الكفاءة إلى أقصى حد. وفقًا لميتا، يمكنها فحص 1.8 مليون سطر من التعليمات البرمجية في الثانية على قواعد بيانات كبيرة، مما يجعل من الممكن إجراء فحص الأنواع مع كل ضغطة مفتاح.




