TypeScript Jadi Native: Compiler Go tsgo 10x Lebih Cepat

Foto oleh Nemuel Sereti on Pexels
Microsoft memilih Go karena upaya ini adalah port yang mempertahankan perilaku compiler yang ada, bukan penulisan ulang dari nol. Maintainer Ryan Cavanaugh mencatat bahwa Go idiomatik sangat menyerupai pola coding yang sudah ada di basis kode TypeScript, dan Go menawarkan garbage collection otomatis plus kontrol halus atas tata letak memori, yang cocok untuk penelusuran pohon yang berat pada compiler. Rust ditolak karena akan memaksa pemikiran ulang mendasar soal manajemen memori, mengubah port yang terkendali menjadi penulisan ulang bertahun-tahun.
Microsoft melaporkan percepatan kira-kira 10x pada kebanyakan proyek. Type-checking basis kode VS Code sekitar 1,5 juta baris turun dari 77,8 dtk menjadi 7,5 dtk, peningkatan 10,4x, dan TypeORM turun dari 17,5 dtk menjadi 1,3 dtk. Waktu pemuatan proyek di editor turun dari sekitar 9,6 dtk menjadi 1,2 dtk, dan penggunaan memori keseluruhan kira-kira setengah dari implementasi saat ini.
TypeScript 7 adalah nomor versi untuk compiler Go-native baru, dengan nama sandi Project Corsa. Compiler berbasis JavaScript yang ada berlanjut secara paralel sebagai TypeScript 6.x, sebuah rilis jembatan yang mendeprekasi beberapa fitur agar selaras dengan versi native. Keduanya berdampingan sampai build native cukup matang dan diadopsi untuk berdiri sendiri.
Ya, sebagai preview. Pasang paket @typescript/native-preview dari npm dan jalankan binary tsgo persis seperti tsc, atau aktifkan ekstensi TypeScript Native Preview di VS Code. Ia belum mencapai paritas fitur penuh: type-checking hampir lengkap dan bisa dipakai, tetapi language service dan API compiler publik masih dalam pengerjaan.
Sebagian besar ya. Compiler native berupaya tetap sangat kompatibel dengan perilaku type-checking tsconfig.json yang ada. Perubahan utamanya adalah mode module-resolution usang node dan node10 dibuang, jadi Anda harus beralih ke bundler atau nodenext sebelum menguji proyek Anda dengan tsgo.

Foto oleh Nemuel Sereti on Pexels
Ringkasan Utama
Microsoft memindahkan compiler dan tooling TypeScript ke Go, sebuah proyek yang dipimpin Anders Hejlsberg dan disebut TypeScript 10x lebih cepat. Type-checking, pemuatan editor, dan waktu build turun kira-kira sepuluh kali lipat dan penggunaan memori berkurang sekitar setengah. Compiler Go-native dirilis sebagai TypeScript 7, didistribusikan saat ini sebagai preview tsgo, sementara compiler JavaScript yang ada berlanjut sebagai TypeScript 6.
Compiler TypeScript selalu ditulis dalam TypeScript. Itu elegan — bahasanya memeriksa source-nya sendiri — tetapi juga berarti setiap type-check berjalan di atas engine JavaScript, single-threaded, mengalokasikan objek yang harus dikejar garbage collector. Saat basis kode tumbuh hingga jutaan baris, arsitektur itu menjadi langit-langit. Pada Maret 2025, Anders Hejlsberg, arsitek utama TypeScript, mengumumkan solusinya: memindahkan seluruh compiler ke Go, lewat sebuah tulisan berjudul lugas A 10x Faster TypeScript.
Ini perubahan terbesar pada internal TypeScript sejak proyek ini dimulai, dan bukan eksperimen riset — ini jalur resmi menuju TypeScript 7. Klaimnya spesifik dan terukur, bukan angka bulat pemasaran, dan justru itulah yang membuatnya layak dibaca cermat.
Pengumuman Hejlsberg tidak sekadar bilang lebih cepat — ia menerbitkan benchmark pada basis kode open-source nyata, membandingkan compiler saat ini dengan yang Go-native pada proyek dan konfigurasi yang identik.
| Proyek | Baris kode | tsc saat ini | tsgo native |
|---|---|---|---|
| Visual Studio Code | ~1.505.000 | 77,8 dtk | 7,5 dtk |
| Playwright | ~356.000 | 11,1 dtk | 1,1 dtk |
| TypeORM | ~270.000 | 17,5 dtk | 1,3 dtk |
| date-fns | ~104.000 | 6,5 dtk | 0,7 dtk |
Itu percepatan 10,4x pada VS Code dan 13,5x pada TypeORM. Namun peningkatan yang paling dirasakan developer bukanlah build batch — melainkan responsivitas editor. Memuat seluruh proyek VS Code ke language service turun dari sekitar 9,6 detik menjadi 1,2 detik, dan Microsoft melaporkan penggunaan memori keseluruhan kira-kira setengah dari implementasi saat ini. Umpan balik lebih cepat pada setiap ketukan tombol adalah intinya; angka waktu build hanyalah judulnya.
Pilihan Go memicu perdebatan yang bisa ditebak — kenapa bukan Rust? Para maintainer menjawab langsung dalam sebuah diskusi GitHub. Batasan utamanya adalah bahwa ini sebuah port, bukan penulisan ulang: tujuannya mempertahankan perilaku compiler yang ada secara persis, sehingga kode baru perlu mencerminkan struktur kode lama. Ryan Cavanaugh menjelaskan bahwa Go idiomatik sangat menyerupai pola coding yang sudah ada di basis kode TypeScript, yang membuat port tetap tertangani, sementara Rust akan memaksa pemikiran ulang mendasar soal manajemen memori, mutasi, penataan data, polimorfisme, dan laziness. Hejlsberg memposisikan Go sebagai bahasa paling native-first yang bisa mereka pakai sambil tetap punya garbage collection otomatis.
Perbedaan antara port dan penulisan ulang penting bagi kepercayaan. Karena compiler Go adalah port setia dari type-checker yang ada, bukan implementasi baru dari sistem tipe, tujuannya adalah keluaran type-checking yang identik — error yang sama pada kode yang sama — hanya diproduksi kira-kira sepuluh kali lebih cepat.
Penomoran versinya bisa membingungkan, jadi ini modelnya. Compiler berbasis JavaScript yang ada berlanjut di jalur 6.x, berperan sebagai jembatan yang mendeprekasi beberapa fitur agar selaras dengan build native. Compiler Go-native dirilis sebagai TypeScript 7.0. Keduanya berdampingan secara sengaja: Microsoft memelihara basis kode 6.x sampai 7.x native cukup matang dan diadopsi untuk berdiri sendiri. Jadi TypeScript 7 bukan bahasa baru dengan sintaks baru — ini bahasa yang sama, diproduksi oleh engine baru.
Anda tidak perlu menunggu rilis untuk merasakan bedanya. Compiler native diterbitkan di npm sebagai paket native-preview, mengekspos sebuah binary tsgo yang Anda jalankan persis seperti tsc. Ada juga ekstensi TypeScript Native Preview untuk VS Code yang mengarahkan fitur bahasa editor melalui service Go.
# Add the Go-native compiler preview as a dev dependency
npm install -D @typescript/native-preview
# Type-check with the tsgo binary — used just like tsc
npx tsgo --noEmit --project ./tsconfig.json
# Opt in to the native language service in VS Code
# (.vscode/settings.json, needs the "TypeScript (Native Preview)" extension)
# "typescript.experimental.useTsgo": truePreview ini belum mencapai paritas fitur penuh. Type-checking hampir lengkap dan bisa dipakai untuk menangkap error, tetapi language service dan API compiler terprogram masih dalam pengerjaan. Satu catatan konfigurasi: compiler native membuang nilai moduleResolution node dan node10 yang usang, jadi beralihlah ke bundler atau nodenext sebelum menguji.
Anda tidak perlu mengubah cara menulis TypeScript. Tetapi pergeseran performa ini mengubah apa yang praktis di pipeline dan editor Anda.
Pada 2026, Microsoft menargetkan rilis awal-2026 untuk TypeScript 6.0 dan 7.0, dengan milestone release-candidate 7.0 yang dilacak secara terbuka. Langkah praktis sekarang adalah memasang preview, mengarahkan tsgo ke proyek besar, dan menyaksikan type-check yang dulu butuh semenit selesai sebelum Anda sempat mengalihkan pandangan. Ini kisah performa langka di mana angkanya bukan bagian yang menarik — bagian menariknya adalah betapa lambatnya semua terasa begitu Anda melihat versi cepatnya.