Open-source maintainer, speaker, rebel. About me.

Rust in 2018

— Streamline Collaboration and Empower Intermediate Users

I wrote about the future of Rust before and it seems like nobody stops me from doing it again! Quite the contrary: this time the Rust core team even asked for it. I'm a bit late to the party, but here are my 2 cents about the priorities for Rust in 2018.

Who is this guy?

There's a depressingly high chance that we've never met before — which is a real shame. For some context: I come from dynamically typed languages like Python and PHP. Rust was the first language that allowed me to write real low-level code without feeling like arguing with a bouncer.

To me, Rust is not a fireflower, it's my own personal Megazord1. I want Rust to win, but for that, we need to tick a few points off the list.

Compiler documentation for easier contribution

Rust programmers hacking during the Impl days at RustBeltRust

When I was in Columbus, Ohio for Rust Belt Rust, I met Niko Matsakis, Ariel Ben-Yehuda, and Santiago Pastorino. Those fine gentlemen eagerly worked on non-lexical lifetimes during the impl-period. Watching them hack away on the compiler was deeply inspirational to me, and I started wondering if I could contribute, too. Needless to say, the barrier to entry for hacking on the compiler can be quite high. I didn't contribute anything yet.

One thing I'd love to do is to spend short 30-60 minute chunks of time to fix a small thing in the compiler here and there. Could be as simple as renaming a variable, writing a test or adding some documentation. Hence my first wish is, that contributing to the language will become easier. That could be achieved by providing extensive mentorship, more entry-level tickets, and better compiler documentation. All of that was already suggested by Niko.

More resources for intermediate programmers

On a related note, I'd like to see more talks/guidelines/books targeting intermediate Rust programmers. This includes discussions on how to structure big projects in Rust and Rust-specific design patterns. I want to read more about professional Rust usage and see case-studies from various industries. For example, there is a startup called snips, which builds an on-device voice-assistant using Rust. They integrate with C and C++ libraries and I want to hear more about their journey.

Improve the RFC process

I try to follow the RFC process very closely, but my time is limited. My wish is, that I can open any RFC and immediately get its status:

  • A summary of the discussion with major pros and cons.
  • A simple usage example, right at the beginning.
  • The next steps towards stabilization.

For example, if I look at this (not so) random issue, I don't even know where to start. What are the biggest blockers right now? Who is actively pushing this forward? How can I help out?

Github is great for code, but conversations about new features regularly get out of hand. This is not a problem, that is limited to Rust, either. Just look at other big projects like Docker, Kubernetes, or Node. Maybe we need a new tool for that.

The usual suspects

If I could ask for two stable features in 2018, it would be ? in main and non-lexical lifetimes.

There's more I could mention of course, but I'm not gonna bore you with faster compile times, impl trait, generators, and the like. We're on a good way here, see Nick Cameron's post instead.

I'm convinced, that by improving documentation and mentorship, we can grow the number of contributors significantly and stabilize many highly-anticipated features this year.

1. Disclaimer: I never watched a single episode of Power Rangers.

Thanks for reading! If you would like to receive future posts automatically, you can subscribe via email or RSS.

Want me to write more? Sponsor

Functional Programming for Mathematical Computing

Programming languages help us describe general solutions for problems; the result just happens to be executable by machines. Every programming language comes with a different set of strengths and weaknesses, one reason being that its syntax and semantics heavily influence the range of problems which… Continue reading