30 poin oleh GN⁺ 2025-03-12 | 24 komentar | Bagikan ke WhatsApp
  • Microsoft mengumumkan peningkatan performa TypeScript hingga 10x melalui porting native pada compiler dan alatnya
  • Waktu startup editor meningkat drastis, waktu build dipangkas hingga 10x, dan penggunaan memori berkurang signifikan
  • Versi pratinjau tsc akan dirilis pada pertengahan 2025, dan pada akhir 2025 dukungan build proyek penuh serta language service akan tersedia

Latar belakang peningkatan performa TypeScript

  • Nilai utama TypeScript adalah pengalaman pengembang yang sangat baik
  • Semakin besar codebase, semakin tinggi nilai TypeScript, tetapi pada proyek skala besar muncul masalah performa
    • Terjadi masalah waktu pemuatan dan pemeriksaan yang lama
    • Diperlukan keseimbangan antara startup editor yang cepat dan analisis seluruh codebase
  • Fitur berbasis AI membutuhkan informasi semantik yang cepat dan akurat
  • Kebutuhan untuk memverifikasi status codebase melalui build command-line juga meningkat

Rencana port native

  • Pekerjaan port native untuk compiler dan alat TypeScript telah dimulai
  • Target peningkatan performa:
    • Mempercepat waktu startup editor secara signifikan
    • Memangkas waktu build hingga 10x
    • Mengurangi penggunaan memori
  • Pertengahan 2025: versi pratinjau tsc dengan pemeriksaan tipe via command-line dijadwalkan rilis
  • Akhir 2025: dukungan build proyek penuh dan language service dijadwalkan tersedia

Menjalankan kode dan pengujian

  • Kode dapat di-build dan dijalankan dari repositori kode TypeScript Go
  • Repositori tersebut menyediakan panduan untuk build dan menjalankan tsc serta language server
  • Pembaruan rutin untuk fitur baru akan terus diberikan

Seberapa cepat peningkatannya?

  • Hasil pengujian waktu build proyek TypeScript saat ini pada beberapa codebase populer menunjukkan peningkatan berikut:
    • Proyek VS Code dengan sekitar 1,5 juta baris kode meningkat dari 77,8 detik menjadi 7,5 detik, sekitar 10,4x lebih cepat
    • Proyek Playwright dengan sekitar 350 ribu baris kode meningkat dari 11,1 detik menjadi 1,1 detik, sekitar 10,1x lebih baik
    • Proyek TypeORM dengan sekitar 270 ribu baris kode meningkat dari 17,5 detik menjadi 1,3 detik, sekitar 13,5x lebih baik
    • Proyek date-fns dengan sekitar 100 ribu baris kode meningkat dari 6,5 detik menjadi 0,7 detik, sekitar 9,5x lebih baik
    • Proyek tRPC dengan sekitar 18 ribu baris kode meningkat dari 5,5 detik menjadi 0,6 detik, sekitar 9,1x lebih baik
    • Proyek rxjs dengan sekitar 2 ribu baris kode meningkat dari 1,1 detik menjadi 0,1 detik, sekitar 11x lebih baik
  • Meski fiturnya belum sepenuhnya lengkap, peningkatan performa lebih dari 10x diperkirakan terjadi pada sebagian besar codebase
  • Pemeriksaan tipe dan penelusuran kode menjadi jauh lebih cepat
  • Integrasi alat AI dan dukungan refactoring tingkat lanjut pun dimungkinkan

Peningkatan performa editor

  • Kecepatan pemuatan dan respons editor meningkat
  • Berdasarkan codebase Visual Studio Code, waktu muat berubah dari:
    • Saat ini: 9,6 detik → versi native: 1,2 detik (sekitar 8x lebih baik)
  • Penggunaan memori juga berkurang sekitar 50%
  • Performa tugas language service seperti autocomplete, quick info, dan go to definition diperkirakan ikut meningkat
  • Pekerjaan migrasi sedang dilakukan berbasis Language Server Protocol (LSP)

Roadmap versi

  • TypeScript 5.8 sudah dirilis, dan TypeScript 5.9 akan segera hadir
  • Codebase TypeScript berbasis JS akan terus dikembangkan pada versi 6.x
  • Setelah codebase native stabil, rilis akan dilakukan sebagai TypeScript 7.0
    • TypeScript 6 → versi berbasis JS
    • TypeScript 7 → versi berbasis native
  • Setelah TypeScript 7 dirilis, versi 6.x juga akan tetap dipelihara untuk jangka waktu tertentu

Langkah berikutnya

  • Informasi tambahan tentang performa, compiler API, LSP, dan lainnya akan diumumkan
  • Pertanyaan umum dapat dilihat di GitHub FAQ
  • AMA akan diadakan di Discord komunitas TypeScript pada 13 Maret 2025 (10:00 PDT | 17:00 UTC)

24 komentar

 
click 2025-05-25

Saya merasa banyak orang melemparkannya tanpa benar-benar memikirkan structural typing.
Kalau ingin menulis ulang ke bahasa dengan nominal typing seperti C# atau Rust, pasti tidak mudah karena harus mengubah terlalu banyak struktur fundamental proyek.
Di antara bahasa yang mengadopsi structural typing, yang bisa memberi performa lebih tinggi daripada basis JS yang sudah ada mungkin hanya C++ atau Go, dan kalau produktivitas juga diperhitungkan, tidak ada alternatif lain.

 
kuthia 2025-03-13

Sejak suatu titik, saya jadi makin jarang menyentuh TS, tapi melihat kabar seperti ini rasanya jadi tertarik lagi, ya?

 
[Komentar ini disembunyikan.]
 
pitou106 2025-03-14

Kalau di ts any dipakai sembarangan kecuali benar-benar tidak terhindarkan, ya jadinya tidak beda dengan pakai vanilla.. heh

 
yshrust 2025-03-13

Sepertinya perdebatan soal ini cukup panas sampai Anders Hejlsberg sendiri meninggalkan komentar.

https://github.com/microsoft/typescript-go/…

 
jjpark78 2025-03-13

Saya termasuk orang yang berharap hasil kompilasi dari TypeScript bisa langsung keluar sebagai biner.

 
passerby 2025-03-13

Saya kurang paham soal frontend.. apakah ini berbeda dengan swc?

 
caniel 2025-03-13

SWC berfokus pada pembuatan kode JavaScript yang kompatibel seperti Babel serta hingga proses bundling, sedangkan ini berfokus pada mengonversi kode TypeScript menjadi JavaScript atau memeriksa error.

 
halfenif 2025-03-12

Jika kode TypeScript tidak lagi ditulis dengan TypeScript, tim tidak akan lagi menggunakan TypeScript secara langsung, yang dalam jangka panjang dapat memengaruhi pengalaman pengembangan.

Ada istilah dogfooding, yaitu menggunakan sendiri apa yang kita buat. Tetapi untuk bahasa pemrograman, rasanya ini memang sedikit mengundang pertimbangan.

 
dongjinahn 2025-03-14

Menurut saya pribadi, runtime JS yang menjadi fondasi ts (mis. spidermonkey, v8) sebagian besar ditulis dengan C++, dan tidak ada runtime yang diimplementasikan dengan JS.
Kalau melihat kompilasi js -> js juga terlalu lambat bila memakai pure JS sehingga semua beralih ke esbuild dan semacamnya,
jadi saya merasa di ts pun tidak perlu ngotot mempertahankan dogfooding.

 
wogns3623 2025-03-12

Saya khawatir nantinya pengelolaan codebase TypeScript yang sudah ada akan terabaikan.

 
tsboard 2025-03-12

Kabar yang menggembirakan! Menariknya, bahasa TypeScript dari MS tampaknya benar-benar banyak mengambil pilihan yang tidak terduga, berbeda dari perkiraan. Dari sudut pandang MS, ini bisa dibilang hampir proyek open source pertamanya, dan tidak seperti Dart dari Google yang dulu ingin menggantikan JS, pilihan untuk melengkapi JS terasa sangat bijak. Kali ini pun, meski mereka punya banyak bahasa sendiri untuk dipakai dalam porting native ini, tetap mengejutkan bahwa mereka memilih Go dari Google.

 
galadbran 2025-03-12

Lho, bukannya di kubu Deno sudah ada toolchain berbasis Rust yang dibuat... kenapa tiba-tiba Go?

 
asheswook 2025-03-12

Sepertinya yang dimaksud itu runtime seperti Node, sedangkan yang dibicarakan di sini adalah compiler untuk bahasa TS itu sendiri.

 
galadbran 2025-03-13

Ah, setelah membaca artikelnya sedikit lebih jauh, sepertinya saya bingung karena ada pembahasan bahwa editornya menjadi lebih cepat.

  • tsc menjadi 10 kali lebih cepat. Artinya, waktu transpiling dari ts -> js berkurang sangat banyak.
  • Saat memuat proyek besar yang dikembangkan dengan ts seperti VSCode, kecepatannya menjadi jauh lebih tinggi. Artinya, logika yang berbagi fungsi tsc, seperti pemeriksaan sintaks ts, juga menjadi lebih cepat.
  • Bukan berarti VSCode berjalan lebih cepat
    Jadi ternyata isinya seperti itu.
 
illiil1lii 2025-03-12

Saya pernah mengalami saat menggunakan tipe generik yang disusun secara rekursif, performanya jadi lambat sehingga terpaksa memakai alternatif lain. Kalau memang 10 kali lebih cepat, saya berharap bagian seperti ini juga bisa membaik.

 
tujuc 2025-03-12

Thread diskusi tentang kenapa Go cukup menarik.

https://github.com/microsoft/typescript-go/discussions/411

Ada banyak hal yang perlu dipertimbangkan juga...

 
tsboard 2025-03-12

Begitulah, tapi saya juga bisa memahami perasaan para developer .NET...

 
riki3 2025-03-12

Para pengembang .NET dan Rust tampaknya sangat marah.

 
bungker 2025-03-12

Saya paham soal .NET, tapi menurut saya Rust posisinya sama seperti Go. Bagaimanapun juga, proyek dan library Go terkait JS yang sudah ada tampaknya ikut memengaruhi keputusan tersebut.

 
aa1567 2025-03-12

Pengembangan untuk bahasa C# memang tidak berhenti, tetapi terlalu sering terasa seperti framework yang menggunakan C# dibiarkan terbengkalai.

 
clastneo 2025-03-12

Tulis dalam Go~

 
caniel 2025-03-12

Sangat dinantikan.

 
GN⁺ 2025-03-12
Pendapat Hacker News
  • Daniel Rosenwasser dari tim TypeScript membagikan kabar pengumuman tersebut, dan siap menjawab pertanyaan bersama pemimpin tim Ryan Cavanaugh
    • Lebih banyak informasi bisa didapatkan di AMA Discord
  • Alat pengembangan yang cepat itu luar biasa, dan menyenangkan melihat tim TypeScript selalu memikirkan pengalaman pengembang dengan serius
    • Jika kode TypeScript tidak lagi ditulis dengan TypeScript, tim itu sendiri bisa jadi tidak lagi menggunakan TypeScript secara langsung, yang dalam jangka panjang dapat memengaruhi pengalaman pengembangan
    • Menyebut contoh kegagalan Flow yang ditulis dalam OCaml, dan penasaran dengan pandangan tim soal ini
  • Menyebut dua proyek yang sebelumnya mencoba membuat tsc cepat dengan Rust
    • stc: dihentikan
    • ezno: masih dikembangkan aktif, dan tidak bertujuan menjadi padanan 1:1 untuk tsc
  • Proyek sering kali dimulai dengan bahasa scripting yang fleksibel, tetapi pada akhirnya ekspresi yang lebih native-lah yang menang
    • Berpendapat bahwa mungkin lebih baik memulai dari ekspresi tingkat rendah
    • Ini membuat orang meninjau ulang asumsi dasar menggunakan runtime JS di server
    • Keunggulan bahasa scripting makin berkurang
  • Sempat mengira ini lelucon April Mop
  • Memilih Go adalah keputusan yang bagus
    • Menarik bahwa mereka memilih Go alih-alih Rust
    • Sedikit disayangkan mereka tidak memilih .NET yang dikompilasi AOT
  • Penting untuk menjaga codebase baru tetap semaksimal mungkin kompatibel dengan yang lama
    • Sintaks Go mirip dengan codebase TypeScript sehingga porting lebih mudah
  • Terkejut dengan kemiripan sintaks Golang dan TypeScript
    • Berbagi pengalaman bahwa di Golang sulit menggunakan sum types
  • Memperkenalkan sebuah podcast tempat Daniel dan Anders membahas native port secara mendalam
  • Masalah performa muncul saat melakukan refactor pada file TypeScript berukuran besar
    • Peralihan codebase ke TypeScript sangat membantu tim, tetapi masalah performa masih tetap ada
  • Pernah menggunakan PHP lalu mulai memakai TypeScript sejak 4 tahun lalu
    • Sistem tipe TypeScript berguna dan kecepatan kompilasinya cepat
    • Bukan penggemar Microsoft, tetapi menganggap TypeScript adalah bahasa yang dibuat dengan baik