
Rust 1.99 brings extern “C” variadics support and layout information from raw pointers
The Rust development team has officially released version 1.99, bringing significant enhancements to the systems programming language. The release introduces stabilized support for C-ABI variadic functions with “C” and “C-unwind” ABIs, allowing developers to now write variadic functions directly in Rust rather than just calling externally-defined ones like those in libc. This capability fills a longstanding gap for FFI-heavy applications that require compatibility with C-style variable argument lists.
Beyond the variadic function support, the release delivers practical improvements for memory management and unsafe code. Three new functions, Layout::for_value_raw, mem::size_of_val_raw, and mem::align_of_val_raw, now enable retrieval of size and alignment information from raw pointers to both sized and unsized types. The team also updated documentation to recommend against patterns involving round-trip unleaking after Box::leak, citing problematic interactions with compiler optimizations and upcoming custom allocator stabilization. Several other APIs reached stable status, including IntoIterator implementations for boxed arrays, VecDeque::retain_back, and String::from_utf8_lossy_owned.
Developers with rustup installed can upgrade immediately with rustup update stable. As Rust approaches its symbolic 2.0 milestone, this release continues the project's methodical pace of stabilizing features that have matured in nightly builds. The contribution credits acknowledge dozens of community members who participated in making 1.99 possible, reflecting the collaborative development model that has characterized Rust's growth since its initial launch.
No comments so far, maybe you want to be first?


