, ,

Rust 1.99 Ships C-Variadic Functions and RISC-V musl Tier 2

Rust 1.99 Ships C-Variadic Functions and RISC-V musl Tier 2

The Rust Release Team shipped Rust 1.99.0 on October 1, 2026, and the headline is one systems programmers have waited years for: stable Rust can now define C-ABI variadic functions, not just call them. A function written as unsafe extern "C" fn sum(mut args: ...) receives a VaList that is ABI-compatible with C’s va_list, and the VaArgSafe trait limits which types can be read from it.

That matters for industrial software because CAD, CAE, and plant-floor stacks still sit on decades of C libraries with printf-style logging hooks and variadic callbacks. Until now, a Rust project that had to export one of those interfaces needed a small C or assembly shim. With 1.99, the boundary layer for a CAE solver bridge or a MES device driver can be written in Rust itself, with the unsafe contract stated in one place.

SiFive HiFive1 RISC-V development board. Photo: Gareth Halfacree, CC BY-SA 2.0, via Wikimedia Commons.
RISC-V boards like the SiFive HiFive1 are where embedded Rust keeps growing. Photo: Gareth Halfacree / Wikimedia Commons, CC BY-SA 2.0.

The full release notes also promote riscv64-unknown-linux-musl to Tier 2 with host tools and turn on static position-independent executables for every gnu and musl target. Three new functions, Layout::for_value_raw, mem::size_of_val_raw, and mem::align_of_val_raw, settle how to read size and alignment through raw pointers. The team also updated the Box::leak docs to warn against freeing leaked memory later, ahead of custom allocators landing.

Build engineers get changes too. Cargo adds a built-in debug profile as a first step toward making dev faster by default, and it now disables incremental compilation when the CI environment variable is set. Rustdoc filters trait impls more cleverly, which the notes say makes it about 20% faster on average and up to 40% on some real crates. On the compatibility side, legacy modules like std::i32::MAX are now fully deprecated and no_mangle_generic_items is a hard error.

A programmer working at a desk with a laptop and an external monitor. Photo: Crew, CC0, via Wikimedia Commons.
Cargo’s new CI default changes build behavior on every pipeline that sets the CI variable. Photo: Crew / Wikimedia Commons, CC0.

The same week brought more Rust into infrastructure. A fourth revision of patches led by Zhi Wang adds SR-IOV support to Rust PCI drivers in the Linux kernel, so Rust drivers can turn virtual functions on and off and share data between physical and virtual functions without unsafe lifetime tricks. The Tor Project also released Arti 2.7.0, its Rust Tor client, with fixes for low- to high-severity security issues and a push to upgrade.

For N23D, which is being built as one Rust binary across CAD, CAE, PLM, MES, and the rest of the stack, every narrowing of the C boundary means less glue code to audit. Shops that keep Rust services next to legacy C solvers should check their CI build times after upgrading and look for any shims they can now delete. The next release, Rust 1.100.0, is scheduled for November 12, 2026, according to the Rust project’s announcement thread.

Sources

Featured photo: Datacenter Server Racks by Carl Lender, CC BY 2.0, via Wikimedia Commons.