TypeScript 7 این هفته با بازنویسی کامل در زبان Go عرضه شد که زمان کامپایل در VS Code را از ۱۷.۵ ثانیه به کمتر از ۱.۳ ثانیه کاهش داده و مصرف حافظه را در پروژه‌های بزرگ تا ۲۶٪ کم کرده است. این افزایش سرعت باعث می‌شود کدنویسی روزمره آنی به نظر برسد و این صرفه‌جویی در زمان، در کل چرخه توسعه، ساعت‌ها از وقت برنامه‌نویسان را ذخیره می‌کند.

چرا بازنویسی با Go اهمیت دارد

مایکروسافت کامپایلر را با Go بازسازی کرده و جایگزین پیاده‌سازی قدیمی JavaScript/Node کرده است. کد اصلی با بزرگ شدن پروژه‌ها به بن‌بست رسید؛ عملیات parsing و type-checking باعث کندی CI runnerهایی می‌شد که CPU و RAM محدودی داشتند. با تغییر به یک زبان کامپایل‌شده با قابلیت همزمانی (concurrency) داخلی، موتور جدید عملیات parsing و type-checking را به صورت موازی انجام می‌دهد و زمان انتظار برای اولین خطا را به شدت کاهش می‌دهد.

بهبودهای عملکردی در دنیای واقعی

بنچمارک‌های اولیه از تعدادی از پایگاه‌های کد بزرگ، تأثیر این تغییر را نشان می‌دهند:

  • VS Code: ۱۱.۹ برابر کامپایل سریع‌تر، ۱۸٪ کاهش در میزان مصرف حافظه.
  • Sentry، Bluesky، Playwright و Tldraw: افزایش سرعت از ۷.۷ تا ۸.۹ برابر.
  • Bluesky همچنین شاهد کاهش ۲۶ درصدی در مصرف حافظه است.

برنامه‌نویسانی که روزانه ده‌ها بار دکمه‌های “run” یا “watch” را فشار می‌دهند، متوجه ویرایش روان‌تر و بار کمتر روی CI می‌شوند.

پرچم‌های (flags) جدید به شما کنترل می‌دهند

این بازنویسی همراه با گزینه‌های خط فرمان عرضه شده است که به تیم‌ها اجازه می‌دهد بین سرعت و حافظه تعادل برقرار کنند:

  • --checkers و --builders پردازشگرهای (workers) parsing و type-checking را به صورت همزمان اجرا می‌کنند و از CPUهای چند هسته‌ای بهره می‌برند.
  • --singleThreaded تمام کارها را مجبور به اجرا روی یک تک‌رشته (thread) می‌کند و در صورت بروز race condition، بازتولید خطا (debugging) را امکان‌پذیر می‌سازد.
  • مقیاس‌پذیری مجزای workers مربوط به type-checking نسبت به builder workers به خط لوله‌های CI اجازه می‌دهد تا برای هر مرحله، دقیقاً به اندازه نیاز منابع اختصاص دهند.
  • حالت بازنگری‌شده --watch از نسخه‌ی پورت‌شده‌ی Parcel بر پایه Go استفاده می‌کند که با حذف عملیات پرهزینه polling در درخت‌های عظیم node_modules ، تشخیص تغییرات فایل را سبک نگه می‌دارد.

چه کسانی سود می‌برند و چه کسانی ممکن است تردید کنند

فریم‌ورک‌های فرانت‌اند که به شدت به TypeScript متکی هستند — مانند Next.js و Nuxt — از بازسازی‌های سریع‌تر و حلقه‌های بازخورد کوتاه‌تر بهره‌مند خواهند شد. IDEهایی مانند VS Code و Cursor پاسخگویی بیشتری نشان می‌دهند که باعث می‌شود برنامه‌نویسان به جای سوئیچ کردن به بیلد‌های ترمینالی، مدت زمان بیشتری در ادیتور باقی بمانند.

آنچه باید در آینده زیر نظر داشت

  • نرخ پذیرش در میان پروژه‌های بزرگ متن‌باز و monorepoهای سازمانی.
  • بازخوردهای جامعه کاربری در مورد پایداری و هرگونه افت عملکرد ناگهانی (performance cliffs) پنهان.
  • به‌روزرسانی‌های مایکروسافت که ویژگی‌های جدیدی به کامپایلر اضافه می‌کنند تا زمان کامپایل را بیشتر کاهش داده یا تشخیص خطاها را بهبود بخشند.