مایکروسافت کامپایلر TypeScript را با Go بازنویسی کرد؛ ۱۰ برابر سرعت بیشتر برای توسعهدهندگان جهانی
مایکروسافت TypeScript 7.0 را منتشر کرد که شامل یک کامپایلر کاملاً بازنویسی شده با زبان برنامهنویسی Go است. این تغییر معماری، بدون اینکه توسعهدهندگان مجبور به تغییر در نحوه کدنویسی خود باشند، تا ۱۰ برابر بهبود سرعت را در فرآیندهای بیلد و بررسی نوع (type-checking) ارائه میدهد.
به قلم غزل بختیاری
این خبر را به اشتراک بگذارید
- تیمهای مهندسی سازمانی
- بر ارزش تجاری فوری خطوط لوله یکپارچهسازی مداوم سریعتر و بهبود سرعت توسعهدهنده تمرکز دارد.
- تحلیلگران معماری سیستمها
- عملگرایی فنی انتخاب Go به جای Rust را به دلیل جمعآوری زباله و سازگاری ساختاری آن تحلیل میکند.
- نگهدارندگان اکوسیستم ابزارها
- دوره گذار برای پلاگینهای شخص ثالثی که به API برنامهنویسی قدیمی TypeScript متکی هستند را زیر نظر دارد.
چرا مهم است
TypeScript زبان زیربنایی برای توسعه وب مدرن است، اما زمانهای کامپایل کُند آن مدتهاست که تیمهای مهندسی را با مشکل مواجه کرده است. این افزایش ۱۰ برابری سرعت مستقیماً به توسعه سریعتر محصول، کاهش هزینههای رایانش ابری و یک گردش کار روزانه بسیار روانتر برای میلیونها توسعهدهنده منجر میشود.
در تاریخ ۸ جولای ۲۰۲۶، مایکروسافت با انتشار TypeScript 7.0، چشمانداز عملکردی توسعه وب مدرن را به طور اساسی تغییر داد. این بهروزرسانی یک ارتقاء استاندارد نیست که صرفاً سینتکس یا انواع ابزارهای جدیدی را معرفی کند؛ بلکه نشاندهنده مهمترین بازنگری معماری در تاریخ این زبان است. کل کامپایلر TypeScript به طور کامل بازنویسی شده و پایه جاوااسکریپتی اصلی خود را به نفع زبان برنامهنویسی Go کنار گذاشته است. نتیجه، یک جهش نسلی در عملکرد است که زمانهای بیلد را تقریباً ۱۰ برابر سریعتر میکند.[1]
سالهاست که TypeScript به عنوان سنگ بنای برنامههای وب مقیاسپذیر عمل میکند و با افزودن بررسی نوع سختگیرانه روی جاوااسکریپت، خطاها را قبل از اجرای کد شناسایی میکند. با این حال، با افزایش محبوبیت این زبان و بزرگ شدن حجم کدها، عملکرد کامپایلر به یک گلوگاه بدنام تبدیل شد. از آنجایی که کامپایلر اصلی خود با TypeScript نوشته شده بود (و بنابراین روی یک محیط اجرایی تکرشتهای جاوااسکریپت مانند Node.js اجرا میشد)، در پردازش درختهای وابستگی عظیم برنامههای سازمانی مدرن دچار مشکل میشد. توسعهدهندگان به طور معمول با زمانهای بیلدی مواجه میشدند که به دقیقه میرسید و در حالی که ماشینهایشان میلیونها خط کد را پردازش میکردند، به ترمینالهای بیکار خیره میماندند.[2][4]
مقیاس این مشکل در مخازن بزرگ متنباز کاملاً مشهود بود. پایگاه کد Visual Studio Code، که یکی از بزرگترین پروژههای TypeScript موجود است، قبلاً برای یک بررسی نوع کامل به بیش از دو دقیقه زمان نیاز داشت. در عصری که یکپارچهسازی مداوم (CI) و استقرار سریع اهمیت بالایی دارند، این تأخیرها نشاندهنده یک اتلاف انباشته عظیم در سرعت مهندسی بود. مایکروسافت تشخیص داد که ابزارها باید همگام با پیچیدگی روزافزون نرمافزاری که میسازد، مقیاسپذیر شوند، و این امر منجر به یک ابتکار محرمانه با نام «پروژه کورسا» (Project Corsa) شد.[1][2]
مأموریت پروژه کورسا در مفهوم ساده اما در اجرا بسیار بزرگ بود: انتقال کل کامپایلر TypeScript به یک زبان سطح سیستمی که قادر به عملکرد بومی (Native) باشد. مایکروسافت چندین زبان از جمله Rust و C# را ارزیابی کرد و در نهایت Go را انتخاب کرد. این انتخاب برخی از ناظران صنعت را که انتظار داشتند مایکروسافت از C# داخلی خود یا Rust که محبوبیت فزایندهای داشت، حمایت کند، شگفتزده کرد، اما این تصمیم ریشه در عملگرایی مهندسی سخت داشت. Go ترکیبی منحصر به فرد از زمانهای راهاندازی سریع، مدیریت حافظه قوی و – مهمتر از همه – سازگاری ساختاری با پایگاه کد موجود TypeScript را ارائه میداد.[2][4]
برخلاف بازنویسی از پایه، که مستلزم بازنگری مفاهیم اساسی مانند مدیریت حافظه و ساختاردهی دادهها بود، Go به مایکروسافت اجازه داد تا یک انتقال بسیار وفادارانه را انجام دهد. هم کامپایلر قدیمی جاوااسکریپت و هم کامپایلر جدید Go بر جمعآوری زباله (Garbage Collection) تکیه دارند. علاوه بر این، سیستم نوع و مدل حافظه Go به طرز شگفتانگیزی با ساختارهای داده داخلی TypeScript، به ویژه نمودارهای چرخهای که به طور گسترده در طول بررسی نوع استفاده میشوند، همسو هستند. این شباهت ساختاری امکان ترجمه تقریباً یک به یک الگوریتمهای کامپایلر را فراهم کرد و خطر معرفی رگرسیونهای رفتاری را به شدت کاهش داد.[4][5]
برخلاف بازنویسی از پایه، که مستلزم بازنگری مفاهیم اساسی مانند مدیریت حافظه و ساختاردهی دادهها بود، Go به مایکروسافت اجازه داد تا یک انتقال بسیار وفادارانه را انجام دهد.
افزایش عملکرد کامپایلر جدید ناشی از دو مزیت اصلی زبان Go است: کامپایل بومی و همزمانی حافظه مشترک. با کامپایل مستقیم به باینریهای بومی بهینهسازی شده برای ویندوز، macOS و لینوکس، ابزار جدید به طور کامل سربار زمان اجرای تحمیل شده توسط Node.js را حذف میکند. مهمتر از آن، «گوروتینهای» (goroutines) سبک وزن Go به کامپایلر اجازه میدهند تا از حلقه رویداد تکرشتهای جاوااسکریپت رها شود. برای اولین بار در تاریخ TypeScript، کامپایلر میتواند فایلها را تجزیه کند، انواع را بررسی کند و کد را به صورت موازی منتشر کند و از پردازندههای چند هستهای مدرن به طور کامل استفاده نماید.[4]
معیارهای دنیای واقعی منتشر شده توسط مایکروسافت، ادعاهای جاهطلبانه «۱۰ برابر سریعتر» را تأیید میکنند. در مخزن عظیم Visual Studio Code، زمان بررسی نوع کامل از بیش از دو دقیقه به تقریباً ۱۰.۶ ثانیه کاهش یافت. پروژههای کوچکتر نیز افزایشهای متناسبی را مشاهده میکنند؛ کتابخانه پرکاربرد RxJS شاهد کاهش زمان کامپایل خود از ۱.۱ ثانیه به ۰.۱ ثانیه (تقریباً آنی) بود. اینها معیارهای مصنوعی نیستند، بلکه اندازهگیریهایی هستند که از پایگاههای کد در مقیاس تولید گرفته شدهاند و واقعیت روزمره توسعه نرمافزار سازمانی را منعکس میکنند.[1][2]
فراتر از سرعتهای خام بیلد، بازنویسی Go به طور چشمگیری تجربه توسعهدهنده محلی را در ویرایشگرهای کد بهبود میبخشد. سرویس زبان TypeScript، که ویژگیهایی مانند تکمیل خودکار، تشخیص خطای درون خطی و پیمایش کد را در IDEهایی مانند Visual Studio Code قدرت میبخشد، اکنون بسیار پاسخگوتر است. زمان بارگذاری پروژه تا ۸ برابر کاهش یافته و در محیطهای آزمایش شده از تقریباً ۱۰ ثانیه به ۱.۲ ثانیه رسیده است. توسعهدهندگان دیگر مجبور نیستند هنگام باز کردن مخازن بزرگ (monorepos) منتظر بمانند تا ویرایشگرشان «به روز شود»، که منجر به یک گردش کار کدنویسی بدون اصطکاک میشود.[3]
این تغییر معماری همچنین مزایای قابل توجهی در بهرهوری منابع سیستمی به همراه دارد. کامپایلر مبتنی بر Go تقریباً نیمی از حافظه مورد نیاز کامپایلر جاوااسکریپتی قبلی خود را مصرف میکند. برای کسبوکارهایی که خطوط لوله یکپارچهسازی و استقرار مداوم (CI/CD) گستردهای را اجرا میکنند، این کاهش در سربار حافظه مستقیماً به کاهش هزینههای رایانش ابری منجر میشود. اکنون تیمها میتوانند فرآیندهای تست و بیلد خودکار خود را روی نمونههای سرور کوچکتر و ارزانتر اجرا کنند، بدون اینکه سرعت را فدا کنند، یا بیلدهای موازی بیشتری را روی زیرساخت موجود خود اجرا نمایند.[3]
با وجود تغییرات اساسی زیربنایی، مایکروسافت اطمینان داده است که مسیر مهاجرت برای اکثر توسعهدهندگان کاملاً بدون مشکل است. از آنجایی که سینتکس زبان و قوانین بررسی نوع یکسان باقی میمانند، تیمها نیازی به بازنویسی هیچ یک از کدهای کاربردی واقعی خود ندارند. ارتقاء به کامپایلر جدید به سادگی نصب آخرین بسته TypeScript 7.0 از طریق npm است. پس از نصب، ابزارهای خط فرمان استاندارد به طور خودکار از طریق موتور جدید مبتنی بر Go هدایت میشوند و مزایای عملکردی را فوراً و بدون نیاز به تغییرات پیکربندی، فعال میکنند.[1][6]
با این حال، یک دوره گذار کوتاه برای موارد خاص در اکوسیستم ابزارهای گستردهتر وجود دارد. در حالی که بیلدهای استاندارد بدون نقص کار میکنند، پروژههایی که به شدت به API برنامهنویسی TypeScript متکی هستند – مانند برخی پلاگینهای سفارشی ESLint یا تولیدکنندگان کد تخصصی – ممکن است با موانع سازگاری مواجه شوند. مایکروسافت اعلام کرده است که پشتیبانی پایدار از API برنامهنویسی در نسخه آتی TypeScript 7.1 به طور کامل تکمیل خواهد شد و به تیمهایی که وابستگیهای عمیق به API دارند، توصیه میکند که در این فاصله با دقت آزمایش کنند یا از بستههای سازگاری جانبی استفاده نمایند.[1][6]
بازنویسی TypeScript نشاندهنده یک روند گستردهتر در سطح صنعت است که در آن ابزارهای زیربنایی جاوااسکریپت در حال بازسازی با زبانهای سیستمی با عملکرد بالا هستند. همانطور که باندلرهایی مانند Vite و Turbopack از Go و Rust برای جایگزینی ابزارهای قدیمی مبتنی بر جاوااسکریپت استفاده کردند، کامپایلر TypeScript نیز اکنون از محیط اجرایی اصلی خود فراتر رفته است. در حالی که هوش مصنوعی سرعت تولید کد را تسریع میکند و پایگاههای کد به طور تصاعدی بزرگتر میشوند، تقاضا برای زیرساخت توسعهدهنده سریع، موازی و کارآمد از نظر حافظه هرگز به این وضوح نبوده است. TypeScript 7.0 تضمین میکند که این زبان برای آن آینده آماده است.[5]
نکات کلیدی
- مایکروسافت TypeScript 7.0 را منتشر کرده است که شامل یک کامپایلر کاملاً بازنویسی شده با زبان برنامهنویسی Go است.
- کامپایلر جدید تا ۱۰ برابر بهبود سرعت را برای بیلدها و بررسی نوع در پروژههای بزرگ ارائه میدهد.
- زمان بارگذاری پروژه Visual Studio Code از تقریباً ۱۰ ثانیه به تنها ۱.۲ ثانیه کاهش یافته است.
- Go به جای Rust انتخاب شد زیرا جمعآوری زباله آن امکان انتقال وفادارانه معماری موجود را فراهم کرد.
- این ارتقاء نیازی به تغییر در کدهای TypeScript موجود ندارد و میتواند به راحتی از طریق npm نصب شود.
- کامپایلر جدید تقریباً نصف حافظه را مصرف میکند و هزینههای خطوط لوله بیلد ابری خودکار را به طور قابل توجهی کاهش میدهد.
اصطلاحات کلیدی
- مبدل کد (Transpiler)
- ابزاری که کد منبع را از یک زبان برنامهنویسی به زبان دیگر ترجمه میکند، مانند تبدیل TypeScript به جاوااسکریپت قابل خواندن توسط مرورگر.
- بررسی نوع (Type-checking)
- فرآیند تأیید اینکه متغیرها و توابع یک برنامه با انواع داده صحیح استفاده میشوند، که خطاها را قبل از اجرای کد شناسایی میکند.
- گوروتین (Goroutine)
- یک تابع سبک وزن که به صورت همزمان در زبان برنامهنویسی Go اجرا میشود و امکان اجرای موازی وظایف را در چندین هسته CPU فراهم میکند.
- جمعآوری زباله (Garbage Collection)
- یک ویژگی مدیریت حافظه خودکار که حافظه سیستمی اشغال شده توسط اشیایی که دیگر مورد نیاز برنامه نیستند را بازیابی میکند.
- یکپارچهسازی مداوم (CI)
- رویهای برای خودکارسازی ادغام و آزمایش تغییرات کد برای اطمینان از پایداری نرمافزار در حین کار چندین توسعهدهنده روی آن.
منابع
[1]DevelopersGlobalتیمهای مهندسی سازمانیTypeScript 7.0 is Here: 10x Faster Builds with a Complete Rewrite in Go
مطالعه در DevelopersGlobal →
[2]LogRocketنگهدارندگان اکوسیستم ابزارهاTypeScript Is Getting A 10x Faster Compiler —Here's What It Means For Developers
مطالعه در LogRocket →
[3]Origamiتیمهای مهندسی سازمانیTypeScript 7: A Major Speed Leap in Software Development Tooling
مطالعه در Origami →
[4]Nodeتحلیلگران معماری سیستمهاThe real reason Microsoft is rewriting TypeScript in Go
مطالعه در Node →
[5]spf13تحلیلگران معماری سیستمهاTypeScript compiler rewritten in Go: Agentic AI language
مطالعه در spf13 →
[6]Visual Studio Magazineنگهدارندگان اکوسیستم ابزارهاTypeScript 7.0 RC Brings Go-Based Compiler to the Masses
مطالعه در Visual Studio Magazine →
نظرات
بیشتر در فناوری
مشاهده همه →سرمایهگذاری خطرپذیر
سازوکار سرمایهگذاری خطرپذیر: مقایسه مراحل تأمین مالی سید، سری A، B و C
5 منبع
معماری داده
تفاوتهای بنیادین: انبار داده، دریاچه داده و خانه دریاچه داده برای تحلیل و هوش مصنوعی
5 منبع
معماری کوانتومی
مکانیک کوانتوم آنیلینگ در برابر کامپیوترهای کوانتومی مدل گیت: این دو معماری واقعاً چگونه کار میکنند؟
7 منبع
خودروهای خودران
لایدار در برابر دید خالص: مکانیک و بدهبستانهای حسگرهای رانندگی خودران
6 منبع
هر زاویه. هر روز.
دریافت فناوری اخبار همراه با پوشش کامل منابع و تحلیل دیدگاهها، مستقیم در صندوق ورودی شما.





