Rust and its ecosystem are, seemingly, in constant flux. And this appearance of perpetual motion can be scary, especially when you're building an application with stability and long-term project sustainability in mind. New Rust versions bring ever-higher editions, must-have new features, and lint and tool changes to keep on top of. And as new features get adopted, new crates and major versions emerge, leaving once-vibrant ecosystems to fade into oblivion. All this happens while the software ecosystem surrounding and underpinning Rust continues its relentless march forward.
In this talk, we'll take a look at the kinds of changes that may happen under you when working with Rust and how to live with them. We'll talk about Rust and crate versioning, but also backwards compatibility, unstable features, minimum supported Rust versions, and 1.0 releases. This talk is geared towards those using Rust to build applications and services, not those building Rust libraries. It won't tell you the right way to set up CI for your library crate, or how to decide whether a change is backwards compatible or not. Instead, we'll dig into the kinds of stability challenges that can arise in Rust, what to do when they crop up, and some promising avenues for making the stable life easier in the future.