HyperAI
Back to Headlines

مقارنة بين pyrefly و ty: أسرع مدققي النمط لبايثون المعتمدين على رست

منذ 2 أشهر

ملخص مقارنة بين Pyrefly و ty: نوعان جديدان من برامج فحص الأنواع لبايثون في بداية هذا الشهر، ظهرت برنامجين جديدين لفحص الأنواع في بايثون مبنيين على Rust: Pyrefly و ty. رغم أن كلاهما لا يزال في مرحلة التطوير المبكرة، إلا أنهما يعدان إضافة مرحب بها في عالم فحص الأنواع لبايثون، الذي كان تاريخيًا تحت سيطرة mypy و pylance. فريق Pyrefly Pyrefly هو برنامج فحص الأنواع الجديد من Meta، وهو يستبدل برنامج Pyre السابق الذي كان مكتوبًا بلغة OCaml. الهدف الأساسي من Pyrefly هو أن يكون أسرع، أكثر مرونة، وأكثر قدرة مقارنة بـ Pyre. كما أكد الفريق أن Pyrefly سيكون مفتوح المصدر بطريقة حقيقية، متفاعلًا مع احتياجات المجتمع المفتوح المصدر بشكل أكبر من Pyre. فريق ty ty هو أيضًا برنامج فحص الأنواع مبني على Rust، ويتم تطويره بواسطة فريق Astral، وهو الفريق المسؤول عن uv و ruff. كان إطلاق ty هادئًا نسبيًا، حيث تم إطلاقه بهدوء على GitHub مع عرض تقديمي سريع مدته 30 دقيقة وبعض المقالات والمدونات الصوتية. التشابهات كلا البرنامجين مكتوبان بلغة Rust، وكلاهما يقوم بفحص الأنواع تدريجيًا (رغم وجود اختلافات في التنفيذ)، وكلاهما يستخدم Ruff لتحليل شجرة النحو (AST). بالإضافة إلى ذلك، يوفر كل منهما دعمًا أوليًا لفحص الأنواع عبر السطر الأوامر ولتكامل LSP/IDE. الاختلافات هناك أربع فئات رئيسية تختلف فيها هذه الأدوات: السرعة، الأهداف، التدرجية، والقدرات. السرعة ركز فريق Pyrefly بشكل كبير على السرعة، حيث زعموا أنها أسرع 35 مرة من Pyre وأسرع 14 مرة من Mypy و Pyright، بدعم يصل إلى 1.8 مليون سطر من الكود في الثانية. في المقابل، كان التركيز على السرعة في ty أقل حدة، مع زعم بأنها أسرع بمقدار 1-2 درجة من الأدوات الحالية. التجارب أجرى الباحث تجارب على سرعة الفحص باستخدام PyTorch، Django، وmypy: PyTorch: ty: 4.039 ثانية ± 0.234 ثانية (10 مرات) pyrefly: 13.029 ثانية ± 0.136 ثانية (10 مرات) pyright: 262.742 ثانية ± 4.948 ثانية (10 مرات) mypy: لم يتم الدخول في الحساب (dnf) Django: ty: 578.2 مللي ثانية ± 27.8 مللي ثانية (10 مرات) pyrefly: 910.7 مللي ثانية ± 26.2 مللي ثانية (10 مرات) pyright: 16.324 ثانية ± 0.476 ثانية (10 مرات) mypy: لم يتم الدخول في الحساب (dnf) mypy: ty: 74.2 مللي ثانية ± 1.5 مللي ثانية (20 مرة) pyrefly: 136.0 مللي ثانية ± 1.5 مللي ثانية (20 مرة) mypy: 3.544 ثانية ± 0.099 ثانية (20 مرة) pyright: 2.852 ثانية ± 0.103 ثانية (20 مرة) من الواضح أن ty أسرع في جميع الاختبارات، تليها pyrefly، ثم mypy و pyright. الأهداف الهدف الرئيسي لـ Pyrefly هو التحليل العدائي للأنواع، أي استنتاج أكبر قدر ممكن من الأنواع حتى بدون توضيح صريح لها. بينما تهدف ty إلى ما يسمى "التضمين التدريجي"، حيث يجب أن لا يسبب إزالة توضيح النوع خطأ في التحليل، مما يعني أنه يمكن تغيير الكود بدون الحاجة لإضافة أنواع جديدة. التدرجية يُدَّعى أن كلا البرنامجين تدريجي، مما يعني أن تغيير ملف واحد فقط سيعيد تحليل المنطقة المتأثرة وليس البرنامج بأكمله. يستخدم Pyrefly محرك تدرج مخصص، بينما يستخدم ty إطار Salsa، وهو الإطار نفسه الذي يدعم Rust Analyzer. هذا يعني أن ty لديها تدرجية دقيقة: سيتم إعادة تحليل الوظيفة الم changed فقط ووظائفها الم_dependent. أما Pyrefly فيستخدم التدرجية على مستوى الملف: سيتم إعادة تحليل الملف/الوحدة بأكمله وملفاته/وحداته الم_dependent. القدرات رغم أن كلا البرنامجين لا يزالان في مرحلة التطوير المبكرة، إلا أنهما يدعمان العديد من الميزات: الاستنتاج الضمني للأنواع: يعتبر هذا أحد الميزات البارزة في Pyrefly، حيث يتم استنتاج أنواع العناصر بدون تحديد صريح لها. الأصناف العامة (Generics): ركز فريق Pyrefly على المشكلات الصعبة أولاً، مثل الأصناف العامة، التحميل الزائد، والواردات العشوائية. رسائل الخطأ الواضحة: ty يركز على تقديم رسائل خطأ واضحة وموجزة. أنواع التقاطع والنفي (Intersection and Negation Types): ty هي الوحيدة التي تدعم هذه الأنواع، مما يتيح لها حل مشكلات معقدة مثل معادلات Diophantine. الخلاصة إن وجود برنامجين جديدين للتحقق من الأنواع في بايثون، وهما Pyrefly و ty، يعد أمرًا مثيرًا للإعجاب. يبدو أن كل منهما يتبع هدفًا مختلفًا: ty تتبع نهجًا تدريجيًا يتيح تغيير الكود بدون الحاجة لإضافة أنواع جديدة، بينما Pyrefly تتبع نهجًا عدائيًا يستنتج أكبر قدر ممكن من الأنواع. رغم أن كلا البرنامجين لا يزالان في مرحلة التطوير المبكرة، إلا أنهما يقدمان ميزات مثيرة للإعجاب وتوقعات عالية بشأن مستقبل فحص الأنواع في بايثون. تقييم الحدث من قبل المختصين يُعتبر تطور أدوات فحص الأنواع في بايثون خطوة مهمة نحو تحسين جودة الكود وفعاليته. يرى المختصون أن وجود أدوات مفتوحة المصدر وسريعة مثل Pyrefly و ty يمكن أن يساعد المطورين على اكتشاف الأخطاء البرمجية بشكل أسرع وأكثر كفاءة، مما يؤدي إلى زيادة الإنتاجية وتقليل الأخطاء. يُتوقع أن تستمر الجهود لتطوير هذه الأدوات وإدخال المزيد من الميزات والتحسينات عليها. نبذة تعريفية عن الشركات Meta: شركة تكنولوجيا كبيرة تُعرف سابقًا باسم Facebook، وتعمل على تطوير أدوات وبرامج مفتوحة المصدر لتحسين جودة الكود وفعالية التطوير. Astral: فريق تطوير صغير ولكن ذو تأثير كبير في مجتمع بايثون، يعمل على تطوير أدوات مثل uv و ruff، ويتبنى نهجًا مبتكرًا ومتقدمًا في فحص الأنواع.

Related Links