پروژه tsc-ts؛ اجرای کامپایلر تایپاسکریپت به زبان تایپاسکریپت و کدهای بومی — tsc-ts: TypeScript written in TypeScript
خلاصه
پروژه tsc-ts ابزاری تجربی از تیم Vercel Labs است که کامپایلر TypeScript-Go را به زبان تایپاسکریپت بازنویسی کرده و با استفاده از scriptc به کد بومی (Native) تبدیل میکند. این ابزار با هدف بررسی کارایی و سازگاری کدهای تایپاسکریپت در بسترهای غیر از جاوااسکریپت توسعه یافته است.
در یک نگاه
- نام مخزن:
vercel-labs/tsc-ts - زبان اصلی: TypeScript
- مجوز: Apache-2.0
- وابستگی کلیدی: scriptc و TypeScript-Go
- هدف: بازنویسی کامپایلر تایپاسکریپت به تایپاسکریپت و کامپایل آن به کدهای ماشین
معرفی پروژه tsc-ts
پروژه tsc-ts یک تلاش تجربی از سوی Vercel Labs است که کامپایلر نسخه ۷.۰.۲ تایپاسکریپت موسوم به TypeScript-Go (یا tsgo) را مجدداً به زبان تایپاسکریپت پیادهسازی میکند. سپس این کدها با استفاده از ابزاری به نام scriptc به کدهای بومی (Native) کامپایل میشوند. این رویکرد به توسعهدهندگان اجازه میدهد تا فرآیند کامپایل و بررسی انواع (Type checking) را با ابزارهای بومی و با سرعتی بالا اجرا کنند.
معماری و نحوه کارکرد
هسته اصلی این پروژه در مسیر packages/tsc-ts/src/compiler قرار دارد و بهصورت کدهای آدیوماتیک تایپاسکریپت نوشته شده است. بخشهای مختلف کامپایلر شامل اسکنر، تجزیهکننده (Parser)، درخت AST، بایندر و تحلیلگر انواع، بهدقت با نسخه مرجع یعنی tsgo مقایسه شدهاند تا از همگام بودن نتایج خروجی اطمینان حاصل شود.
برای استفاده از این پکیج و نصب آن روی سیستم خود، میتوانید از دستورات زیر استفاده کنید:
npm install -D tsc-ts
npx tsc-ts -p tsconfig.json
این پکیج شامل وابستگیهای اختیاری برای سیستمعاملهای مختلف است که فایلهای باینری بومی را اجرا میکنند. همچنین ابزار از پکیجهای مونوپک با استفاده از Turborepo مدیریت میشود.
بحث و تبادل نظر در هکرنیوز
انتشار این پروژه در هکرنیوز با تعجب، پرسشها و بحثهای فنی جذابی میان مهندسان نرمافزار همراه شد:
- مفهوم «نوشته شده در تایپاسکریپت»: برخی کاربران اشاره کردند که این تعریف کاملاً دقیق نیست؛ چرا که کدها با زیرمجموعهای خاص از تایپاسکریپت نوشته میشوند که توسط ابزار
scriptcپشتیبانی میشود. این ابزار حتی ممکن است برای بهینهسازیها از مدل معنایی استاندارد تایپاسکریپت فاصله بگیرد. - عملکرد و شگفتی: برخی مهندسان گزارش دادند که تستهای اولیه نشان میدهد این نسخه حتی میتواند از نسخه نوشتهشده به زبان Go نیز سریعتر عمل کند که این موضوع بسیار چشمگیر است.
- چرخه ابزارها: این پروژه بخشی از تلاشهای مداوم جامعه برای جابجایی بین زبانهای مختلف (مانند جاوااسکریپت، Rust، Go و محیطهای مبتنی بر V8) برای بهینهسازی سرویسها و ابزارهای توسعه است.
این مطلب بهصورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل