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.
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.
We chose Rust because it combines a large number of desirable properties:
Some of the projects I have worked on that use Rust include:
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.
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.
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.
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!
This is very hard to answer because Rust is an incredibly well designed language. I think my favorite part is its type system, because:
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
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.
Interested in working in Production Engineering at Facebook? Check out our job postings on our Production Engineering career page here.