TypeScript derleyicisi tsc, orijinal köklerinden ayrılarak tamamen kendi diliyle yeniden yazıldı. Uzun süredir JavaScript altyapısıyla çalışan derleyicinin bu yeni sürümü, yazılımcıların yıllardır şikayetçi olduğu performans darboğazlarına doğrudan çözüm getirmeyi hedefliyor.
Hızlı Özet
- Derleyici artık tamamen TypeScript ile kurgulandı.
- JavaScript tabanlı eski mimarideki bellek sorunları hedefleniyor.
- Büyük projelerde derleme sürelerinin ciddi oranda düşmesi bekleniyor.
Standart TypeScript derleyicisi tarihin başlangıcından bu yana JavaScript ile yazılmıştı. Bu durum dilin büyümesini sağlasa da, devasa kod tabanlarında alt seviye optimizasyonlarda ve bellek yönetiminde belirli sınırlamaları beraberinde getiriyordu. Projeler büyüdükçe eski derleyicinin zorlandığı bir gerçekti.
Neden Şimdi ve Neden JavaScript Değil?
Ekip, mevcut yapının dikiş tutmadığı noktada bu radikal kararı aldı. Bir dili kendi kendisiyle derleyebilme yeteneği bilgisayar bilimlerinde yeni değil; C dili on yıllardır bunu yapıyor. Ancak TypeScript gibi tip güvenliği katmanları karmaşık olan bir yapıda bunu başarmak cesur bir hamle. Üstelik bu dönüşüm sadece estetik bir makyaj değil, doğrudan performans kazanımı anlamına geliyor.
| Özellik | Eski tsc (JavaScript) | Yeni tsc-ts |
|---|---|---|
| Yazıldığı Dil | JavaScript | TypeScript |
| Çalışma Ortamı | Node.js / V8 | Optimize Edilmiş Ritim |
| Hedef Odak | Genel Uyumluluk | Yerel Performans |
| Bakım Maliyeti | Yüksek Karmaşıklık | Modüler Yapı |
Eskiden tip kontrolü sırasında V8 motorunun bellek havuzunda yaşanan şişmeler, tsc-ts mimarisiyle birlikte büyük ölçüde ortadan kalkıyor. Çünkü dilin kendi doğasına uygun yazılan bir derleyici, bellek yönetimini daha öngörülebilir bir şekilde ele alabiliyor.
Mimari Dönüşümün Altında Yatan Teknik Detaylar
Bir programlama dilinin kendi derleyicisini yazması, “bootstrapping” olarak bilinen ve yazılım mühendisliğinde olgunluk göstergesi kabul edilen bir süreçtir. TypeScript ekibi, tsc-ts geçişinde AST (Soyut Sözdizimi Ağacı) işleme mantığını baştan ele aldı. JavaScript üzerinde koşan eski derleyici, V8’in çöp toplayıcısına (garbage collector) fazlasıyla bağımlıydı. Milyonlarca satırlık monolitik projelerde AST düğümleri bellek sızıntılarına yol açabiliyor, bu da derleme sürecini yavaşlatıyordu.
Yeni yapıda ise bellek tüketimi çok daha dar bir havuzda tutuluyor. Derleyicinin iç veri yapıları, TypeScript’in kendi tip sistemine en uygun şekilde optimize edildi. Bu sayede tip çıkarımı (type inference) algoritmaları, gereksiz nesne oluşturma maliyetlerinden arındırıldı.
Geliştiricinin Günlük Hayatını Nasıl Etkileyecek?
Devasa bir projeyi ayağa kaldırmaya çalışırken yaşanan beklemeler tsc-ts ile tarihe karışıyor. Daha hızlı tip çıkarımı ve azaltılmış bellek ayak izi sayesinde, her kaydetme tuşuna bastığınızda aldığınız geri bildirim döngüsü saniyelerin altına iniyor.
Açık konuşmak gerekirse, bu tür altyapı değişimleri ilk başta bazı uyumluluk sorunlarını da beraberinde getirebilir. Topluluk henüz bu yeni mimariye tam anlamıyla alışmış değil ve üçüncü taraf eklentilerin bu değişime ayak uydurması biraz zaman alacaktır. Ama uzun vadede kazanılacak hız, bu geçiş sancılarını telafi edecektir.
Geçiş Sürecinde Dikkat Edilmesi Gerekenler
Mevcut projelerini tsc-ts tabanlı ortamlara taşımayı düşünen ekiplerin göz önünde bulundurması gereken bazı pratik detaylar bulunuyor. Derleyicinin dahili davranışlarındaki bu köklü değişim, katı tip kontrolü (strict mode) kurallarının uygulanmasında mikroskopik farklılıklar yaratabilir. Eski sürümde gözden kaçan bazı tip uyumsuzlukları, yeni ve daha hassas derleyici tarafından yakalanabilir.
Bu durum, kod tabanında küçük çaplı tip düzeltmeleri yapmayı zorunlu kılabilir. Özellikle `tsconfig.json` dosyalarında yer alan deneysel bayrakların (experimental flags) bir kısmı ya deprecate edildi ya da çalışma mantığı değiştirildi. Proje yöneticilerinin, CI/CD pipeline’larında bu güncellemeyi test etmeden doğrudan prodüksiyon ortamına taşımaması önerilir.
Bakalım bu hamle, diğer büyük dil ekosistemlerinin de benzer bir öz-temizlik hareketi başlatmasını tetikleyecek mi?
Kaynak: Hacker News (Y Combinator)