يصل TypeScript 7 مع مترجم يعتمد على Go يقلص وقت فحص الأنواع إلى عُشر مدته السابقة ويقلل من استهلاك الذاكرة بنسبة تصل إلى الربع، وهو تغيير سيشعر به المطور بمجرد الضغط على "حفظ" في VS Code.

إن قرار Microsoft بإعادة كتابة جوهر خدمة اللغة باستخدام Go يأتي بعد سنوات من الشكاوى من أن الفاحص التدريجي (incremental checker) الخاص بـ TypeScript قد يتوقف عن الاستجابة في المستودعات الكبيرة أحادية النوع (monorepos). ومن خلال نقل المهام الشاقة —التحليل (parsing) وفحص الأنواع (type-checking)— بعيدًا عن تنفيذ JavaScript القائم منذ فترة طويلة، أتاح الفريق إمكانية التوازي (parallelism) على مستوى اللغة وقلل من العبء الإضافي (overhead) لبيئة تشغيل Node.js.

لماذا تهم إعادة الكتابة هذه

تستدعي تطبيقات الويب الحديثة المبنية باستخدام أطر عمل مثل Next.js أو Nuxt عادةً آلاف الوحدات (modules). وفي تلك البيئات، يمكن للوقت المستغرق لإظهار أول خطأ في الأنواع أن يهيمن على حلقة (التعديل-التجميع-التصحيح). ويخفض المترجم الجديد الوقت المستغرق للعثور على أول خطأ في VS Code من 17.5 ثانية إلى أقل من 1.3 ثانية، وهو تسريع بمقدار 11.9 ضعفًا لهذا المحرر وحده. وتؤكد اختبارات الأداء المستقلة لمجموعة من المشاريع مكاسب مماثلة:

  • VS Code: أسرع بـ 11.9 ضعفًا
  • Sentry: أسرع بـ 8.9 ضعفًا
  • Bluesky: أسرع بـ 8.7 ضعفًا
  • Playwright: أسرع بـ 8.7 ضعفًا
  • Tldraw: أسرع بـ 7.7 ضعفًا

كما يتحسن استخدام الذاكرة أيضًا؛ حيث يستهلك خادم TypeScript في VS Code الآن ذاكرة وصول عشوائي (RAM) أقل بنسبة 18%، ويشهد Bluesky انخفاضًا بنسبة 26%، بينما يوفر Tldraw نسبة 15%.

تترجم هذه الأرقام إلى إنتاجية حقيقية في العالم الواقعي: فالمطور الذي يحفظ ملفًا كل بضع ثوانٍ يمكنه الآن التكرار (iterate) عشر مرات أسرع، مما يقلل بشكل كبير من العقبات اليومية في قواعد الأكواد الكبيرة.

أدوات تحكم جديدة للتحكم الدقيق

يقدم مترجم Go مجموعة من أعلام سطر الأوامر (command-line flags) التي تسمح للفرق بتخصيص الأداء وفقًا لأجهزتهم وسير عملهم:

  • المعالجة المتوازية (--checkers و --builders) تقوم بتشغيل التحليل وفحص الأنواع بالتزامن، مما يتيح للمستخدمين الموازنة بين السرعة وضغط الذاكرة.
  • وضع الخيط الواحد (--singleThreaded) يسهل عملية تصحيح الأخطاء ويناسب البيئات ذات الموارد المحدودة.
  • العمال القابلون للتوسع (Scalable workers) تتيح توسيع عمال فحص الأنواع بشكل مستقل عن عمال البناء (builder workers)، مما يتيح خطوط بناء مخصصة.
  • وضع المراقبة المحسن (Improved watch mode) يستبدل ماسح الملفات القديم القائم على Node بمراقب ملفات (file watcher) بلغة Go، مما يلغي عمليات المسح المتكررة والمكلفة لأشجار node_modules الضخمة.

تمنح هذه الخيارات المؤسسات الكبيرة القدرة على استخراج أداء إضافي من خطوط أنابيب CI دون الحاجة إلى إعادة هيكلة أكوادهم الحالية.

المخاطر والمعارضة

إن إعادة كتابة مكون أساسي بلغة مختلفة لا يخلو من الجدل. يخشى بعض المطورين من أن الانتقال إلى Go قد يؤدي إلى ظهور أخطاء جديدة أو عدم توافق كانت قد عالجتها نسخة JavaScript الناضجة بالفعل. كما يضيف هذا التغيير تبعية لبيئة تشغيل Go إلى سلسلة أدوات TypeScript، مما قد يعقد البيئات المرتبطة ارتباطًا وثيقًا بـ Node.js. سيحتاج المتبنون الأوائل إلى التحقق من أن إضافاتهم المخصصة وتوسعات خادم اللغة لا تزال تعمل دون تغيير.

ما الذي يجب مراقبته لاحقًا

جعلت Microsoft المترجم القائم على Go هو الافتراضي في الإصدار العام، ولكن محرك JavaScript الأقدم يظل متاحًا كخيار احتياطي. ستوضح مراقبة معدلات الاعتماد عبر بيئات التطوير المتكاملة (IDEs) وخدمات CI الرئيسية ما إذا كانت مكاسب الأداء تفوق صعوبات الانتقال. بالإضافة إلى ذلك، ستشكل ملاحظات المجتمع حول الأعلام الجديدة كيفية تطور المترجم — فإذا وجد المطورون صعوبة في ضبط خيارات التوازي، فقد تقدم Microsoft إعدادات مسبقة (presets) بمستوى أعلى.

الخلاصة: توفر إعادة الكتابة بلغة Go في TypeScript 7 فحصًا للأنواع أسرع بعشر مرات وتوفيرًا ملحوظًا في الذاكرة، وهو تحول قد يجعل تطوير JavaScript واسع النطاق يبدو أكثر سلاسة وسرعة بشكل فوري — بشرط أن يتكيف النظام البيئي بسلاسة مع بيئة التشغيل الجديدة.