HeadlinesBriefing HeadlinesBriefing.com

GitHub headstart يسرع Rust 54%

Hacker News •
×

بدء الـ crates التابعة قبل أن تنتهي تبعياتها من فحص الأنواع. ينتظر كل crate حتى يتم فحص الـ crates التي يعتمد عليها بالكامل، بما في ذلك أجسام الدوال، قبل أن يبدأ. لا يحتاج إلى تلك الأجسام لفحص أنواعه بنفسه. يترجم مقابل واجهة التبعية، البيانات الوصفية في ملف .rmeta الخاص بها. يجعل headstart rustc يكتب ملف بيانات وصفية مبكرة بمجرد فحص الواجهة، ويجعل cargo يبدأ التابعين بناءً عليه. ثم يتم فحص أجسام كل crate بينما الـ crates النهائية تترجم بالفعل.

cargo check: يعمل التابعون حتى الاكتمال على البيانات الوصفية المبكرة. cargo build: يقوم التابعون بكل تحليلاتهم على البيانات الوصفية المبكرة، ثم ينتظرون البيانات الوصفية الكاملة للتبعية قبل توليد الكود. أثناء انتظارهم، يعيدون فتحة عملهم. إذا كان لجسم خطأ، لا يزال البناء يفشل بهذا الخطأ، مع نفس التشخيصات وحالة الخروج كما اليوم؛ فقط خطوط التقدم وترتيب رسائل JSON عبر الـ crates يمكن أن يختلف.

التكاليف هي عمل نهائي يتم التخلص منه، أخطاء تُبلغ بعد قليل، واستخدام ذاكرة أكبر في وقت واحد (انظر docs/design.md). على الواجهة الأمامية الافتراضية لـ rustc، يجعل headstart البناءات النظيفة لـ 13 مشروعًا حقيقيًا (rust-analyzer, zed, bevy, lemmy, polars وغيرها) أسرع بنسبة تصل إلى 54% لـ cargo check، وحتى 42% لـ cargo build. لا شيء أبطأ. مع الواجهة الأمامية المتوازية (-Zthreads=8)، التي تغطي بعضًا من نفس الأرض، يضيف ما يصل إلى 25%. هذه أرقام 16 نواة.

المصدر: Hacker News · لخّصه HeadlinesBriefing