Untuk pertama kalinya dalam sejarah panjang modernisasi bahasa C++, draf standar internasional resmi gagal mendapatkan persetujuan dalam pemungutan suara ISO. Draf C++26—yang digadang-gadang membawa lompatan terbesar sejak C++11 lewat refleksi statis dan model asinkron baru—resmi ditolak dalam pemungutan suara Draft International Standard (DIS) di bawah komite teknis ISO/IEC JTC1/SC22.
Kabar kegagalan bersejarah ini diumumkan ke publik oleh Robert Seacord, ketua komite standar bahasa C (WG14), pada akhir pekan lalu. Berdasarkan rekapitulasi SC22, penolakan ini menjadi preseden baru yang belum pernah terjadi pada draf C++ maupun standar bahasa pemrograman SC22 sebelumnya. Daveed Vandevoorde, anggota Direction Group WG21, mencatat bahwa dalam sejarah pemungutan suara DIS bahasa C++, tidak pernah ada draf yang menerima satu pun suara penolakan dari badan standardisasi nasional.
Kalkulasi Pemungutan Suara yang Kandas
Prosedur ISO menerapkan dua syarat mutlak agar sebuah draf DIS dapat disahkan menjadi standar internasional resmi:
Pertama, draf wajib mengantongi minimal dua pertiga (66,66 persen) suara setuju dari anggota partisipan aktif (P-members) yang menggunakan hak suaranya. Dari 20 negara P-member yang memberikan suara setuju atau menolak, hanya 12 negara yang mendukung draf C++26 (60 persen). Ambang batas ini meleset dua suara dari minimal 14 dukungan yang disyaratkan.
Kedua, jumlah suara penolakan dari seluruh badan nasional yang memilih tidak boleh melampaui 25 persen. Dari 22 negara yang tercatat memberikan suara, sebanyak sembilan negara memilih "No" (40,9 persen)—jauh melampaui batas toleransi penolakan maksimal lima negara.
Sembilan negara yang secara resmi menolak pengesahan draf C++26 adalah Denmark, Finlandia, Iran, Italia, Jepang, Luksemburg, Rumania, Spanyol, dan Swedia. Sementara itu, 12 negara memilih abstain, termasuk Amerika Serikat dan Polandia. Secara keseluruhan, terdapat 11 badan standardisasi nasional yang melampirkan komentar teknis kritis terhadap draf tersebut.
Akar Masalah: Tarik-Menarik Fitur Contracts
Meskipun teks komentar teknis resmi badan-badan nasional baru akan dipublikasikan secara penuh dalam kurun 12 pekan mendatang, konsensus di kalangan anggota komite memastikan bahwa penolakan massal ini dipicu oleh satu isu tunggal: rancangan fitur Contracts (kontrak fungsi).
Fitur Contracts dirancang untuk memungkinkan pengembang mendeklarasikan prakondisi (preconditions), pascakondisi (postconditions), dan asersi fungsi secara formal di tingkat bahasa menggunakan sintaks seperti pre, post, dan contract_assert. Gagasan intinya adalah menyediakan kontrak antarmuka yang terverifikasi mesin, bukan sekadar komentar dokumentasi yang kerap usang seiring berjalannya waktu.
Namun, implementasi yang masuk ke dalam draf C++26 memicu polarisasi tajam. Draf tersebut menetapkan empat semantik evaluasi kontrak—ignore, observe, enforce, dan quick-enforce—yang pemilihannya diserahkan sepenuhnya kepada implementasi kompilator atau konfigurasi build.
Kelompok penentang, yang menyuarakan argumennya lewat dokumen komite P4238R1, menilai spesifikasi ini tergesa-gesa dan minim pengalaman produksi skala industri. Masalah mendasar muncul pada pertanyaan filosofis: apakah sebuah asersi kontrak merupakan jaminan mutlak (guarantee) yang dapat diandalkan oleh alur program, atau sekadar petunjuk optimasi yang boleh diabaikan atau dibuang oleh kompilator? Ketidakpastian semantik ini dikhawatirkan dapat melahirkan celah keamanan baru pada sistem tertanam (embedded) dan infrastruktur berkeandalan tinggi (safety-critical).
Sebaliknya, pendukung fitur Contracts, yang dimotori oleh 16 figur teknis lewat proposal P4433R0, menegaskan bahwa penarikan mundur Contracts dari draf C++26 bukanlah perkara mudah. Menghapus Contracts berarti membongkar ulang bagian lain dari draf yang telah bergantung padanya, terutama spesifikasi pengerasan pustaka standar (library hardening).
Fitur Besar Lain Tersandera Prosedur
Dampak paling menyakitkan dari penolakan DIS ini bukanlah terganjalnya Contracts semata, melainkan efek domino terhadap fitur-fitur C++26 lain yang sebenarnya telah matang dan sangat dinantikan komunitas global.
Di antara fitur yang kini tersandera adalah refleksi statis (static reflection / P2996)—kemampuan memeriksa struktur tipe dan metadata program saat waktu kompilasi yang telah diperjuangkan selama lebih dari sepuluh tahun. Selain itu, model komputasi asinkron terpadu berbasis Sender/Receiver (std::execution / P2300) dan pengerasan pustaka standar juga ikut terkunci di dalam draf yang tidak disahkan oleh ISO tersebut.
Kompilator modern seperti GCC 16 dan Clang sejatinya telah mulai menguji fitur-fitur C++26 ini di balik tanda bendera eksperimental (-std=c++26 atau -std=c++2c). Namun, tanpa stempel standar ISO, para pengembang perangkat lunak komersial dan sistem operasi belum dapat mengadopsinya sebagai fondasi basis kode produksi jangka panjang.
Menatap Sidang Búzios dan Peluang C++27
Sesuai direktif kerja ISO, sekretariat SC22 bersama pimpinan WG21 kini dihadapkan pada sejumlah opsi: mengedarkan draf revisi untuk pemungutan suara delapan pekan, mengembalikan statusnya ke draf komite (committee draft), menerbitkannya sebagai Spesifikasi Teknis (Technical Specification) terpisah, atau membatalkan proyek.
Pertemuan tatap muka seluruh anggota komite WG21 dijadwalkan berlangsung di Búzios, Brasil, pada 16 hingga 21 November 2026. Pertemuan ini akan menjadi arena penentu arah masa depan C++.
Sebagian anggota mengusulkan solusi pragmatis: mencabut Contracts dari draf C++26 agar sisa fitur seperti refleksi dan eksekusi asinkron dapat segera disahkan melalui pemungutan suara susulan. Namun, penyesuaian teks standar tersebut diperkirakan akan memakan waktu hingga 2027. Jika pengesahan baru rampung tahun depan, standar ini kemungkinan besar akan diluncurkan dengan nama resmi C++27—menggeser siklus rilis reguler tiga tahunan yang selama ini menjadi tradisi komunitas C++.
Sumber tambahan: https://train-it.eu/blog/cpp26-contracts-the-ballot-result/
Sumber tambahan: https://wg21.link/p4238r1
Sumber tambahan: https://wg21.link/p4433r0