- Son TC39 108. toplantısında, JavaScript’in geleceğini şekillendirecek 9 öneri standardizasyonun farklı aşamalarında ilerleme kaydetti
- Stage 4 (nihai onay) aşamasında,
using,Array.fromAsync,Error.isErrorgibi geliştirici üretkenliğini ve güvenliği artıran özellikler yer alıyor - Stage 3~1 aşamalarında ise immutable ArrayBuffer, seed’li random, clamp, NumberFormat iyileştirmeleri, Random fonksiyonları gibi çeşitli kullanışlı özellik önerileri tartışılıyor
- Deno, en yeni standartların benimsenmesi ve deneysel çalışmalar konusunda aktif; bazı özellikler şimdiden Deno ve modern tarayıcılarda kullanılabiliyor
- Önümüzdeki dönemde standardizasyon tartışmalarının sürmesi ve JavaScript ekosisteminin daha güvenli, daha sade bir yapıya evrilmesi bekleniyor
TC39’ta Son Standardizasyon Gelişmeleri ve JavaScript’in Başlıca Yeni Özellikleri
Stage 4: Resmî Olarak Benimsenmesi Beklenen Özellikler
Açık kaynak yönetimi(using)
usingbildirimleri, dosya, ağ soketi gibi kaynak nesnelerinin ömürleri sona erdiğinde temizleme işlemlerinin otomatik olarak yapılmasını garanti eder- C# ve Python gibi dillerden ilham alan bu yapıda, nesne
[Symbol.dispose]()veya[Symbol.asyncDispose]()metodunu uygular ve blok sona erdiğinde çağrılır - İstisna oluşsa bile otomatik temizleme gerçekleşir; böylece dosya tanıtıcısı gibi kaynak sızıntısı riski azalır
- Chrome 134, Firefox 134, Deno v2.3 gibi ortamlarda zaten destekleniyor; Deno’da dosya ve soket gibi gerçek kullanım senaryolarında hemen değerlendirilebilir
Array.fromAsync
- Asenkron iterable yapıları diziye dönüştüren standart bir metottur ve Promise döndürür
- Async generator gibi yapılardan değerleri sırayla toplar ve sonunda dizi sonucunu Promise olarak verir
- Mevcut senkron
Array.fromile kullanım biçimi benzerdir; mapping fonksiyonu ve thisArg desteği sunar - Tüm büyük tarayıcılarda, Node v22’de ve Deno v1.38+ sürümlerinde destekleniyor
Error.isError
- Herhangi bir değerin gerçek bir Error nesnesi olup olmadığını kolayca belirlemeyi sağlayan yerleşik bir fonksiyondur
- Cross-realm, alt sınıf hata nesneleri gibi karmaşık durumlarda da güvenilir biçimde çalışır
- Polyfill ve kütüphane geliştirme süreçlerinde güvenilirliği artırır
Stage 3: Immutable ArrayBuffer
Immutable ArrayBuffer
ArrayBufferiçin immutable yapı desteği sağlayacaktransferToImmutable(),sliceToImmutable()metotlarının eklenmesi planlanıyor- Immutable buffer, oluşturulduktan sonra değiştirilemez ve detached hâle getirilemez; thread ve worker’lar arasında güvenli paylaşım ile performans artışına katkı sağlar
- Deno gibi ortamlarda binary veri işlenirken gereksiz kopyalamaya ihtiyaç duymadan verimli kullanım sağlayabilir
Stage 2: Yeni Özellik Önerileri
Random.Seeded
- Seed tabanlı PRNG (
Random.Seeded(seed)) ile tekrar eden çalıştırmalar arasında aynı rastgele sayı dizisinin üretilmesi mümkün olur - Oyunlar ve simülasyonlar gibi yeniden üretilebilirliğin önemli olduğu alanlarda faydalıdır
- Mevcut
Math.random()dan farklı olarak seed belirleme ve durum kopyalama gibi gelişmiş yetenekler sunar
Number.prototype.clamp
- Sayısal aralık sınırlama metodu olarak, değeri belirtilen minimum ve maksimum aralığına otomatik olarak uyarlar
- Mevcut
Math.min(Math.max(x, min), max)kalıbının yerine daha kısa ve daha açık bir alternatif sunar
Stage 1: İlk Tartışma Aşamasındaki Öneriler
Keep Trailing Zeros
Intl.NumberFormatiçin yeni bir seçenek olarak, ondalık basamaklardan sonraki 0’ların korunması/kaldırılması üzerinde ayrıntılı kontrol sağlar- Para tutarları ve sabit noktalı gösterimler gibi UI senaryolarında ifade gücünü artırır
Comparisons
- Node.js’in
util.inspectözelliğine benzer şekilde, değerlerin insan dostu gösterimi ve diff çıktısının standardize edilmesini hedefler - Test framework’leri ve konsol çıktılarında tutarlılık sağlar
Random Functions
- Yeni bir
Randomnamespace’i sunarak rastgele sayı, sampling, shuffle gibi güvenli ve sade random işlevlerini bir araya getirmeyi amaçlar - Off-by-one hatalarını önlemeye yardımcı olur ve çeşitli toplama/sampling kalıplarını sezgisel biçimde destekler
Deno ve JavaScript Ekosisteminin Geleceği
- Deno, standardizasyon tartışmalarına aktif olarak katılıyor ve en yeni özellikleri pratik kullanıma hızla yansıtıyor
- Örneğin async context propagation, yerleşik OpenTelemetry ve yeni kaynak yönetimi kalıpları
- Eylül ayından sonraki ek TC39 toplantılarında standardizasyon tartışmalarının sürmesi planlanıyor
- JavaScript geliştiricileri gelecekte daha güçlü, daha güvenli ve daha kullanışlı bir dil ortamı deneyimleyebilecek
3 yorum
await operations proposal
Bu ne zaman...
Desen eşleme ne zaman eklenecek acaba
stage 1'de
signalsvar ama resmi olarak kullanıma sunulmasına daha epey var gibi görünüyor.