Mengenal Lebih Jauh Tentang EcmaScript , TC39 , dan EcmaScript Proposal 🚀
Tags: javascript, tc39, indonesia, history
Published: 2021-04-27 11:25:00

Banyak hal baru dan menarik yang belum diimplementasikan pada ECMAScript programming language karena mereka harus melewati proses TC39, proses TC39 memiliki beberapa spesifikasi yang didalamnya memiliki beberapa tahap (stage) untuk disetujui komite TC39 sebelum tahap selesai / terimplementasi.

# Apa itu EcmaScript?

ECMAScript adalah bahasa skrip (.es) yang distandarisasi oleh Ecma International dalam spesifikasi ECMA-262, ECMA-262 adalah dokumen spesifikasi paling akurat dan up-to-date, untuk mengakses dokumen ECMA-262 silahkan akses url berikut ini [https://tc39.es/ecma262/](https://tc39.es/ecma262/). 

Singkatnya, ECMAScript adalah spesifikasi bahasa.

# Bahasa Pemrograman EcmaScript

EcmaScript adalah superset dari sintaks dan semantik dari bahasa yang lebih dikenal sebagai JavaScript , meskipun begitu , EcmaScript memiliki beberapa bahasa pemrograman dan teknologi yang mengikuti standar spesifikasinya, diantaranya ActionScript , V8 , Google Apps Script , dan Nashorn.

# TC39 

TC39 atau disingkat sebagai Technical Committee number 39 adalah lembaga yang menstandarkan bahasa JavaScript di bawah spesifikasi "ECMAScript".

Tugas TC39 adalah untuk memastikan apakah sebuah proposal itu memungkinkan untuk ditambahkan, menciptakan breaking changes atau tidak melalui spesifikasi EcmaScript sebelum diimplementasikan ke Bahasa Pemrograman EcmaScript.

Spesifikasi ECMAScript inilah yang akan menentukan cara kerja JavaScript secara terpisah selangkah demi selangkah.

# TC39 Process

TC39 mengikuti proses untuk mengembangkan fitur bahasa yang didasarkan pada tahap kematangan. Setelah proposal cukup matang, TC39 memperbarui spesifikasi dengan perubahan yang diimplementasikan dalam proposal. Hingga saat ini, TC39 mengandalkan aliran yang lebih lama berdasarkan Microsoft Word. Tapi setelah ES3 keluar, TC39 menghabiskan sepuluh tahun dengan hampir tidak ada perubahan pada spesifikasi. Setelah itu, butuh empat tahun bagi ES6 untuk keluar.

Setelah ES6 keluar, TC39 merampingkan proses revisi proposal untuk memenuhi ekspektasi modern. Proses baru menggunakan superset HTML untuk memformat proposal. Mereka menggunakan GitHub Pull Requests, yang membantu meningkatkan partisipasi dari komunitas dan jumlah proposal yang dibuat juga meningkat. Spesifikasi sekarang lebih dari standar hidup, yang berarti bahwa proposal melihat adopsi lebih cepat, dan kita tidak menghabiskan waktu bertahun-tahun menunggu edisi baru spesifikasi keluar.

Proses baru ini melibatkan empat tahap kematangan yang berbeda. Semakin matang sebuah proposal, semakin besar kemungkinan untuk akhirnya membuatnya menjadi spesifikasi.

## TC39 Stages

Proses TC39 memiliki empat tahap kematangan sebelum diterima dan diimplementasikan oleh TC39.

1). Stage 0
 
Pada Tahap Strawman, Setiap diskusi, ide, perubahan, atau penambahan yang belum diberikan sebagai proposal formal disebut sebagai proposal "strawman". Hanya anggota dari TC39 yang bisa membuat proposal ini.

Daftar proposal dari tahap 0 bisa diakses melalui url berikut ini [https://github.com/tc39/proposals/blob/master/stage-0-proposals.md](https://github.com/tc39/proposals/blob/master/stage-0-proposals.md).

2). Stage 1

Pada Tahap 1, proposal diformalkan dan diharapkan untuk menangani masalah lintas sektor, interaksi dengan proposal lain, dan masalah implementasi. Proposal dalam tahap ini mengidentifikasi masalah diskrit dan menawarkan solusi konkret untuk masalah tersebut.

Proposal Tahap 1 sering menyertakan deskripsi high-level API, contoh penggunaan, dan diskusi tentang semantik dan algoritma internal. Proposal ini kemungkinan besar akan berubah secara signifikan saat mereka menjalani prosesnya.

Daftar proposal dari tahap 1 bisa diakses melalui url berikut ini [https://github.com/tc39/proposals/blob/master/stage-1-proposals.md](https://github.com/tc39/proposals/blob/master/stage-1-proposals.md).

3). Stage 2

Pada Tahap 2, proposal harus memberikan rancangan awal dari spesifikasi.

Pada titik ini, pelaksana akan mulai bereksperimen dengan implementasi aktual dalam waktu proses TC39. Implementasinya bisa dalam bentuk polyfill, kode pengguna yang mengacaukan runtime untuk mengikuti proposal; implementasi mesin, yang secara native memberikan dukungan untuk proposal; atau bisa juga didukung oleh build-time compiler seperti Babel.

Salah satu yang populer adalah **Decorators** , saya sebagai penulis sangat menunggu implementasi dari proposal ini di Javascript , namun karena banyak perubahan dan kepentingan , proposal ini mempunyai waktu lama untuk lanjut ke tahap berikutnya.

Daftar proposal dari tahap 2 bisa diakses melalui url berikut ini [https://github.com/tc39/proposals](https://github.com/tc39/proposals).

4). Stage 3

Pada Tahap 3, proposal merupakan rekomendasi dari kandidat. Pada tahap lanjutan ini, editor spesifikasi dan reviewer yang ditunjuk harus menandatangani spesifikasi akhir. Proposal Tahap 3 tidak mungkin berubah melampaui perbaikan untuk masalah yang diidentifikasi.

Pelaksana harus menyatakan minatnya pada proposal , karena proposal tanpa dukungan dari pelaksana akan gagal. Dalam praktiknya, proposal berpindah ke level ini dengan setidaknya satu implementasi browser, polyfill dengan high-fidelity, atau jika didukung oleh build-time transpiler seperti Babel.

Daftar proposal dari tahap 3 bisa diakses melalui url berikut ini [https://github.com/tc39/proposals](https://github.com/tc39/proposals).

5). Stage 4

Pada Tahap Terakhir, proposal akan masuk ke tahap ini ketika setidaknya ada dua implementasi independen yang lulus tes penerimaan.

Proposal yang lolos ke tahap empat akan dimasukkan dalam revisi ECMAScript berikutnya.

Fungsi async, [Array #includes](https://github.com/tc39/proposal-Array.prototype.includes), dan [operator eksponen](https://github.com/tc39/proposal-exponentiation-operator) adalah beberapa contoh yang berhasil mencapai tahap 4 sejak proses revisi dirombak.

# Tamat
Saya bersyukur dengan adanya TC39, Tanpa adanya TC39, Spesifikasi EcmaScript, dan lain-lain. Bisa dibayangkan bukan? proses pengembangan Bahasa Pemrograman yang menggunakan spesifikasi ini tidak akan terstruktur, breaking changes dimana mana, dan lain sebagainya.

Jika kamu memiliki pertanyaan, silahkan komentar dibawah.

Terima kasih buat yang sudah baca ❤️🧠🧠❤️🦄🦄🧠❤️🧠