tsrs: نقل TypeScript إلى Rust، وما الذي يغيّره لك اليوم
في 20 أكتوبر 2026 أعلنت Cloudflare وVoidZero عن tsrs، وهو نقل لمترجم TypeScript إلى لغة Rust، بالتعاون مع Max Schwenk من Owner.com، ويُحتضن داخل أدوات Oxc. الخلاصة لمطور يعمل يوميًا: المشروع تجريبي، ولا يغيّر لغة TypeScript نفسها، ولا حاجة لتبديل أي شيء هذا الأسبوع. أما التفاصيل فأكثر إثارة، لأنها تقول الكثير عن مستقبل فحص الأنواع.
نقل، لا تفرّع
الكتّاب واضحون في هذه النقطة: يكتبون أنهم لا يتفرعون عن TypeScript، وأن فريق TypeScript يجب أن يبقى صاحب القرار الكامل في تصميم اللغة. tsrs يتبع قرارات الفريق ولا يصنع قراراته الخاصة، والسبب كما يشرحونه أن النقل الذي يبتعد عن الأصل سينهار في النهاية ويفقد التوافق.
وهذا يهم كودك. التفرّع قد يقبل مع الوقت برامج يرفضها المترجم الرسمي، أو العكس. أما النقل الأمين فيهدف إلى الإجابات نفسها، لكن أسرع. ويعترف الكتّاب بفروق حالية، مثل ترتيب طباعة رسائل التشخيص، ويقولون إنهم يريدون تقليلها إلى الحد الأدنى قبل الإصدار المستقر.
ماذا تقول الأرقام
هذه أرقام Cloudflare لا أرقامي، ولم أشغّلها بنفسي. بحسب المقال، tsrs أسرع حتى 8 مرات ويستهلك ذاكرة أقل بنحو 70% مقارنة بـ TypeScript 7.0 عند استخدام العدد نفسه من عمّال فحص الأنواع. ويقول المقال نفسه إن TypeScript 7.1 beta أسرع حتى 2.5 مرة من 7.0، وإن بعض هذه المكاسب جاء من tsrs.
تفصيلان يحفظان الصورة صادقة. الأول أن الكتّاب ينبهون إلى أن مشاريع النقل كثيرًا ما تنشر أرقامًا كبيرة باستخدام أجهزة أقوى وخيارات غير افتراضية، ويقولون إنهم عملوا مع فريق TypeScript ليقارنوا الإعداد نفسه. الثاني أن tsrs يأتي افتراضيًا بإعداد متكيّف يستهلك ذاكرة أكثر ليكون أسرع، فالإعداد الذي تثبّته ليس الإعداد الذي يقف خلف رقم الذاكرة.
لماذا Rust وGo جعلته أسرع 10 مرات أصلًا؟
المقال يطرح السؤال بنفسه. نقل TypeScript الرسمي إلى Go جعل المترجم أسرع 10 مرات من النسخة المكتوبة بـ TypeScript. وجواب الكتّاب هو WebAssembly: برنامج Go المترجَم إلى Wasm يجب أن يحمل معه جامع القمامة الخاص بـ Go. أما Rust فلا جامع قمامة فيها لتشحنه، ونموذج الذاكرة فيها يسهّل تبادل الذاكرة بين وحدة Wasm والبيئة المضيفة.
مصلحة Cloudflare واضحة: فهي تشغّل أنظمة بناء على Workers، حيث يؤتي صِغر الذاكرة ثماره بسرعة. والخاصية نفسها قد تسمح بتشغيل أدوات تطوير كاملة داخل تبويب المتصفح، أو على جهاز مدمج، دون خادم خلفها.
ما الذي يتغيّر لمشروع عادي اليوم
القليل جدًا، ولا بأس بذلك. tsrs إصدار تجريبي. وإن كنت فضوليًا، فالمقال يعطي أمرين فقط:
npm install tsrs
npx tsrs
كنصيحة عامة، أتعامل معه كرأي ثانٍ لا كبديل. شغّله بجانب فحص tsc المعتاد على فرع جانبي، وقارن الأخطاء، وسجّل الوقت. ولا تجعله البوابة التي تمنع الدمج ما دام كتّابه أنفسهم يقولون إن مخرجاته ما زالت تختلف في مواضع.
أول مكان ستشعر فيه بهذا هو CI. فحص الأنواع غالبًا من أبطأ خطوات خط TypeScript، وكل مترجم أسرع يختصره. وأرخص مكسب الآن على الأرجح ليس tsrs أصلًا، بل الانتقال إلى أحدث إصدار رسمي من TypeScript، لأن المقال ينسب إلى 7.1 beta مكسبًا كبيرًا خاصًا به.
tsc، وأبقِ المترجم الرسمي بوابة الدمج، وحدّث TypeScript نفسه أولًا.الخطوة التالية: قِس زمن فحص الأنواع الحالي في CI ليكون عندك رقم حقيقي تقارن به حين يصل إصدار مستقر من tsrs أو إصدار TypeScript التالي. المصدر: مدونة Cloudflare، Introducing tsrs: A port of TypeScript to Rust.
ملاحظات القراء