- Dalam rapat TC39 ke-108 terbaru, 9 proposal yang akan membentuk masa depan JavaScript mengalami kemajuan di tiap tahap standardisasi
- Stage 4 (persetujuan akhir) mencakup fitur seperti
using, Array.fromAsync, dan Error.isError yang meningkatkan produktivitas dan keamanan pengembangan
- Di Stage 3~1, berbagai proposal fitur berguna sedang dibahas, termasuk ArrayBuffer immutable, seeded random, clamp, peningkatan NumberFormat, dan fungsi Random
- Deno aktif mengadopsi dan bereksperimen dengan standar terbaru, dan beberapa fitur sudah dapat digunakan di Deno serta browser modern
- Diskusi standardisasi akan terus berlanjut, dan ekosistem JavaScript diharapkan berkembang menjadi lebih aman dan ringkas
Tren standardisasi terbaru TC39 dan fitur baru utama JavaScript
Stage 4: fitur yang akan diadopsi secara resmi
Manajemen resource eksplisit (using)
- Deklarasi
using menjamin proses pembersihan dilakukan secara otomatis saat masa hidup objek resource seperti file dan soket jaringan berakhir
- Terinspirasi dari struktur di C# dan Python, objek mengimplementasikan metode
[Symbol.dispose]() atau [Symbol.asyncDispose]() yang dipanggil saat blok berakhir
- Pembersihan otomatis tetap dilakukan meskipun terjadi exception, sehingga mengurangi risiko kebocoran resource seperti file handle
- Sudah didukung di Chrome 134, Firefox 134, Deno v2.3 dan lainnya; di Deno, fitur ini bisa langsung dimanfaatkan untuk pekerjaan nyata seperti file dan soket
Array.fromAsync
- Metode standar untuk mengubah iterable asinkron menjadi array, dan mengembalikan Promise
- Mengumpulkan nilai secara berurutan dari async generator dan sejenisnya, lalu menghasilkan array akhir dalam bentuk Promise
- Cara pakainya mirip dengan
Array.from sinkron yang sudah ada, serta mendukung fungsi mapping dan thisArg
- Didukung di semua browser utama, Node v22, dan Deno v1.38 ke atas
Error.isError
- Fungsi bawaan yang memungkinkan pengecekan sederhana apakah suatu nilai adalah objek Error yang asli
- Bekerja andal bahkan dalam kasus rumit seperti cross-realm atau error subclass
- Meningkatkan keandalan saat membuat polyfill atau library
Stage 3: ArrayBuffer immutable
Immutable ArrayBuffer
- Akan ditambahkan metode
transferToImmutable() dan sliceToImmutable() untuk mendukung immutability pada ArrayBuffer
- Buffer immutable tidak bisa dimodifikasi atau di-detach setelah dibuat, sehingga membantu berbagi data dengan aman antar-thread dan worker serta meningkatkan performa
- Di Deno dan lingkungan lain, ini dapat dimanfaatkan secara efisien untuk pemrosesan data biner tanpa penyalinan yang tidak perlu
Stage 2: fitur proposal baru
Random.Seeded
- Dengan PRNG berbasis seed (
Random.Seeded(seed)), dimungkinkan menghasilkan urutan angka acak yang sama di eksekusi berulang
- Berguna untuk area yang menuntut reproduksibilitas seperti game dan simulasi
- Tidak seperti
Math.random(), fitur ini menyediakan kemampuan lanjutan seperti penentuan seed dan penyalinan state
Number.prototype.clamp
- Metode pembatas rentang nilai yang otomatis menyesuaikan angka ke dalam rentang minimum hingga maksimum yang ditentukan
- Menjadi pengganti yang lebih singkat dan jelas untuk pola
Math.min(Math.max(x, min), max) yang selama ini umum dipakai
Stage 1: proposal tahap diskusi awal
Keep Trailing Zeros
- Opsi baru untuk
Intl.NumberFormat yang memungkinkan kontrol lebih rinci atas mempertahankan/menghapus angka 0 di belakang koma
- Memperkuat fleksibilitas tampilan yang diinginkan di UI seperti nominal uang dan fixed-point
Comparisons
- Bertujuan menstandardisasi representasi nilai yang ramah manusia dan output diff, mirip
util.inspect di Node.js
- Memberikan konsistensi pada framework pengujian, output konsol, dan sebagainya
Random Functions
- Memperkenalkan namespace
Random baru yang menghimpun fungsi terkait random secara aman dan ringkas, seperti angka acak, sampling, dan shuffle
- Mendukung berbagai pola koleksi dan sampling secara intuitif sekaligus mencegah error off-by-one
Masa depan Deno dan ekosistem JavaScript
- Deno berpartisipasi aktif dalam diskusi standardisasi dan dengan cepat menerapkan fitur terbaru ke penggunaan nyata
- Contohnya: propagasi async context, OpenTelemetry bawaan, dan pola manajemen resource yang baru
- Diskusi standardisasi dijadwalkan berlanjut dalam rapat TC39 tambahan setelah September
- Ke depan, pengembang JavaScript akan dapat merasakan lingkungan bahasa yang lebih kuat, aman, dan nyaman digunakan
3 komentar
proposal await operations
Ini kapan...
Kapan pattern matching akan ditambahkan?
Di stage 1 ada signals, tetapi sepertinya masih lama sebelum dirilis secara resmi.