العودة

Cloudflare تطلق tsrs، نسخة Rust من مترجم TypeScript
SiTech AI Team3 دقيقة قراءة

Cloudflare تطلق tsrs، نسخة Rust من مترجم TypeScript

تعمل Cloudflare و VoidZero و Max Schwenk من Owner.com على بناء tsrs، وهي نسخة بلغة Rust من مترجم TypeScript بالتعاون مع فريق TypeScript، داخل مجموعة أدوات Oxc لتسريع عمليات التحقق وتقليل استهلاك الذاكرة.

نسخة Rust وفية

تتعاون Cloudflare و VoidZero مع Max Schwenk من Owner.com على tsrs، وهي نسخة بلغة Rust من مترجم TypeScript. يُحتضن المشروع كجزء من مجموعة أدوات مترجم JavaScript المسماة Oxc، ويُطوَّر بتعاون وثيق مع فريق TypeScript. ويتمثل الهدف المعلن في مساعدة المطوّرين على قضاء وقت أقل في انتظار التحقق من الشيفرة ووقت أكبر في البناء، مع جعل TypeScript أسرع وأكثر كفاءة في استخدام الذاكرة.

تقول الفرق إن هذا ليس تفرعاً (fork) عن TypeScript. وتقول إن فريق TypeScript يجب أن يظل متمتعاً بالسيطرة الكاملة على تصميم اللغة واتجاهها، وإن نسخة Rust يجب أن تتبع قرارات المنبع عن كثب وإلا فستصبح غير متوافقة في نهاية المطاف. يهدف TypeScript بلغة Rust إلى أن يكون نسخة وفية. يمكن تثبيت إصدار تجريبي من npm عبر 'npm install tsrs' وتشغيله باستخدام 'npx tsrs'.

الادعاءات المتعلقة بالأداء والذاكرة

تُظهر معايير الأداء الأولية التي شاركها الفرق أن tsrs أسرع بما يصل إلى 8x وتستهلك ذاكرة أقل بنحو 70% مقارنة مع TypeScript 7.0 عند استخدام العدد نفسه من عمّال التحقق من الأنواع. وتقول الفرق إن المقارنة أُجريت مع فريق TypeScript لمطابقة الإعداد نفسه. أما TypeScript 7.1 beta فهو بالفعل أسرع بما يصل إلى 2.5x من TypeScript 7.0، وقد رُفعت بعض من تلك التحسينات من tsrs إلى المنبع.

بشكل افتراضي، يأتي tsrs بإعداد تكيفي يعتمد على نوع الجهاز. ويستخدم هذا الافتراضي مزيداً من الذاكرة لكنه أسرع. كما تلاحظ الفرق أن بعض المعايير العامة تستخدم أنواع أجهزة أكبر أو خيارات مختلفة عن افتراضيات TypeScript، مما قد يغير الادعاءات المتعلقة بالأداء.

لماذا يهم Rust بما يتجاوز السرعة

تقول الفرق إن محاولات النقل السابقة حققت نجاحاً محدوداً، وكان نقل فريق TypeScript من JavaScript إلى Go هو المحاولة التي نجحت. وتجادل الفرق بأن هناك طلباً ما يزال قائماً على TypeScript أسرع. ويُقدَّم Rust كخيار أنسب لـ WebAssembly لأن ترجمة Go إلى WebAssembly تجلب أيضاً جامع القمامة الخاص بـ Go، بينما يسمح نموذج الذاكرة في Rust بتفاعلات مباشرة للذاكرة بين ضيف WebAssembly ومضيفه.

لطالما دعم Cloudflare Workers تقنية WebAssembly، وأعلنت الشركة مؤخراً عن دعم Rust الأصيل في Workers عبر هدف Emscripten لـ wasm-bindgen. وتقول الفرق إن بصمة الذاكرة الصغيرة تجعل من العملي تشغيل أنظمة البناء والنشر في حلقات ضيقة على Workers، بل وحتى تشغيل سلاسل أدوات تطوير معزولة (sandboxed) على Cloudflare، أو في متصفح، أو على أجهزة مدمجة، أو في تطبيقات IoT.

الصيانة والخطوات التالية

تقول Cloudflare إنها تعمل مع Theo Browne على دمج tsc-rs و tsrs في حزمة واحدة تدعم ميزات TypeScript بما في ذلك بروتوكول خادم اللغة (Language Server Protocol) ومعيّنات المحتوى. وخطة الصيانة مبنية على نموذج Vinext: كل صباح يراجع وكيل التغييرات ويجلب الفروق ويفتح قضايا للتتبع؛ وكل ليلة تُعاد توليد مصفوفة توافق عبر تشغيل مجموعة اختبارات Next.js على Vinext. وعند ظهور ثغرات، يمكن للوكلاء بناء حالة تكرارية للخطأ ونقل الاختبارات ذات الصلة واقتراح إصلاحات.

وتقول الفرق إنها ستحرص على عدم الابتعاد عن TypeScript الأصلي (المنبع) وستحاول المساهمة بتحسينات الأداء مرة أخرى في قاعدة شيفرة TypeScript المكتوبة بـ Go. وتقر بفروق حالية، مثل ترتيب طباعة التشخيصات، وتهدف إلى تقليصها قبل إصدار مستقر. كما تقول Cloudflare إن فريق Oxc يعيد هيكلة الشيفرة من أجل السرعة واستخدام الذاكرة وسهولة الصيانة، وإن تكاملات أعمق مع tsrs يمكن أن تشمل قواعد فحص (lint) واعية بالأنواع في Oxlint.

المصادر: Cloudflare · The New Stack

SiTech

SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي

نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.