Vercel’ning Scriptc loyihasi: TypeScript’dan native kompilyator, binarda JavaScript dvigateli yo‘q

Zero-runtime TypeScript. scriptc oddiy TypeScript kodini kichik va tez ishlaydigan native bajariladigan fayllarga kompilyatsiya qiladi — Node ham, V8 ham,…

Zero-runtime TypeScript. scriptc oddiy TypeScript kodini kichik va tez ishlaydigan native bajariladigan fayllarga kompilyatsiya qiladi — Node ham, V8 ham, binarning ichida JavaScript dvigateli ham yo‘q.

Kodingizni o‘zgartirish shart emas. Hech qanday annotatsiya yoki alohida dialekt kerak emas — Node’da ishga tushiradigan o‘sha TypeScript kodingiz haqiqiy TypeScript kompilyatori tomonidan tekshiriladi va native kodga kompilyatsiya qilinadi. Kompilyatsiya qilinadigan kod Node’dagi kabi baytma-bayt bir xil ishlaydi.

O‘rnatish

clang talab qilinadi (Xcode Command Line Tools bilan oldindan o‘rnatiladi). Asosiy platforma — macOS arm64; Linux va Windows binarlari kross-kompilyatsiya orqali yaratiladi, har biri o‘zining differensial test yo‘lagi yordamida tekshiriladi.

G‘oya: ko‘rinib turadigan statiklik

TypeScript kodlarining aksariyati ekotizim taxmin qilganidan ancha statik. scriptc qaysi konstruksiyalarni native kodga kompilyatsiya qilish mumkinligini aniqlaydi va buni sizga bildiradi:

Har doim aniq ko‘rsatiladigan uchta daraja:

Statik kompilyatsiya qilinadi — native kod, dvigatel yo‘q. Bu standart rejim va undan voz kechmasangiz, yagona rejim.

Dinamik ishlaydi (--dynamic) — o‘rnatilgan JavaScript dvigateli (quickjs-ng, taxminan 620KB) statik bajarib bo‘lmaydigan qismlarni: npm bog‘liqliklarining tarqatilgan JS kodini va any turidagi kodni bajaradi. Statik kodga qaytadigan har bir qiymat ish vaqtida tekshiriladi — noto‘g‘ri tur xotirani buzish o‘rniga tutib olinadigan TypeError xatosini keltirib chiqaradi.

Rad etiladi — qolgan barcha holatlar muayyan xato kodi, kod fragmenti va odatda qayta yozish bo‘yicha ko‘rsatma bilan to‘xtaydi. Hech narsa hech qachon jimgina noto‘g‘ri kompilyatsiya qilinmaydi.

Nimalar kompilyatsiya qilinadi

Statik imkoniyatlar doirasi real dasturlar foydalanadigan til va standart kutubxonaning asosiy qismlarini qamrab oladi:

Read on AI News →