{"id":3815,"date":"2026-05-14T08:46:19","date_gmt":"2026-05-14T15:46:19","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/azure-sdk\/?p=3815"},"modified":"2026-05-14T08:46:19","modified_gmt":"2026-05-14T15:46:19","slug":"from-beta-to-stable-announcing-the-azure-sdk-for-rust-ga","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/azure-sdk\/from-beta-to-stable-announcing-the-azure-sdk-for-rust-ga\/","title":{"rendered":"From beta to stable: Announcing the Azure SDK for Rust \ud83c\udf89\ud83e\udd80"},"content":{"rendered":"<p>Picture a Rust service that signs in with Microsoft Entra ID, pulls a signing key from Key Vault, picks up work items off a Storage Queue, and lands the results in Blob Storage. Every piece of that stack is now stable. \ud83d\ude80<\/p>\n<p>The Azure SDK for Rust \ud83e\udd80 is <strong>stable<\/strong>. What we shipped as a <a href=\"https:\/\/devblogs.microsoft.com\/azure-sdk\/rust-in-time-announcing-the-azure-sdk-for-rust-beta\/\">beta<\/a> is now a production-ready SDK with stable APIs, <a href=\"https:\/\/semver.org\/\">semver<\/a> guarantees, and a surface area you can build on today.<\/p>\n<h2>Why Rust on Azure?<\/h2>\n<p>A few reasons teams keep telling us they picked Rust:<\/p>\n<ul>\n<li>\u26a1 Small binaries, low memory, fast cold starts. Great fit for containers and the edge, where every millisecond and megabyte matters.<\/li>\n<li>\ud83d\udee1\ufe0f Whole categories of bugs (null derefs, data races, use-after-free) caught at compile time instead of at 3:00 AM.<\/li>\n<li>\ud83d\udd0c Native async on top of <a href=\"https:\/\/tokio.rs\/\">Tokio<\/a>, with predictable performance for high-throughput workloads like event processing and streaming.<\/li>\n<li>\ud83c\udf10 The same design patterns you know from the <a href=\"https:\/\/github.com\/Azure?q=azure-sdk-for-\">.NET, Java, JavaScript, Python, Go, and C++ SDKs<\/a>. Different language, familiar shape.<\/li>\n<\/ul>\n<h2>What&#8217;s stable today<\/h2>\n<p>Six service libraries and the core infrastructure that powers them: <strong>Core<\/strong>, <strong>Identity<\/strong> \ud83d\udd10, <strong>Key Vault<\/strong> (Secrets, Keys, Certificates), and <strong>Storage<\/strong> (Blobs, Queues). All of them are crates you&#8217;ve already been using throughout beta. Now they&#8217;re stable.<\/p>\n<table>\n<thead>\n<tr>\n<th>Service<\/th>\n<th>Crate \ud83d\udce6<\/th>\n<th>Docs<\/th>\n<th>Source Code<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Core<\/td>\n<td><a href=\"https:\/\/crates.io\/crates\/azure_core\"><code>azure_core<\/code><\/a><\/td>\n<td><a href=\"https:\/\/docs.rs\/azure_core\/1.0.0\/azure_core\/\">Reference<\/a><\/td>\n<td><a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-rust\/tree\/main\/sdk\/core\/azure_core\">GitHub<\/a><\/td>\n<\/tr>\n<tr>\n<td>Identity<\/td>\n<td><a href=\"https:\/\/crates.io\/crates\/azure_identity\"><code>azure_identity<\/code><\/a><\/td>\n<td><a href=\"https:\/\/docs.rs\/azure_identity\/1.0.0\/azure_identity\/\">Reference<\/a><\/td>\n<td><a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-rust\/tree\/main\/sdk\/identity\/azure_identity\">GitHub<\/a><\/td>\n<\/tr>\n<tr>\n<td>Key Vault Secrets<\/td>\n<td><a href=\"https:\/\/crates.io\/crates\/azure_security_keyvault_secrets\"><code>azure_security_keyvault_secrets<\/code><\/a><\/td>\n<td><a href=\"https:\/\/docs.rs\/azure_security_keyvault_secrets\/1.0.0\/azure_security_keyvault_secrets\/\">Reference<\/a><\/td>\n<td><a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-rust\/tree\/main\/sdk\/keyvault\/azure_security_keyvault_secrets\">GitHub<\/a><\/td>\n<\/tr>\n<tr>\n<td>Key Vault Keys<\/td>\n<td><a href=\"https:\/\/crates.io\/crates\/azure_security_keyvault_keys\"><code>azure_security_keyvault_keys<\/code><\/a><\/td>\n<td><a href=\"https:\/\/docs.rs\/azure_security_keyvault_keys\/1.0.0\/azure_security_keyvault_keys\/\">Reference<\/a><\/td>\n<td><a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-rust\/tree\/main\/sdk\/keyvault\/azure_security_keyvault_keys\">GitHub<\/a><\/td>\n<\/tr>\n<tr>\n<td>Key Vault Certificates<\/td>\n<td><a href=\"https:\/\/crates.io\/crates\/azure_security_keyvault_certificates\"><code>azure_security_keyvault_certificates<\/code><\/a><\/td>\n<td><a href=\"https:\/\/docs.rs\/azure_security_keyvault_certificates\/1.0.0\/azure_security_keyvault_certificates\/\">Reference<\/a><\/td>\n<td><a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-rust\/tree\/main\/sdk\/keyvault\/azure_security_keyvault_certificates\">GitHub<\/a><\/td>\n<\/tr>\n<tr>\n<td>Storage Blobs<\/td>\n<td><a href=\"https:\/\/crates.io\/crates\/azure_storage_blob\"><code>azure_storage_blob<\/code><\/a><\/td>\n<td><a href=\"https:\/\/docs.rs\/azure_storage_blob\/1.0.0\/azure_storage_blob\/\">Reference<\/a><\/td>\n<td><a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-rust\/tree\/main\/sdk\/storage\/azure_storage_blob\">GitHub<\/a><\/td>\n<\/tr>\n<tr>\n<td>Storage Queues<\/td>\n<td><a href=\"https:\/\/crates.io\/crates\/azure_storage_queue\"><code>azure_storage_queue<\/code><\/a><\/td>\n<td><a href=\"https:\/\/docs.rs\/azure_storage_queue\/1.0.0\/azure_storage_queue\/\">Reference<\/a><\/td>\n<td><a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-rust\/tree\/main\/sdk\/storage\/azure_storage_queue\">GitHub<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>What&#8217;s new since beta<\/h2>\n<p>Service coverage is the headline. But a lot changed under the hood. We spent the past year hardening the SDK on real-world usage and community feedback:<\/p>\n<ul>\n<li><strong>Stabilized API surface.<\/strong> Every public type, trait, and function got a pass against the <a href=\"https:\/\/azure.github.io\/azure-sdk\/rust_introduction.html\">Azure SDK guidelines<\/a>. Breaking changes now follow <a href=\"https:\/\/semver.org\/\">semver<\/a>.<\/li>\n<li><strong>Unified core primitives.<\/strong> A redesigned <code>Pager<\/code> that yields items by default. A <code>Poller<\/code> you can just <code>.await<\/code> for long-running operations. One <code>ManagedIdentityCredential<\/code> that works across every Azure hosting environment. A new <code>DeveloperToolsCredential<\/code> that streamlines local development by falling through your installed dev tools (Azure CLI, Azure Developer CLI) until one returns a token.<\/li>\n<li><strong>Production-grade resilience.<\/strong> Automatic retries on transient failures. Challenge-based authentication so sovereign and private clouds just work.<\/li>\n<li><strong>First-class observability.<\/strong> \u26a1 Distributed tracing through <a href=\"https:\/\/crates.io\/crates\/azure_core_opentelemetry\"><code>azure_core_opentelemetry<\/code><\/a> using <code>#[tracing::*]<\/code> macros, plus an HTTP logging policy that sanitizes secrets by default.<\/li>\n<li><strong>Pluggable async runtime.<\/strong> Tokio out of the box. Bring your own with <code>set_async_runtime()<\/code>.<\/li>\n<\/ul>\n<h2>Get started \ud83d\ude80<\/h2>\n<p>A few lines in your terminal and you&#8217;re off:<\/p>\n<h3>1. Add dependencies<\/h3>\n<pre><code class=\"language-sh\">cargo add azure_identity azure_storage_blob futures tokio --features tokio\/full<\/code><\/pre>\n<h3>2. Authenticate and list some blobs<\/h3>\n<p><code>DeveloperToolsCredential<\/code> is the credential you reach for during local development. It falls through your installed dev tools (Azure CLI, Azure Developer CLI) until one returns a token. For workloads running in Azure, swap it for <code>ManagedIdentityCredential<\/code>. The rest of the code stays the same.<\/p>\n<pre><code class=\"language-rust\">use azure_identity::DeveloperToolsCredential;\r\nuse azure_storage_blob::BlobContainerClient;\r\nuse futures::TryStreamExt;\r\n\r\n#[tokio::main]\r\nasync fn main() -&gt; Result&lt;(), Box&lt;dyn std::error::Error&gt;&gt; {\r\n    \/\/ Locally, DeveloperToolsCredential falls through your dev tools (Azure CLI, Azure Developer CLI).\r\n    \/\/ In Azure, swap this for ManagedIdentityCredential.\r\n    let credential = DeveloperToolsCredential::new(None)?;\r\n\r\n    let container = BlobContainerClient::new(\r\n        \"https:\/\/&lt;your-storage-account&gt;.blob.core.windows.net\/\",\r\n        \"my-container\",\r\n        Some(credential),\r\n        None,\r\n    )?;\r\n\r\n    let mut pager = container.list_blobs(None)?;\r\n    while let Some(blob) = pager.try_next().await? {\r\n        println!(\"\ud83d\udce6 {}\", blob.name.unwrap_or_default());\r\n    }\r\n\r\n    Ok(())\r\n}<\/code><\/pre>\n<p>A few things worth noticing:<\/p>\n<ul>\n<li><code>Pager<\/code> yields blob items directly. <code>try_next().await?<\/code> walks the whole result set without any manual page bookkeeping. Need the raw pages instead? Call <code>.into_pages()<\/code> on the pager.<\/li>\n<li>Errors propagate with <code>?<\/code>. No surprise panics in your hot path.<\/li>\n<li>Same credential type plugs into every other stable crate. No per-service auth boilerplate.<\/li>\n<\/ul>\n<p>Want more? Each library has an <code>examples<\/code> directory in its project folder on <a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-rust\">GitHub<\/a>, with more cross-library samples in the root <a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-rust\/tree\/main\/samples\"><code>\/samples<\/code><\/a> folder.<\/p>\n<h2>Documentation \ud83d\udcda<\/h2>\n<p>Get productive fast:<\/p>\n<ul>\n<li><strong><a href=\"https:\/\/aka.ms\/azsdk\/rust\/conceptual-docs\">Documentation<\/a><\/strong>. Learn about the SDK architecture, design patterns, and best practices.<\/li>\n<li><strong><a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-rust\">Azure SDK for Rust on GitHub<\/a><\/strong>. Source code, examples, and contributing guide.<\/li>\n<\/ul>\n<h2>What&#8217;s coming next<\/h2>\n<p>Going stable is a milestone, not a finish line. A few things we&#8217;re working on:<\/p>\n<ul>\n<li>\ud83d\udce8 <strong>Event Hubs.<\/strong> <a href=\"https:\/\/crates.io\/crates\/azure_messaging_eventhubs\"><code>azure_messaging_eventhubs<\/code><\/a> and <a href=\"https:\/\/crates.io\/crates\/azure_messaging_eventhubs_checkpointstore_blob\"><code>azure_messaging_eventhubs_checkpointstore_blob<\/code><\/a> are close. They won&#8217;t ship in this stable wave, but they&#8217;re a top priority for the next one.<\/li>\n<li>\ud83d\uddc4\ufe0f <strong>Azure Cosmos DB.<\/strong> <a href=\"https:\/\/crates.io\/crates\/azure_data_cosmos\"><code>azure_data_cosmos<\/code><\/a> is in active development and is another planned stable release, expected in 2026.<\/li>\n<li>\ud83d\udce1 <strong>More service crates.<\/strong> Coverage keeps growing. The fastest way to nudge the roadmap is to <a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-rust\/issues?q=is%3Aopen+is%3Aissue+label%3Afeature-request+sort%3Areactions-%2B1-desc\">upvote \ud83d\udc4d<\/a> the services you actually need.<\/li>\n<li>\ud83d\udd2d <strong>Continued investments<\/strong> in observability, runtime flexibility, and ergonomics across the existing stable crates.<\/li>\n<\/ul>\n<p>Don&#8217;t see your favorite service? <a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-rust\/issues\/new\">Open an issue<\/a>. We read every one.<\/p>\n<h2>Join the conversation \ud83e\udd1d<\/h2>\n<p>Community feedback shaped a huge amount of this SDK. Keep it coming:<\/p>\n<ul>\n<li>\u2b50 Star the repo: <a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-rust\">Azure\/azure-sdk-for-rust<\/a><\/li>\n<li>\ud83d\udc1b File a bug: <a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-rust\/issues\/new\/choose\">GitHub Issues<\/a><\/li>\n<li>\ud83d\udca1 Vote on <a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-rust\/issues?q=is%3Aopen+is%3Aissue+label%3Afeature-request+sort%3Areactions-%2B1-desc\">open feature requests<\/a><\/li>\n<li>\ud83d\udde3\ufe0f Weigh in on <a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-rust\/labels\/design-discussion\">design discussions<\/a><\/li>\n<li>\ud83c\udd95 Tell us which Azure service should be next by <a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-rust\/issues\/new\">opening an issue<\/a><\/li>\n<\/ul>\n<p>Now go build something. We can&#8217;t wait to see it. \ud83d\ude80<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Announcing the stable release of the Azure SDK for Rust. This release includes stable libraries for Core, Identity, Key Vault (Secrets, Keys, Certificates), and Storage (Blobs, Queues).<\/p>\n","protected":false},"author":104000,"featured_media":3814,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[750,158,936,935,983,738],"class_list":["post-3815","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure-sdk","tag-azure-sdk","tag-identity","tag-key-vault","tag-rust","tag-stable","tag-storage"],"acf":[],"blog_post_summary":"<p>Announcing the stable release of the Azure SDK for Rust. This release includes stable libraries for Core, Identity, Key Vault (Secrets, Keys, Certificates), and Storage (Blobs, Queues).<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/posts\/3815","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/users\/104000"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/comments?post=3815"}],"version-history":[{"count":2,"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/posts\/3815\/revisions"}],"predecessor-version":[{"id":3817,"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/posts\/3815\/revisions\/3817"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/media\/3814"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/media?parent=3815"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/categories?post=3815"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/tags?post=3815"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}