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) پنهان.
- بهروزرسانیهای مایکروسافت که ویژگیهای جدیدی به کامپایلر اضافه میکنند تا زمان کامپایل را بیشتر کاهش داده یا تشخیص خطاها را بهبود بخشند.
