Meet the Rustaceans: Gus Wynn
This article was written in collaboration with Gus Wynn, a production engineer at Facebook.
For today’s interview, we have Gus Wynn, a production engineer on the hardware health diagnostics team at Facebook. The hardware health diagnostics team is working to provide a platform for collecting and analyzing hardware-related data on a large scale. While working on this team, Gus used Rust as one of the main development languages. Most of his work today focuses on building large-scale, distributed systems for performing hardware health diagnostics. Let’s hear from him about his experience with Rust and learn more about his work.
In what capacity did you use Rust?
My team is building a large-scale, distributed system in Rust to perform hardware health diagnostics. Most days I write Rust code as my main language. While I spend a lot of time working on these distributed systems, I ultimately spend my time working on the libraries, bindings, and general code required to build a scale system like this one on Facebook. Specifically, I’ve been interested in the performance of asynchronous rust and tried to make it easier for others to easily write fast code.
Why did your team on Facebook choose to use Rust over other languages?
We chose Rust because it combines many desirable properties:
- The strong type system in Rust lets us model complex problems and statically ensures the correctness of our implementations with the compiler.
- By default, Rust is fast and with very little effort.
- Storage security is a guarantee in Rust. This, combined with its speed, is a unique property of Rust and, compared to other languages, saves us an absurd amount of time debugging problems that simply don’t exist in Rust.
What projects have you been working on on Facebook that use Rust?
Some of the projects I’ve worked on with Rust are:
- Core Remote Procedure Call (RPC) libraries.
- Parts of the hardware diagnostic system that my team is building. This system will allow us to remotely diagnose problems in the defective machines.
- Core Datastore Client Libraries.
Other than that, one of my favorite things to do in Rust is teaching it. I love answering questions, reviewing code, sharing people who may be confused, and developing best practices.
What do you think of Rust’s growth path on Facebook?
I think Rust’s development on Facebook has been extremely positive. I regularly see people try it out and immediately understand the benefits. 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 is worth the activation energy that it takes to learn a new language and create the shared libraries required.
What is the value of Facebook for Rust?
Facebook has created some very nice libraries and helped maintain them. Out of my head there is gazebo and cargo guppy, but the one that is basically a force multiplier for me every day, as well as a force multiplier for a lot of people outside of FB, is CXX, which makes it incredibly easy to get C ++ and Rust code tie together. I believe this is a fundamental contributor to the continued growth of Rust both inside and outside of Facebook.
How do you think Rust will grow as a language in 2021?
I’ve seen Rust grow faster and faster for years. I think the work that the open source teams are doing, both on the technical side and community work, is incredible. I think the Async Visions project in particular is an incredible idea and I can’t wait for Rust to make it even easier to replace many, many high-performance servers!
Some people who have used Rust really like it. Why do you think that is the case and what is your favorite feature of Rust?
This is very difficult to answer because Rust is an incredibly well-designed language. I think my favorite part is the type system because:
- Enumerations with data, also called sum types or tagged associations, make it easy to model real 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 code reading and writing easier.
- The type system is secretly the way Rust implements its memory security and multithreaded 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 information 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 other great resources for advanced or advanced content as well. In particular, Jon Gjengset’s livestreams and his early access book are amazing for taking to the next level!
We’d like to thank Gus for taking the time to do this interview. It was very interesting to see how Rust is used as the primary language for analyzing hardware-related data on a large scale and how we learn from all the things we build here and contribute to the Rust community. We hope you found this interview helpful and it gave you some insight into how and where Rust is used on 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 Rustaceen: Eric Kuecks
About the Meet the Rustaceans series
Rust has been ranked the “Most Popular” language consistently for the past 5 years and we at Facebook believe Rust is a standout language that shines and is widely used on critical issues like storage security, performance and reliability by projects here. We joined the Rust Foundation to help improve and grow Rust, which not only strengthens our commitment to the Rust language, but also to the sustainable development of open source technologies and developer communities around the world.
This blog is part of our Meet the Rustaceans series where we invite engineers and developers who use Rust regularly to share their experiences and tell us about the amazing products they are building with Rust here on Facebook. Keep an eye out for more interview blogs where we meet many more engineers and hear their thoughts on the subject.
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 the field of production technology on Facebook? Here you will find our job advertisements on our career page Production Technology.