How can I help Stabilize Things?

A friend and I are working on adding Rust support to Metaparticle.

We did a simple search for “decorators in Rust” and found this repo, which seemed promising. My friend added it, but soon found it wouldn’t build without using the nightly channel of rustc. I didn’t notice right away, because I like to experiment with Rust and have been running nightly by default for months, but my friend found this very off-putting. From his perspective, it seems like he can’t adopt Rust yet, because too many libraries require nightly, which makes it seem like the language isn’t production-ready yet.

When I started working with Rust, I also found that, for many things, I needed to be on the nightly channel. In my case I just ran rustup default nightly and forgot, since my Rust projects are mostly hobbies and I like running beta and nightly versions of things anyway.

But here’s my question for the Rust community in 2018: What can we do to make things more stable? Can we get Clippy and rustfmt to 1.0? Can we stabilize more language features? A more specific question I have is: What can I, or other people not one the core team, do to help stabilize Rust? I probably won’t be able to make a PR to the compiler for quite some time. Are these crates that need nightly, and aren’t on 1.0 yet, simply waiting for some language feature to stabilize? If so, how can I help? If not, what are they waiting for?

The Rust Community is off to an explosively good start – we have Meetups in dozens of cities, tons of interesting open source projects, and a supportive culture. But I think adoption is really slowed by the sheer number of crates that either won’t build without the nightly compiler, or are a version 0.1.2 or so.

The thing I would like to see most in 2018 is a clear process for me to help the language and ecosystem appear to stabilize. Is there a crate that’s 2 good PR’s from being 1.0 on stable? I would love to make those PRs, but I don’t have a reliable way of finding that crate. And what can be done, besides PRs to the compiler, to help the language itself stabilize more features?



1 thought on “How can I help Stabilize Things?”

  1. In my opinion, stabilization comes with time. The rust community has an awesome practice of really working on designs, and reworking them to find the best solution, only coming to stabilization when there haven’t been any new innovations.

    For compiler features, this can suck. However, a lot was stabilized in 2017, and you should be able to use #[derive(...)] as a stable feature today. This is the one thing I see you mention in the post, and you should know it is stable. is a library which hasn’t been updated in a year, and could be written in stable rust today with a bit of work.

    If you do want to push forwards stabilization, participate in discussions. Use the unstable features, find what’s wrong with them, report those. Finding bugs, finding ways things could work better, and finding what really works well: these are the best ways you can push forwards stabilization in the rust standard library.

    For libraries, I don’t see anything inherently wrong with instability. Sure, it means you may have to update in the future, but you can also literally not. Rust has super nice package management, and if you depend on library_xyz = "0.1" as is recommended, Cargo won’t update you to an incompatible version. Since rust releases themselves are 99.99% backwards compatible, and that 0.01% is niche naming collisions, you can potentially go on forever using an old version of any given library.

    To conclude, I don’t see any reason we need to rush this. Rushed stabilization won’t be great for anyone, and I think we’re going along at a pretty nice pace. There are very few things left that need unstable rust, and the few I can think of off the top of my head (impl Trait, generators) are scheduled to have a ton more testing this year and stabilization in the near future.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s