{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreieicb2dr6l64kgpzlpj35dgdxbglj4f6vxymbphcpiewry6ffynoa",
"uri": "at://did:plc:lujatorbzcq2chhxnvjgc464/app.bsky.feed.post/3mge7atdwbi42"
},
"path": "/2026/03/05/Rust-1.94.0/",
"publishedAt": "2026-03-05T00:00:00.000Z",
"site": "https://blog.rust-lang.org",
"tags": [
"get `rustup`",
"detailed release notes for 1.94.0",
"report",
"`array_windows`",
"`windows`",
"2016 Advent of Code puzzle",
"`include` documentation",
"TOML v1.1",
"TOML release notes",
"`<[T]>::array_windows`",
"`<[T]>::element_offset`",
"`LazyCell::get`",
"`LazyCell::get_mut`",
"`LazyCell::force_mut`",
"`LazyLock::get`",
"`LazyLock::get_mut`",
"`LazyLock::force_mut`",
"`impl TryFrom<char> for usize`",
"`std::iter::Peekable::next_if_map`",
"`std::iter::Peekable::next_if_map_mut`",
"x86 `avx512fp16` intrinsics",
"AArch64 NEON fp16 intrinsics",
"`f32::consts::EULER_GAMMA`",
"`f64::consts::EULER_GAMMA`",
"`f32::consts::GOLDEN_RATIO`",
"`f64::consts::GOLDEN_RATIO`",
"`f32::mul_add`",
"`f64::mul_add`",
"Rust",
"Cargo",
"Clippy",
"Thanks!"
],
"textContent": "The Rust team is happy to announce a new version of Rust, 1.94.0. Rust is a programming language empowering everyone to build reliable and efficient software.\n\nIf you have a previous version of Rust installed via `rustup`, you can get 1.94.0 with:\n\n\n $ rustup update stable\n\nIf you don't have it already, you can get `rustup` from the appropriate page on our website, and check out the detailed release notes for 1.94.0.\n\nIf you'd like to help us out by testing future releases, you might consider updating locally to use the beta channel (`rustup default beta`) or the nightly channel (`rustup default nightly`). Please report any bugs you might come across!\n\n## What's in 1.94.0 stable\n\n### Array windows\n\nRust 1.94 adds `array_windows`, an iterating method for slices. It works just like `windows` but with a constant length, so the iterator items are `&[T; N]` rather than dynamically-sized `&[T]`. In many cases, the window length may even be inferred by how the iterator is used!\n\nFor example, part of one 2016 Advent of Code puzzle is looking for ABBA patterns: \"two different characters followed by the reverse of that pair, such as `xyyx` or `abba`.\" If we assume only ASCII characters, that could be written by sweeping windows of the byte slice like this:\n\n\n fn has_abba(s: &str) -> bool { s.as_bytes() .array_windows() .any(|[a1, b1, b2, a2]| (a1 != b1) && (a1 == a2) && (b1 == b2)) }\n\nThe destructuring argument pattern in that closure lets the compiler infer that we want windows of 4 here. If we had used the older `.windows(4)` iterator, then that argument would be a slice which we would have to index manually, _hoping_ that runtime bounds-checking will be optimized away.\n\n### Cargo config inclusion\n\nCargo now supports the `include` key in configuration files (`.cargo/config.toml`), enabling better organization, sharing, and management of Cargo configurations across projects and environments. These include paths may also be marked `optional` if they might not be present in some circumstances, e.g. depending on local developer choices.\n\n\n # array of paths include = [ \"frodo.toml\", \"samwise.toml\", ] # inline tables for more control include = [ { path = \"required.toml\" }, { path = \"optional.toml\", optional = true }, ]\n\nSee the full `include` documentation for more details.\n\n### TOML 1.1 support in Cargo\n\nCargo now parses TOML v1.1 for manifests and configuration files. See the TOML release notes for detailed changes, including:\n\n * Inline tables across multiple lines and with trailing commas\n * `\\xHH` and `\\e` string escape characters\n * Optional seconds in times (sets to 0)\n\n\n\nFor example, a dependency like this:\n\n\n serde = { version = \"1.0\", features = [\"derive\"] }\n\n... can now be written like this:\n\n\n serde = { version = \"1.0\", features = [\"derive\"], }\n\nNote that using these features in `Cargo.toml` will raise your development MSRV (minimum supported Rust version) to require this new Cargo parser, and third-party tools that read the manifest may also need to update their parsers. However, Cargo automatically rewrites manifests on publish to remain compatible with older parsers, so it is still possible to support an earlier MSRV for your crate's users.\n\n### Stabilized APIs\n\n * `<[T]>::array_windows`\n * `<[T]>::element_offset`\n * `LazyCell::get`\n * `LazyCell::get_mut`\n * `LazyCell::force_mut`\n * `LazyLock::get`\n * `LazyLock::get_mut`\n * `LazyLock::force_mut`\n * `impl TryFrom<char> for usize`\n * `std::iter::Peekable::next_if_map`\n * `std::iter::Peekable::next_if_map_mut`\n * x86 `avx512fp16` intrinsics (excluding those that depend directly on the unstable `f16` type)\n * AArch64 NEON fp16 intrinsics (excluding those that depend directly on the unstable `f16` type)\n * `f32::consts::EULER_GAMMA`\n * `f64::consts::EULER_GAMMA`\n * `f32::consts::GOLDEN_RATIO`\n * `f64::consts::GOLDEN_RATIO`\n\n\n\nThese previously stable APIs are now stable in const contexts:\n\n * `f32::mul_add`\n * `f64::mul_add`\n\n\n\n### Other changes\n\nCheck out everything that changed in Rust, Cargo, and Clippy.\n\n## Contributors to 1.94.0\n\nMany people came together to create Rust 1.94.0. We couldn't have done it without all of you. Thanks!",
"title": "Announcing Rust 1.94.0",
"updatedAt": "2026-03-05T00:00:00.000Z"
}