deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (native)

Vercel Labs'ın tsc-ts'si TypeScript 7 derleyicisini TypeScript'te yeniden yazıp native bir npm binary'si olarak sunuyor

Vercel Labs'ın deneysel tsc-ts'si, TypeScript 7.0.2 (tsgo) derleyici hattını TypeScript'e taşıyor, scriptc ile native olarak derliyor ve npm üzerinden platform başına binary'ler halinde dağıtıyor.

Vercel Labs'ın tsc-ts'si TypeScript 7 derleyicisini TypeScript'te yeniden yazıp native bir npm binary'si olarak sunuyor

Vercel Labs, TypeScript 7.0.2 kod tabanını — TypeScript-Go ya da tsgo adıyla Go ile yazılmış özgün native derleyiciyi — yeniden TypeScript'e taşıyan ve ardından bu TypeScript kodunu native bir çalıştırılabilir dosyaya derleyen deneysel derleyici tsc-ts'yi yayımladı. 17 Ekim'de Hacker News'in ana sayfasında görünen projenin GitHub deposuna göre, paket herhangi bir npm bağımlılığı gibi kuruluyor ve native bir binary olarak çalışıyor.

Nasıl dağıtılıyor

npm install -D tsc-ts ve ardından npx tsc-ts -p tsconfig.json tüm kurulum. Ana paket derleyicinin kendisini içermiyor; önceden derlenmiş çalıştırılabilir dosyayı barındıran @tsc-ts/darwin-arm64 ya da @tsc-ts/linux-x64-gnu gibi platforma özel bir optional dependency'ye yönlendiriyor. README, aynı kodun bu şekilde derlendiğinde Node altında da çalışabildiğini belirtiyor; native derlemeler ise TypeScript'in paketle birlikte gelen kütüphane dosyalarını ya çalıştırılabilir dosyanın yanında ya da TSC_TS_LIB_DIR ortam değişkeni aracılığıyla buluyor.

Aşama aşama doğrulanmış bir port

Derleyici packages/tsc-ts/src/compiler dizininde yer alıyor ve Go kaynak kodunun mekanik bir çevirisi olmaktan ziyade tsgo 7.0.2'nin deyimsel TypeScript'te yeniden yorumlanmış hali. Doğruluk, differential testing ile sağlanıyor: her derleyici aşaması, derleme sırasında sabitlenmiş bir commit'ten çekilen tsgo referans derlemeleriyle karşılaştırılıyor; karşılaştırma TypeScript'in kendi test havuzu üzerinden yapılıyor — bu havuz, çok dosyalı test durumları ayrıştırıldığında yaklaşık 17.000 birime genişleyen kabaca 12.500 dosyadan oluşuyor.

README'deki durum tablosu, incelenen her bileşen için eşleşen davranış raporluyor: scanner, parser ve AST, binder, modül çözümleme, tsconfig işleme ve program oluşturma, komut satırı seçeneklerinin ayrıştırılması, 13 çeviriyi içeren tanı kataloğu, 39 seçenek kümesi genelinde JavaScript emit, declaration ve source-map emit, watch modu dahil --build ve --incremental senaryoları ile type checker'ın dosya başına tanıları.

API sunucusu yerine araç desteği

tsc-ts ayrıca bir API sunucusuyla geliyor. tsc-ts --api çalıştırmak, TypeScript 7.0.2'nin tsc --api komutuyla aynı stdin ve stdout protokolünü sunuyor; yani bu arayüze göre geliştirilen araçlar — scriptc'nin kendisi de dahil — tsc-ts'yi değişiklik yapmadan kullanabiliyor. Depoya göre sunucu, tsc --api 7.0.2 ile yanıt yanıt karşılaştırılarak doğrulanmış.

getCompletionsAtPosition, getJsDocTags, getDocumentationComment, getReferencesToSymbolInFile, getReferencedSymbolsForNode ve getSignatureUsages dahil olmak üzere birçok language-service metodu çalışıyor. Auto-import'lara bağlı tamamlamalar, tsc --api'nin döndürdüğüyle aynı bayrağı bildiriyor. Profiling metotları — startCPUProfile, stopCPUProfile ve saveHeapProfile — desteklenmiyor.

Kaynaktan derleme

Yerel olarak derlemek, kullanmaktan daha fazlasını gerektiriyor: Node.js 24 veya daha yenisi, Go 1.26 ve bağlama için clang'in mevcut olduğu, scriptc sunucusu olarak çalışabilen (macOS, Linux veya Windows) bir makine. Derleme scriptc'yi tam olarak 0.3.5 sürümüne sabitliyor ve başka bir sürümle başarısız oluyor; görevleri düzenlemek için Turborepo kullanıyor ve hem Node derlemesini hem de karşılaştırmada kullanılan tsgo referans derlemelerini üretiyor. Benchmark betikleri tsc-ts'yi tsgo ve TypeScript'in mevcut JavaScript derleyicisiyle karşılaştırarak süreölçüyor, ancak README sonuçları yayımlamıyor. Proje Apache-2.0 lisanslı; lint için oxlint, biçimlendirme için oxfmt kullanılıyor.

Neden önemli

TypeScript 7, bir type checker'ı JavaScript olarak çalıştırmanın performans tavanını aşmak için derleyicinin Go ile yeniden yazılması sayesinde var. tsc-ts bu önkabulü tersine çeviriyor: aynı derleyici hattının TypeScript uygulamasını koruyor ve hızlı binary'yi üretme görevini TypeScript'ten native'a derleyen scriptc'ye devrediyor. Bu derleme yolu olgunlaşırsa, TypeScript araç zinciri uçtan uca tek dilde kalabilir ve yine de native çalıştırılabilir dosyalar sunabilir; dağıtımı ise npm'in platform başına optional dependency'leri, JavaScript ekosistemindeki diğer native araçların zaten yaptığı şekilde üstlenebilir.

Doğrulama yöntemi de port kadar dikkat çekici. Her derleyici aşamasının, tüm upstream havuzu genelinde referans tsgo derlemeleriyle differential test edilmesi, bir yeniden yazımın birebir aynı davrandığını göstermenin disiplinli bir yolu; tümüyle eşleşen durum tablosu da deneye, birçok deneysel sürümün sahip olmadığı bir inandırıcılık kazandırıyor. Eksikler — profiling desteğinin olmaması, scriptc 0.3.5'e sıkı sabitlenme, yayımlanmamış benchmark sonuçları — onu bugün üretim aracı olmaktan çok bir gösterim olarak işaretliyor; ama native TypeScript araçlarının nasıl görünebileceğine dair somut, çalışan bir veri noktası oluşturuyor.

  • #typescript
  • #compilers
  • #npm
  • #open-source
  • #developer-tools

İlgili yazılar