كل المقالات

⁨tsrs⁩: نقل ⁨TypeScript⁩ إلى ⁨Rust⁩، وما الذي يغيّره لك اليوم

⁨TypeScript⁩ · 4 دقيقة قراءة ·

في 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⁩.

السرعة المزعومة، بالعدد نفسه من العمّال TS 7.0 1x TS 7.1 beta حتى ⁨2.5x⁩ tsrs حتى ⁨8x⁩ قياس الكتّاب، لم يُقَس هنا
أطوال الأعمدة تتبع المضاعفات المزعومة. الأساس هو ⁨TypeScript 7.0⁩، وهو أصلًا النسخة المنقولة إلى ⁨Go⁩.

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

لماذا ⁨Rust⁩ و⁨Go⁩ جعلته أسرع 10 مرات أصلًا؟

المقال يطرح السؤال بنفسه. نقل ⁨TypeScript⁩ الرسمي إلى ⁨Go⁩ جعل المترجم أسرع 10 مرات من النسخة المكتوبة بـ ⁨TypeScript⁩. وجواب الكتّاب هو ⁨WebAssembly⁩: برنامج ⁨Go⁩ المترجَم إلى ⁨Wasm⁩ يجب أن يحمل معه جامع القمامة الخاص بـ ⁨Go⁩. أما ⁨Rust⁩ فلا جامع قمامة فيها لتشحنه، ونموذج الذاكرة فيها يسهّل تبادل الذاكرة بين وحدة ⁨Wasm⁩ والبيئة المضيفة.

⁨Go⁩ مترجَمة إلى ⁨Wasm⁩ المترجم جامع القمامة ⁨Rust⁩ مترجَمة إلى ⁨Wasm⁩ المترجم لا شيء إضافي يُشحن حجم أصغر داخل المتصفح أو داخل ⁨Worker⁩
حجة ⁨Rust⁩ تتعلق بالمكان الذي يمكن أن يعمل فيه المترجم، لا بسرعته فقط.

مصلحة ⁨Cloudflare⁩ واضحة: فهي تشغّل أنظمة بناء على ⁨Workers⁩، حيث يؤتي صِغر الذاكرة ثماره بسرعة. والخاصية نفسها قد تسمح بتشغيل أدوات تطوير كاملة داخل تبويب المتصفح، أو على جهاز مدمج، دون خادم خلفها.

ما الذي يتغيّر لمشروع عادي اليوم

القليل جدًا، ولا بأس بذلك. ⁨tsrs⁩ إصدار تجريبي. وإن كنت فضوليًا، فالمقال يعطي أمرين فقط:

npm install tsrs
npx tsrs

كنصيحة عامة، أتعامل معه كرأي ثانٍ لا كبديل. شغّله بجانب فحص ⁨tsc⁩ المعتاد على فرع جانبي، وقارن الأخطاء، وسجّل الوقت. ولا تجعله البوابة التي تمنع الدمج ما دام كتّابه أنفسهم يقولون إن مخرجاته ما زالت تختلف في مواضع.

أول مكان ستشعر فيه بهذا هو ⁨CI⁩. فحص الأنواع غالبًا من أبطأ خطوات خط ⁨TypeScript⁩، وكل مترجم أسرع يختصره. وأرخص مكسب الآن على الأرجح ليس ⁨tsrs⁩ أصلًا، بل الانتقال إلى أحدث إصدار رسمي من ⁨TypeScript⁩، لأن المقال ينسب إلى ⁨7.1 beta⁩ مكسبًا كبيرًا خاصًا به.

⁨tsrs⁩ يتبع ⁨TypeScript⁩ ولا ينافسه. جرّبه بجانب ⁨tsc⁩، وأبقِ المترجم الرسمي بوابة الدمج، وحدّث ⁨TypeScript⁩ نفسه أولًا.

الخطوة التالية: قِس زمن فحص الأنواع الحالي في ⁨CI⁩ ليكون عندك رقم حقيقي تقارن به حين يصل إصدار مستقر من ⁨tsrs⁩ أو إصدار ⁨TypeScript⁩ التالي. المصدر: مدونة ⁨Cloudflare⁩، ⁨Introducing tsrs: A port of TypeScript to Rust⁩.

ملاحظات القراء

  1. لا توجد ملاحظات بعد. الأولى دائمًا الأجرأ.
باغي دير حاجة بحال هذي؟ نقدر نعاونك. راسلني على واتساب