<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/rust-1-99-0-stabilizes-c-variadic-function-definitions-and-adds-new-standard-library-apis-v6elwytnz" -->

---
title: Rust 1.99.0 stabilizes C-variadic function definitions...
description: Rust 1.99.0 is scheduled for release on October 1, with a pre-release build already available for testing. The release stabilizes C-variadic function...
canonical: https://daily.dev/posts/rust-1-99-0-stabilizes-c-variadic-function-definitions-and-adds-new-standard-library-apis-v6elwytnz
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Rust 1.99.0 stabilizes C-variadic function definitions and adds new standard library APIs | daily.dev
og:description: Rust 1.99.0 is scheduled for release on October 1, with a pre-release build already available for testing. The release stabilizes C-variadic function...
og:url: https://daily.dev/posts/rust-1-99-0-stabilizes-c-variadic-function-definitions-and-adds-new-standard-library-apis-v6elwytnz
og:image: https://api.daily.dev/og/posts/V6ELWytnZ.png
og:image:alt: Rust 1.99.0 stabilizes C-variadic function definitions and adds new standard library APIs
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Rust 1.99.0 stabilizes C-variadic function definitions and adds new standard library APIs

**[Collections](https://daily.dev/sources/collections)** · 1 min read · 11 upvotes · 0 comments

## Summary

Rust 1.99.0 is scheduled for release on October 1, with a pre-release build already available for testing. The release stabilizes C-variadic function definitions using extern "C" and extern "C-unwind", introducing a new VaList type and VaArgSafe trait. It also settles safety requirements for reading size and alignment from raw pointers to unsized types, updates Box::leak documentation to recommend Box::into_non_null over round-trip unleaking, and stabilizes several new standard library APIs including IntoIterator for Box<[T; N]>, VecDeque::retain_back, Vec::into_parts/from_parts, and std::fs::set_times. Testers can install the pre-release via rustup pointed at a custom dist server and report issues on the internals forum or a tracking GitHub issue.

## Content

Rust 1.99.0 is out. It was scheduled for October 1 and went through the usual pre-release testing first. Anyone who wants to try an upcoming release can point rustup at a custom dist server to get the pre-release build locally, then report problems in the internals forum thread or on the GitHub issue that tracks the pre-release process.

## Variadic functions in Rust

You can now define C-ABI variadic functions directly in Rust, using `extern "C"` or `extern "C-unwind"`. Two new items support this: the `VaList` type and the `VaArgSafe` trait.

## Size and alignment from raw pointers

The release adds functions that read the size and alignment of the value behind a raw pointer. The safety requirements for doing this with pointers to unsized types are now settled.

## Box::leak documentation

The docs now recommend against round-tripping to "unleak" after `Box::leak`. They point to `Box::into_non_null` instead.

## Newly stabilized APIs

- `IntoIterator` for `Box<[T; N]>`
- `VecDeque::retain_back`
- `Vec::into_parts` and `Vec::from_parts`
- `std::fs::set_times`

The Cargo and Clippy changelogs have their own lists of changes for this release.

## Questions this post answers

### How do I define a C-ABI variadic function in Rust?

As of Rust 1.99.0, you can define C-ABI variadic functions directly using extern "C" and extern "C-unwind" function signatures. This stabilization comes with a new VaList type for accessing the variadic arguments and a VaArgSafe trait that marks which types are safe to pass through a variadic interface.

_Rust developers tracking FFI changes like this can follow release updates on daily.dev._

### Should I round-trip unleak memory after calling Box::leak in Rust?

No, the updated Box::leak documentation in Rust 1.99.0 recommends against round-trip unleaking a value after leaking it. Instead, it points developers to Box::into_non_null as the preferred way to handle this pattern, since re-boxing a leaked reference carries safety pitfalls the docs now call out explicitly.

_Developers refining memory safety patterns in Rust can keep up with API guidance via daily.dev._

### What new standard library APIs were stabilized in Rust 1.99.0?

Rust 1.99.0 stabilizes IntoIterator for Box<[T; N]>, VecDeque::retain_back, Vec::into_parts and Vec::from_parts, and std::fs::set_times. These additions give more direct ways to iterate over boxed arrays, selectively retain elements from the back of a VecDeque, decompose or reconstruct a Vec from its raw parts, and set file timestamps.

_Those upgrading Rust toolchains can scan new stdlib APIs like these through daily.dev._

## Similar posts on daily.dev

- [Announcing Rust 1.97.0](https://daily.dev/posts/announcing-rust-1-97-0-fqxhq3pfj) · Rust · 22 upvotes · 0 comments
- [Rust introduces new Range types](https://daily.dev/posts/rust-introduces-new-range-types-txhclns35) · InfoWorld · 25 upvotes · 0 comments

---

Tags: [#rust](https://daily.dev/tags/rust)

[View this post on daily.dev](https://daily.dev/posts/rust-1-99-0-stabilizes-c-variadic-function-definitions-and-adds-new-standard-library-apis-v6elwytnz)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Rust 1.99.0 stabilizes C-variadic function definitions and adds new standard library APIs","url":"https://daily.dev/posts/rust-1-99-0-stabilizes-c-variadic-function-definitions-and-adds-new-standard-library-apis-v6elwytnz","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/rust-1-99-0-stabilizes-c-variadic-function-definitions-and-adds-new-standard-library-apis-v6elwytnz"},"datePublished":"2026-10-01T12:47:10.714Z","dateModified":"2026-10-01T13:30:54.698Z","description":"Rust 1.99.0 is scheduled for release on October 1, with a pre-release build already available for testing. The release stabilizes C-variadic function...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/10c030b2429f801a5aed8756bdece9d2?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/10c030b2429f801a5aed8756bdece9d2?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Collections","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Collections","logo":"https://media.daily.dev/image/upload/s--fk_6ycEi--/f_auto,q_auto/v1780996001/logos/collections?_a=BAMAMiWQ0","url":"https://daily.dev/sources/collections"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/rust-1-99-0-stabilizes-c-variadic-function-definitions-and-adds-new-standard-library-apis-v6elwytnz","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":11},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"rust","timeRequired":"PT1M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Collections","item":"https://daily.dev/sources/collections"},{"@type":"ListItem","position":3,"name":"Rust 1.99.0 stabilizes C-variadic function definitions and adds new standard library APIs"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/rust-1-99-0-stabilizes-c-variadic-function-definitions-and-adds-new-standard-library-apis-v6elwytnz#faq","mainEntity":[{"@type":"Question","name":"How do I define a C-ABI variadic function in Rust?","acceptedAnswer":{"@type":"Answer","text":"As of Rust 1.99.0, you can define C-ABI variadic functions directly using extern \"C\" and extern \"C-unwind\" function signatures. This stabilization comes with a new VaList type for accessing the variadic arguments and a VaArgSafe trait that marks which types are safe to pass through a variadic interface. Rust developers tracking FFI changes like this can follow release updates on daily.dev."}},{"@type":"Question","name":"Should I round-trip unleak memory after calling Box::leak in Rust?","acceptedAnswer":{"@type":"Answer","text":"No, the updated Box::leak documentation in Rust 1.99.0 recommends against round-trip unleaking a value after leaking it. Instead, it points developers to Box::into_non_null as the preferred way to handle this pattern, since re-boxing a leaked reference carries safety pitfalls the docs now call out explicitly. Developers refining memory safety patterns in Rust can keep up with API guidance via daily.dev."}},{"@type":"Question","name":"What new standard library APIs were stabilized in Rust 1.99.0?","acceptedAnswer":{"@type":"Answer","text":"Rust 1.99.0 stabilizes IntoIterator for Box<[T; N]>, VecDeque::retain_back, Vec::into_parts and Vec::from_parts, and std::fs::set_times. These additions give more direct ways to iterate over boxed arrays, selectively retain elements from the back of a VecDeque, decompose or reconstruct a Vec from its raw parts, and set file timestamps. Those upgrading Rust toolchains can scan new stdlib APIs like these through daily.dev."}}]}
```

