قامت React، مكتبة Meta مفتوحة المصدر لبناء واجهات المستخدم، بدمج منفذ Rust الخاص بـ React Compiler في مستودعها الرئيسي، وهي خطوة تهدف إلى إنشاءات أسرع وتكامل أكثر إحكامًا مع سلسلة أدوات JavaScript الأوسع المستندة إلى Rust.
يقوم برنامج React Compiler، المعروف سابقًا باسم React Forget، بحفظ المكونات والخطافات تلقائيًا حتى لا يحتاج المطورون إلى الوصول إليها. useMemo و useCallback باليد. يعيد طلب السحب كتابة هذا المترجم من TypeScript إلى Rust، ويصفه الفريق في العلاقات العامة نفسها بأنه “منفذ تجريبي قيد العمل”.
الأرقام الرئيسية تتعلق بالأداء. باعتباره مكونًا إضافيًا من Babel، يعمل إصدار Rust بسرعة أكبر بحوالي 3 مرات من إصدار TypeScript الأصلي، في حين يصل منطق التحويل المعزول إلى 10x في بعض الحالات، مع زيادة الحمل التسلسلي الذي يسحب الرقم الحقيقي إلى الأسفل. وفقًا للنشرة الإخبارية لـ Rust Bytes، تتطابق جميع تركيبات الاختبار البالغ عددها 1,725 والحالات المتوسطة مع إصدار TypeScript تقريبًا بايت لكل بايت، ويتم تحقيق ذلك من خلال إعادة بناء الأجزاء الداخلية من خلال تخصيص الساحة وهياكل البيانات المستندة إلى الفهرس.
تظهر أوضح المكاسب عندما يتوقف المترجم عن كونه مكونًا إضافيًا. نظرًا لأن React Compiler كان يعمل سابقًا كتحويل Babel، فقد دفع المجمعون تلك النفقات العامة في كل بناء؛ يؤدي ربط إصدار Rust مباشرةً إلى Turbopack، وهو مجمّع Vercel’s Rust، إلى إزالته. أفاد مهندس Vercel Andrew Imm أن التغيير قدم تجميعًا أسرع بنسبة تزيد عن 40% عند اختباره على الإصدار 0، وهو تطبيق Next.js واسع النطاق الخاص بالشركة، مشيرًا إلى أن مسار البرنامج الإضافي SWC السابق عانى من بداية باردة طويلة لـ WebAssembly. وضع حساب Next.js الرسمي النطاق بنسبة 20 إلى 50% أسرع في تجميع المسارات عبر تطبيقات الاختبار الخاصة به، مع وصول الدعم التجريبي في Next.js 16.3.
اعتمد الميناء بشكل كبير على نماذج لغوية كبيرة للعمل الميكانيكي، مع الاحتفاظ بالبشر للهندسة المعمارية والمراجعة، وكان ذلك هو الدافع وراء الكثير من التعليقات. في Hacker News، رحب أحد القراء بالتحول إلى اللغات المجمعة لكنه حذر من أن “سداد الدين المعرفي سيكون قاسيًا على أي فريق سيتمكن من الحفاظ عليه على المدى الطويل”، بينما قارن آخر نهجًا مشابهًا مع Bun، وتساءل أيضًا عن التأثير طويل المدى لاستخدام LLMs لهذا النوع من المشاريع:
بعد الكعكة، يعد هذا مشروعًا آخر رفيع المستوى تم نقله إلى Rust من خلال استخدام LLMs على نطاق واسع.
من الغريب جدًا أن نرى كيف ستسير عمليات إعادة الكتابة هذه.
هل أساس LLM قوي بما يكفي للبناء عليه والتكرار عليه؟ أم أن هذا يجعل المشاريع غير قابلة للصيانة لأنه لم يعد هناك من يفهم التنفيذ؟
حذر أحد المستخدمين في نفس المناقشة من أن “مجرد كتابة شيء ما بلغة Rust، لا يعني أنه جيد Rust،” نظرًا لأن النموذج يمكن أن يصل إلى RefCell لإرضاء مدقق الاقتراض ودفع حالات الفشل إلى وقت التشغيل.
المستخدمون الحاليون معزولون إلى حد كبير عن التغيير. تظل واجهة برمجة التطبيقات العامة شبيهة بـ Babel، لذا فإن المقصود من الترقية أن تكون عبارة عن مبادلة منسدلة تحافظ على التكوين دون تغيير:
يمكن للفرق الجديدة في المترجم اتباع مقدمة React ودليل الاعتماد المتزايد، الذي يشرح كيف يمكن استبعاد التعليمات البرمجية غير المتوافقة بحيث لا تحتاج قاعدة التعليمات البرمجية إلى الإصلاح كلها مرة واحدة.
يتم أيضًا إدخال إعادة الكتابة في نمط أوسع من Rust يصل إلى أدوات الواجهة الأمامية. لقد انتقلت SWC إلى مترجم Rust الرسمي، وتقوم Oxc ببيعه كصناديق قابلة للتحرير، ويشحن Rspack 2.1 الدعم الأصلي. لم تكن كل عمليات التكامل ناجحة؛ أشار مشرف Rolldown Boshen إلى أن الفريق سحب تكامل Rust React Compiler من Rolldown وVite من أجل “إزالة الانحدار” أولاً، على الرغم من ظهور النتائج المبكرة التي أظهرت تحسنًا يصل إلى 2x.
يوجد منفذ Rust في React monorepo ويمكن تتبعه من خلال مجموعة عمل React Compiler.
