Topik ini membahas strategi keamanan memori Carbon secara utuh, yaitu rencana dua langkah dari C++ menuju kode yang aman memori, mode keamanan yang menopangnya, dan pembaruan diskusi keamanan yang dipublikasikan proyek. Setelah membacanya, urutan langkah migrasi, pembagian tugas antara pemeriksaan waktu kompilasi dan waktu jalan (run-time), serta status peta jalan keamanan dapat dipahami dari dokumen primernya. Pembahasan ditutup dengan penilaian yang jujur tentang apa yang sudah ada hari ini dan apa yang masih berupa rancangan.
Dua langkah strategi keamanan memori#
README proyek menempatkan keamanan, khususnya keamanan memori, sebagai tantangan utama yang harus dijawab sebuah bahasa penerus C++, lalu menetapkan rencana migrasi dua langkah.
- Migrasi dari C++ ke dialek Carbon yang didesain untuk interop dan migrasi C++, dilakukan secara sangat otomatis dengan pengawasan minimal.
- Refactoring inkremental atas kode Carbon tersebut untuk mengadopsi desain, pola, dan API yang aman memori.
Dokumen desain bahasa menjelaskan premis di balik urutan tersebut, yaitu pengguna C++ tidak dapat mengorbankan performa demi keamanan, sehingga pengumpulan sampah (garbage collection) tersingkir dan satu-satunya mekanisme yang teruji untuk mencapai keamanan tanpa kehilangan performa adalah pemeriksaan pada waktu kompilasi. Pendekatan Carbon dibedakan dari Rust oleh titik awalnya, karena Rust berangkat dari keamanan sedangkan Carbon berangkat dari migrasi, lalu meningkatkan keamanan secara bertahap. Jalurnya dirangkum dokumen tersebut dalam empat baris, yaitu mempertahankan performa, kode, dan pengembang yang ada, mengadopsi Carbon lewat migrasi berbantuan alat, mengambil perbaikan keamanan yang mudah sejak hari pertama, dan menggeser kode ke jalur aman memori dalam rentang satu dekade. Diagram berikut menggambarkan kedua langkah itu beserta dua mode yang menyertainya.
Mode keamanan dan model lima kategori#
Dokumen strategi keamanan membagi kode Carbon menjadi kode safe dan kode unsafe. Kemampuan unsafe tidak dimodelkan sebagai wilayah luas atau varian bahasa terpisah, melainkan sebagai operasi yang sempit secara semantik dan sintaks, yang penandaan kata kunci unsafe-nya dapat diaudit. Atas dasar itu, Carbon menetapkan dua safety mode. Mode strict menandai seluruh kode unsafe dengan kata kunci tersebut dan dirancang memenuhi syarat bahasa yang aman memori, sedangkan mode permissive mengizinkan sebagian kode tanpa penanda demi interop C++ dan migrasi otomatis. Mode dapat dikonfigurasi per berkas pada deklarasi package atau per tubuh fungsi.
Model keamanan memori yang ditetapkan menggunakan lima kategori, dengan mekanisme pemeriksaan yang berbeda-beda.
| Kategori | Mekanisme pemeriksaan |
|---|---|
| Keamanan tipe | waktu kompilasi |
| Keamanan inisialisasi | campuran waktu jalan dan waktu kompilasi |
| Keamanan spasial | waktu jalan |
| Keamanan temporal | waktu kompilasi lewat sistem tipe |
| Keamanan data race | waktu kompilasi lewat sistem tipe |
Pada tingkat ini, model Carbon dinyatakan sebagian besar menyamai Rust, dengan satu penyimpangan kecil, yaitu pemanfaatan teknik waktu jalan yang lebih kuat untuk keamanan inisialisasi demi kenyamanan penggunaan. Mode build melengkapinya, karena release build tetap menyertakan pemeriksaan batas sebagai pengerasan dasar, sedangkan debug build menambah perilaku fail-stop dengan kemampuan deteksi yang setidaknya menyamai Address Sanitizer dan Memory Sanitizer. Manfaat awal saat migrasi juga sudah dirinci, antara lain pelacakan status belum terinisialisasi, desain API yang mendukung pemeriksaan batas dinamis, peralihan dari undefined behavior ke erroneous behavior sedapat mungkin, dan penandaan sisanya dengan sintaks unsafe yang terlihat.
Pembaruan strategi dan peta jalannya#
Strategi ini bukan dokumen yang mengendap. Proposal pembaruan strategi keamanan tahun 2025 menggantikan arahan lama dengan kerangka yang lebih konkret, termasuk safety mode dan istilah keamanan yang digunakan dokumen desain hari ini, serta memberi arah model sistem tipe untuk keamanan temporal dan data race. Arah itu mencatat lima hal yang membuat Carbon berencana berbeda dari Rust, antara lain konstruksi paralel C++ seperti warisan, mutasi bersama yang aman, penegakan data race yang bertahap meniru jalur Swift, idiom C++ seperti iterator invalidation, dan asumsi yang lebih sedikit tentang apa yang boleh dilakukan kode unsafe.
Peta jalannya juga terbaca dari roadmap. Sasaran 2025 mencakup pembaruan strategi keamanan yang rinci dan desain konkret untuk keamanan memori temporal serta mutasi pada waktu kompilasi, sedangkan penambahan desain keamanan memori ke milestone 0.1 mendorong target 0.1 mundur setidaknya satu tahun, sehingga akhir 2026 menjadi batas paling cepat yang realistis. Pada pertengahan 2026, materi deep dive keamanan memori dipublikasikan untuk masukan komunitas, dan komentar pemelihara proyek menyatakan implementasinya belum dimulai. Dengan demikian, seluruh isi strategi pada topik ini berstatus desain dan rencana, dan bukan kemampuan yang dapat digunakan hari ini.
Ringkasan#
- Strategi keamanan memori Carbon berbentuk dua langkah, yaitu migrasi otomatis dari C++ ke dialek interop, lalu refactoring inkremental menuju desain yang aman memori.
- Mode strict menandai seluruh kode unsafe dengan kata kunci
unsafedan menjadi tujuan akhir, sedangkan mode permissive melayani interop dan migrasi otomatis. - Model keamanannya menggunakan lima kategori dengan pembagian tugas yang jelas, yaitu temporal, tipe, dan data race pada waktu kompilasi, spasial pada waktu jalan, serta inisialisasi pada keduanya.
- Peta jalannya terdokumentasi secara terbuka, dari proposal pembaruan 2025, dorongan mundur milestone 0.1, hingga deep dive 2026 yang belum diimplementasikan.
Referensi#
- README repositori carbon-lang — Proyek Carbon — Menetapkan rencana migrasi dua langkah dan daftar perbaikan keamanan awal yang diambil sejak migrasi.
- Safety — Proyek Carbon — Memuat kode safe dan unsafe, safety mode, model lima kategori keamanan memori, serta mode build.
- Updating Carbon’s safety strategy — Proyek Carbon — Proposal pembaruan strategi keamanan 2025 beserta arah sistem tipe untuk keamanan temporal dan data race.
- Roadmap — Proyek Carbon — Menetapkan sasaran keamanan 2025 dan dorongan mundur milestone 0.1 karena desain keamanan memori.
- Milestones — Proyek Carbon — Menyatakan syarat strategi dan desain keamanan memori yang diadopsi bertahap pada milestone 0.1.
- Carbon memory safety: a first deep dive — Chandler Carruth — Materi pembaruan diskusi keamanan memori 2026 yang dipublikasikan untuk masukan komunitas.