Episode

What's New in Rust 1.79 and 1.80

Podcast
Rustacean Station
Published
May 10, 2025
Duration seconds
5266
Processing state
processed
Canonical source
https://rustacean-station.org/episode/rust-1.79-1.80/
Audio
https://dts.podtrac.com/redirect.mp3/audio.rustacean-station.org/file/rustacean-station/2025-05-10-rust-1.79-1.80.mp3
JSON
/v1/public/podcasts/rustacean-station/episodes/what-s-new-in-rust-1-79-and-1-80
Markdown
/podcast/rustacean-station/what-s-new-in-rust-1-79-and-1-80.md

Actions

  • POST https://stenobird.com/v1/public/podcasts/rustacean-station/episodes/what-s-new-in-rust-1-79-and-1-80/transcription-requests
    Idempotently request low-priority transcript generation for this episode.
  • GET https://stenobird.com/podcast/rustacean-station/what-s-new-in-rust-1-79-and-1-80.md
    Read the agent-friendly Markdown representation of this episode resource.

Summary

A technical breakdown of the key language changes, stability improvements, and soundness fixes introduced in Rust 1.79 and 1.80. The discussion covers everything from new inline const expressions to critical changes in thread safety for standard library locks.

Topics

  • Rust Programming Language
  • Rust 1.79
  • Rust 1.80
  • Compile-time evaluation
  • Software Soundness
  • Clippy Lints
  • Cargo
  • Memory Safety

Highlights

  • Main idea: Inline const expressions allow for arbitrary compile-time evaluation within blocks, enhancing the power of constant definitions
  • Practical takeaway: Use the new 'unnamable types' lint to catch public API types that are accidentally inaccessible due to module visibility
  • Failure mode: Be aware that ReentrantLockGuard is no longer Sync if the underlying type isn't Sync, impacting StdoutLock and StderrLock
  • Main idea: Cargo is increasingly adopting Git Oxide to reduce C dependencies and improve performance in file listing operations
  • Practical takeaway: The new Clippy 'manual_clamp' lint helps refactor verbose conditional logic into the more idiomatic .clamp() method

Chapters

  1. 1:00 Inline Const Expressions: Understanding the new syntax for evaluating arbitrary expressions at compile time using const blocks.
  2. 14:30 Lifetimes and Temporaries: A deep dive into the nuances of lifetime extension and how temporaries behave within expressions.
  3. 28:05 Wide Pointers and Safety: Analyzing the structure of raw slices and the safety guarantees of the length method.
  4. 41:05 Clone Implementation Guarantees: New documentation regarding the performance and logic guarantees of CloneFrom implementations.
  5. 54:55 Configuration and Attributes: Discussing the use of cfg flags and allow attributes in the Rust ecosystem.
  6. 1:14:35 The Never Type and Fallbacks: Exploring the evolution of the 'never' type and the decision to avoid using the unit type as a fallback.
  7. 1:21:15 New Lints and Soundness Fixes: Reviewing the unnamable types lint, manual clamp detection, and the breaking changes in 1.80's lock implementation.