Back to News for Developers

Meet the Rustaceans: Gus Wynn

August 19, 2021ByNavyata Bawa

This article was written in collaboration with Gus Wynn, a Production Engineer at Facebook.

For today’s interview, we have Gus Wynn who is a Production Engineer on the hardware health diagnosis team at Facebook. The hardware health diagnosis team works on providing a platform for the collection and analysis of hardware-related data at scale. While working on this team, Gus has been using Rust as one of the main languages for development. Most of his work these days centers around building large scale distributed systems to perform hardware health diagnosis. Let’s hear from him about how his experience with Rust has been and learn more about his work.

In what capacity have you been using Rust?

My team is building a large scale distributed system in Rust to perform hardware health diagnosis. I write Rust code as my primary language on most days. While I spend a lot of time working on those distributed systems, I end up using my time to work on the libraries, bindings and common code required to build an at-scale system like this at Facebook. In particular, I have been interested in the performance of async rust, and have been trying to make it easier for others to write fast code easily.

Why did your team at Facebook choose to use Rust over other languages?

We chose Rust because it combines a large number of desirable properties:

  • The strong type system in Rust lets us model complex problems and ensures the correctness of our implementations statically with the compiler.
  • Rust is fast, by default, with very little effort.
  • Memory safety is a guarantee in Rust. This, when coupled with it’s speed, is a property unique to Rust, and it saves us an absurd amount of time from debugging problems that simply do not exist in Rust as compared to other languages.

What are some of the projects that you’ve worked on at Facebook that use Rust?

Some of the projects I have worked on that use Rust include:

  • Core RPC (Remote Procedure Call) libraries.
  • Pieces of the hardware diagnosis system that my team is building. This system will enable us to remotely diagnose issues in the machines that are broken.
  • Core datastore client libraries.

Apart from this, one of my favorite things to work on in Rust is actually teaching it. I love answering questions, reviewing code, unblocking people who might be confused and creating best practices.

How do you feel about Rust's growth trajectory at Facebook?

I think the trajectory of Rust’s growth at Facebook is extremely positive. I regularly see people try it out and immediately understand the benefit. Rust is an incredible tool that makes writing correct, reliable and fast software a lot easier. In fact, it makes it so much easier, that people very quickly feel that it's worth the activation energy required to learn a new language and build the required shared libraries.

What value does Facebook add to Rust?

Facebook has produced and helped maintain some very nice libraries. Off the top of my head, there is Gazebo, and cargo-guppy, but the one that is a force-multiplier for me basically everyday, as well as a force-multiplier for many people outside of FB, is CXX, which makes it incredibly easy to bind C++ and Rust code together. I believe this is a fundamental piece to continuing Rust's growth trajectory in and outside of Facebook.

How do you think Rust is growing as a language in 2021?

I have seen Rust continue to grow at a faster and faster rate for years. I think that the work that the open source teams are doing, both on the technical side as well as the community work, is incredible. In particular, I think the Async Visions project is an incredible idea, and I can't wait for it to be even easier for Rust to replace many, many high-performance server uses!

Some people who have used Rust have come to really like it. Why do you think that is and what is your favorite feature about Rust?

This is very hard to answer because Rust is an incredibly well designed language. I think my favorite part is its type system, because:

  • Enums-with-data, also called sum types, or tagged unions, make it easy to model real-world problems. The best of these are Result and Option!
  • Traits are a better way than inheritance to express relationships.
  • It's a strong enough type system for type inference to make it easy to read and write code.
  • The type system is secretly the way that Rust implements its memory safety and multi-threaded race prevention. For example, the lifetimes are part of the type system, and the auto-traits Send and Sync are used to encode the necessary info to prevent race-conditions.

Where can people learn more about Rust and how can they start contributing to it?

I would definitely suggest starting with The Book-Rust Programming Language. There are also other great resources for more intermediate or advanced content. In particular, Jon Gjengset's live streams and his early-access book are incredible for getting to the next level!

We would like to thank Gus for taking the time to do this interview. It was very interesting to learn how Rust is being used as a primary language for analysis of hardware-related data at scale and how we are learning from all the things we build here and contributing back to the Rust community. We hope you found this interview useful and it gave you some insight into how and where Rust is being used at Facebook.

Check out our previous blogs from the Meet the Rustaceans series:
Meet the Rustaceans: Chris Konstad
Meet the Rustaceans: Pedro Rittner
Meet the Rustaceans: Neil Mitchell
Meet the Rustaceans: Daniel Xu
Meet the Rustaceans: Eric Kuecks

About the Meet the Rustaceans series

Rust has consistently been ranked as the “most loved” language for the last 5 years and we at Facebook believe that Rust is an outstanding language that shines in critical issues such as memory safety, performance and reliability and is being used widely over a large range of projects here. We joined the Rust Foundation to help contribute towards the improvement and growth of Rust, which not only strengthens our commitment towards the Rust language but also towards a sustainable development of open source technologies and developer communities across the world.

This blog is a part of our Meet the Rustaceans series, where we invite the engineers and developers who use Rust on a regular basis to share their experiences and tell us about the amazing products that they are building using Rust here at Facebook. Look out for more interview blogs where we meet with many more engineers and hear their thoughts on this topic.

To learn more about Facebook Open Source, visit our open source site, subscribe to our YouTube channel, or follow us on Twitter and Facebook.

Interested in working in Production Engineering at Facebook? Check out our job postings on our Production Engineering career page here.