We were delighted to attend and sponsor the first annual RustConf in Portland, OR on September 10th. Friday before the conference, we held a Habitat Meetup where we talked about the technical details of Habitat development. It was fun meeting and talking with fellow Rustaceans for two days.
Habitat is our largest Rust-based project at Chef, comprising almost 30,000 lines of Rust code. We started work in the fall of 2015, and from the outset the Rust principles of abstraction without overhead, memory safety without garbage collection, and concurrency without data races were important for us in building a next-generation, high-performance and reliable application automation solution.
During our v1 development process, we learned a lot about Rust and how to use it effectively, as the language and the Habitat code-base evolved in tandem. Everyone on the Habitat team was writing production Rust code for the first time, so the learning curve was definitely steep.
The initial hurdles were the same as many Rust developer goes through – learning how to deal with ownership, scopes, and lifetimes. The proper use of traits, especially effective use of the built-in traits such as Send and Sync for concurrency, and using the From trait to convert error types were all key learnings.
At RustConf, we saw a great set of training sessions, lineup of speakers and topics (Better unions! Improved RFC process! Performant async I/O! and lots more). We came away excited about what the future of Rust holds for us, as well as the broader Rust community.
From the opening keynote (which highlighted a lot of the great things that have happened in the Rust community and it’s plans for the future) to the closing keynote (which was a relatable and inspiring story of deepening one’s skills in systems programming), one theme that stood out was “while it may not be obvious, it’s not impossible – just keep digging”. This is an attitude that will serve us well as we expand our use of Rust.