- 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, danError.isErroryang 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
usingmenjamin 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.fromsinkron 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()dansliceToImmutable()untuk mendukung immutability padaArrayBuffer - 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.NumberFormatyang 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.inspectdi Node.js - Memberikan konsistensi pada framework pengujian, output konsol, dan sebagainya
Random Functions
- Memperkenalkan namespace
Randombaru 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.