- 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.isError gibi 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)
using bildirimleri, 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.from ile 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
ArrayBuffer için immutable yapı desteği sağlayacak transferToImmutable(), 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.NumberFormat iç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
Random namespace’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.