Rust 1.99 Rilis, Fungsi Variadik C Kini Bisa Ditulis Langsung di Rust
Rust 1.99.0 menstabilkan fungsi variadik berbasis ABI C, fungsi layout untuk raw pointer, dan sejumlah API baru. Pembaruan cukup lewat rustup update stable.
Tim rilis Rust merilis Rust 1.99.0 pada 1 Oktober 2026. Pengguna yang memasang Rust lewat rustup dapat memperbarui ke versi ini dengan perintah rustup update stable.
Fungsi variadik C ditulis di Rust
Perubahan utama di versi ini adalah stabilisasi fungsi variadik yang memakai ABI "C" dan "C-unwind". Fungsi variadik menerima jumlah argumen yang tidak tetap lewat daftar argumen ..., seperti printf di bahasa C.
Sebelumnya, Rust hanya bisa memanggil fungsi variadik yang didefinisikan di luar, misalnya libc::printf. Mulai Rust 1.99, fungsi semacam itu bisa ditulis langsung di Rust. Tipe dari ... adalah VaList, yang menurut tim Rust kompatibel secara ABI dengan tipe va_list di C pada berbagai target. Tipe apa saja yang boleh dibaca dari VaList dibatasi oleh trait VaArgSafe.
Rilis ini juga menstabilkan dukungan fungsi variadik “naked” untuk ABI selain "C", yang harus ditulis dengan inline assembly.
Ukuran dan alignment dari raw pointer
Rust 1.99 menetapkan syarat keamanan untuk mengambil ukuran dan alignment dari raw pointer, baik untuk tipe Sized maupun non-Sized. Tiga fungsi distabilkan untuk keperluan ini: Layout::for_value_raw, mem::size_of_val_raw, dan mem::align_of_val_raw.
Peringatan soal Box::leak
Tidak ada perubahan semantik bahasa terkait hal ini. Namun, dokumentasi Box::leak kini menyarankan agar memori yang sudah “dibocorkan” tidak dibebaskan kembali di kemudian hari. Menurut tim Rust, pola tersebut bermasalah dengan optimasi kompiler saat ini dan yang akan datang, terutama menjelang stabilisasi custom allocator. Sebagai gantinya, Box::into_non_null atau Box::into_raw disarankan.
API baru lainnya
Beberapa API yang distabilkan di versi ini antara lain:
IntoIteratoruntukBox<[T; N]>;Vec::into_partsdanVec::from_parts;Box::into_non_nulldanBox::from_non_null;VecDeque::retain_back;String::from_utf8_lossy_owned;std::fs::set_timesdanstd::fs::set_times_nofollow.
Daftar lengkap perubahan pada Rust, Cargo, dan Clippy tersedia di catatan rilis resmi Rust 1.99.0.
Sumber
- Topik:
- Rust
- Bahasa Pemrograman