Langsung ke konten
Rasio

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.

Oleh Redaksi Rasio
2 menit baca
Logo Rust berbentuk roda gigi dengan huruf R dan tulisan The Rust Programming Language
Sumber gambar: The Rust Project

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:

  • IntoIterator untuk Box<[T; N]>;
  • Vec::into_parts dan Vec::from_parts;
  • Box::into_non_null dan Box::from_non_null;
  • VecDeque::retain_back;
  • String::from_utf8_lossy_owned;
  • std::fs::set_times dan std::fs::set_times_nofollow.

Daftar lengkap perubahan pada Rust, Cargo, dan Clippy tersedia di catatan rilis resmi Rust 1.99.0.

Sumber

Bagikan