Rust 1.99.0 stabilizes C-variadic functions written in Rust and raw-pointer layout queries
The release also stabilizes new APIs such as Vec::into_parts and Box::into_non_null, and updates guidance on Box::leak.
The Rust team has released Rust 1.99.0. Existing rustup users can get it with rustup update stable. The main language change is the stabilization of defining C-ABI variadic functions with the C and C-unwind ABIs, so functions that take a variable argument list can now be written in Rust itself rather than only called from it.
The release also settles the safety requirements for reading size and alignment through raw pointers, including to unsized types, by stabilizing Layout::for_value_raw, mem::size_of_val_raw and mem::align_of_val_raw. Defining naked variadic functions with non-C ABIs is stabilized as well, and these must be written with inline assembly.
There are no changes to language semantics, but the Box::leak documentation now recommends against patterns that later free the leaked memory. The team says such code interacts badly with current and possible future optimizations, and points to Box::into_non_null or Box::into_raw instead. The same guidance applies to other leak functions in the standard library.
Newly stable APIs include Vec::into_parts, Vec::from_parts, VecDeque::retain_back, String::from_utf8_lossy_owned and std::fs::set_times. Developers who write FFI code or unsafe allocation patterns should review the Box::leak note when upgrading.
Sources
- Announcing Rust 1.99.0official
Verified Oct 23, 2026 (official source). rustprogramming-languagesreleasedeveloper-tools