Understanding the Rust Ecosystem
Last updated:
Rust, a systems-programming language, which prides itself on being Stack Overflow’s “most loved language for five years in row” and GitHub’s second fastest growing (235% 2018-2019) has gained popularity both at companies like Amazon, FB, Discord and externally within the programming community.
For part of my job, I have been focused on developing my own understanding of the space. I work within the DevTools pillar and focus primarily on programming languages. My main priority for H1 of 2020 has been Rust. The goal of this article is:
- To paint a high-level overview of the ecosystem
The article covers various aspects of the ecosystem including community, companies using the language, selling points, etc.
Overview
One of the hardest parts of understanding a programming language is setting the boundaries for what you encapsulate as part of and not part of the ecosystem. I gathered input coworkers and mentors in order to set the criteria for this project. For our purposes, I choose to limit it to the following areas, which you’ll see below. For each section, you can expect:
- A brief description of how I defined the section
- Key highlights from the ecosystem for that area of the ecosystem
Academic Research
Things that fall under this category might be research papers, academic presentations, and anything related. It was difficult to find much in this area, but here are a few highlights:
- Memory-Safety Challenge Considered Solved? An Empirical Study with All Rust CVEs
- What can the programming language Rust do for astrophysics?
- RustBelt: Securing the Foundations of the RustProgramming Language
- Rust-Like Borrowing with 2nd-Class Values (Short Paper)
- Safe Systems Programming in Rust:The Promise and the Challenge
- Fearless Concurrency? Understanding Concurrent Programming Safety in Real-World Rust Software
As you can tell from skimming the headings, researchers are looking at Rust’s use cases, security, memory management, type-safety and concurrency. It’s unfortunate there isn’t an easy way to stay on top of academic research within Rust.
Demographics
When you look at the programming language, how do you know who is using it? What industries do they work in? Fortunately, the Rust Survey 2019 Results provides insight related to demographics. Based on the results, here are the key highlights:
- Respondents’ top five languages: English, Chinese, German, French and Japanese
- Top five industries using Rust: Backend Web Applications, Distributed Systems, Embedded Devices, IT and Network Programming
- Top three titles for Rust users: Programmer/Software Engineer, Systems Architect, Web Developer/Front End Developer
It’s unfortunate that we do not have more information related to demographics such as gender, ethnicity, race, etc. There was an attempt to gather some of this information in the 2016 survey. Know that this section contains a small glimpse into the people of the Rust and is far from complete or representative of the ecosystem.
Community
Community itself is a huge category. I tried my best to break it into subcategories for things that might fit here.
In general, think of this area as the various places where members of the community congregate (online and in-person), groups who write code, and foundations. These are a combination of chat platforms, but also places where updates are shared with the community. Here are some worth noting:
- Chat Platforms
- Discord (35,597 members total)
- The Rust Programming Language (25,135 members)
- Rust Programming Language Community Server (10,462 members)
- Rust lang Slack (3,046 people)
- Rust Team Zulip (655 people) (mainly focused on people who work on Rust itself)
- Discord (35,597 members total)
- Conferences
- Core contributors
- Governance - all the different core team members associated with each team
- GitHub Rustlang org members
- GitHub committers - over 2k people have contributed to /rust repo
- Rust team alumni - people who worked on a Rust team previously
- Forums
- Users forum (14.2k)
- Internals forum (6.8k)
- r/rust -Reddit (100k people)
- Meetups
- Stats (meetups with the topic “rust”)
- 73,706 members
- 1,749 interested
- 204 Meetups
- 145 cities
- 42 countries
- Groups (not all listed, some highlights)
- Stats (meetups with the topic “rust”)
- Miscellaneous
- RFCs (2.9k stars) - where technical decisions are made in regards to Rust
- This Week in Rust - weekly newsletter
- Programs
- Rust’s Reach (currently on hold due to lack of funding and people) - “mentorship like program between participants from URGs and Rust team members”
- Rust Bridge (1 chapter) - “a workshop focused on getting underrepresented people with a background in another programming language to learn Rust and join the community.”
*These stats were taken on 5/19/2020
As you can see, the community category extends itself across many platforms and mediums online. It’s easy to overwhelm oneself with all the places you can go to get involved. The beautiful part is that there is no shortage of finding ways to meet others within the community.
*For the data in the “Meetups > Stats” category, you’ll notice that it includes some meetups that are not specifically for Rust so take that number with a grain of salt.
Companies
It would be impossible to list all the companies that use Rust. This is a sub-selection of notable companies (more well-known) that are using or investing in Rust, ideally along with articles where they share how they’re using it or helping the ecosystem:
- Amazon
- AWS is sponsoring the Rust programming language - AWS Open Source Blog (October 2019)
- “…AWS staff open-sourced a virtualization technology named Firecracker that was coded primarily in Rust” - zdnet.com article (October 2019)
- “_As Rust starts to take up a larger chunk of Amazon’s backend code, the company is making sure the project has the means to continue to evolve and fix security issues.” _-_ _zdnet.com article (October 2019)
- AWS sponsors RustConf - AWS Open Source Blog (2018 - 2020)
- Apple
- Rust for server-side Linux on Apple Cloud Traffic (March 2020)
- Atlassian (makers of Jira)
- Cloudflare
- Discord
- “Why Discord is switching from Go to Rust” - (February 2020) 11.9K claps
- “Using Rust to Scale Elixir for 11 Million Concurrent Users” - (May 2019) 6.4K claps
- Dropbox
- Dropbox is highlighted on the /production page of the rust-lang.org website - (currently - March 2020)
- Go-ing to Rust: Optimizing Storage at Dropbox - (November 2017)
- Dropbox is mentioned on official Rust lang blog - (May 2017)
- “The Epic Story of Dropbox’s Exodus From the Amazon Cloud Empire” - (March 2016)
- Facebook
- Developers have named Rust their most-loved programming language five years in a row. Here’s why developers at Facebook, Dropbox, and Amazon all adore it - (June 2020)
- The Relay Team is experimenting with a “rewrite of the Relay compiler in Rust” (May 2020)
- Mononoke, the new Mercurial backend, was written from scratch in Rust
- GitHub
- GitHub donating VMs for GitHub Actions (April 2020)
- Google
- Rust makes up increasingly large parts of Google’s Fuchsia operating system
- Chrome OS’s virtualization infrastructure and several other components are in Rust
- Android uses Rust
- Chromium is beginning to adopt Rust
- Google released an “unofficial” project called
[tarpc](https://github.com/google/tarpc)
“An RPC framework for Rust”
- Microsoft
- Microsoft featured on /sponsors page
- “Microsoft opens up Rust-inspired Project Verona programming language on GitHub” - (Jan 2020)
- “Microsoft looks to Rust language to beat memory vulnerabilities” - (Dec 2019)
- “Microsoft Exploring Rust as the Solution for Safe Software” - (Nov 2019)
- Azure Pipelines sponsoring Rust - (Oct 2019)
- Microsoft looking into Rust for security reasons. - (July 2019)
- “Microsoft eyes Mozilla’s Rust to obliterate C++ memory security flaws” - (July 2019)
- Azure IoT Edge has been using Rust since at least 2018
- Mozilla
- Rust is used in Firefox through a project called Oxidation
- Mozilla is writing a browser written in Rust called Servo
- “Rust 2018 is here… but what is it?” - (Dec 2018)
- “Mozilla binds Firefox’s fate to the Rust language” - (Feb 2017)
- “Project for porting C to Rust gains Mozilla’s backing” - (Oct 2016)
- npm
- Yelp
- Yelp is featured under the “Rust in production” section of rust-lang.org, they talk about how they use it in this talk - (Aug 2018)
- Honorable Mentions
- There is a list of production users on the rust-lang.org website
- “A Snapshot of Rust’s Popularity in July 2018”
- Nike using Rust
Language
Think core library, compiler, type system. Basically all the code that makes up the language and some of the tools that help with writing code in Rust.
- Books & References
- Asynchronous Programming In Rust Book
- Command Line Applications in Rust
- The Rust Programming Language Book
- The Cargo Book - info about the rust package manager
- The Rustonomicon Book - the dark arts of unsafe Rust
- The Rust Reference Book
- Rust Compiler Error Index - book on all the rust compiler errors
- rustdoc Book - all about rustdoc and writing documentation in Rust
- std - standard library docs
- Code & DevTools
- Cargo the package manager + build system
- Core language
- Rust-clippy - official linter
- Rustfmt - official formatter
- rustc - the Rust compiler (inside the core language)
Language Frameworks
What would a programming language be without frameworks? Thankfully, the community resource rust-web-framework-comparison made this research easy. Here is a long list:
- Client frameworks
- actix-web (homepage / repository / api docs)
- reqwest (- / repository / documentation)
- hyper (homepage / repository / documentation)
- jsonrpc (- / repository / documentation)
- Frontend frameworks (WASM)
- stdweb ( - / repository / documentation ) A standard library for the client-side Web
- yew ( homepage / repository / documentation ) - A frontend framework inspired by Elm and React (based on stdweb)
- percy ( homepage / repository / - ) - A modular toolkit for building isomorphic web apps
- seed ( homepage / repository / - ) - A Rust framework for creating web apps
- draco ( - / repository / documentation ) - A frontend framework inspired by Redux and Elm
- smithy (homepage - / repository / - documentation ) - A front-end framework
- squark ( - / repository / documentation ) - Rust frontend framework, for web browser and more.
- willow ( homepage - / repository / - ) - A frontend framework inspired by Elm
- dodrio ( - / repository / documentation ) - A fast, bump-allocated virtual DOM library.
- dominator ( - / repository / documentation - Zero cost declarative DOM library using FRP signals for Rust!.
- mika ( homepage / repository / - ) - A signal-based framework for building front-end app, it tries to help, but may cause annoyances.
- Server frameworks
- actix-web (homepage / repository / documentation / user guide)
- gotham (homepage / repository / documentation / examples)
- iron (homepage / repository / documentation)
- nickel (homepage / repository / documentation)
- rocket (homepage / repository / documentation)
- rouille ( - / repository / documentation)
- Thruster ( - / repository / documentation / examples)
- Tide ( - / repository / documentation / examples)
- tower-web ( - / repository / documentation / examples)
- warp ( - / repository / documentation / examples)
- Static site generators
- zola (homepage / repository / documentation)
- Templating frameworks
- tera (homepage / repository / documentation)
- mustache (- / repository / documentation)
- liquid (- / repository / - )
- handlebars (- / repository / documentation)
- horrorshow (- / repository / documentation)
- maud (homepage / repository / documentation)
- askama (- / repository / documentation )
- stpl (- / repository / - )
- ructe (- / repository / documentation )
- typed-html (- / repository / documentation )
- Websocket frameworks
- websocket (homepage / repository / documentation)
- ws-rs (homepage / repository / documentation)
- tungstenite ( - / repository / documentation)
- actix-web (homepage / repository / documentation)
Again, this is a bit overwhelming for a new person learning Rust. It’s difficult to know what to choose. However, it’s also a benefit having the ability to try out various solutions and see what works best.
Learning
Similar to the Community category, learning can be quite difficult to narrow down. I have tried my best to highlight the main areas and a few examples for each category. Know that this list is non-exhaustive and more a brief survey into this area of the ecosystem.
- Articles
- A collection of notable Rust bloggers
- Each week, This Week in Rust shares articles
- Fearless Rust Bloggers
- Learning Rust - Pascal Precht
- Read Rust - Rust blog post aggregator
- Writing an OS in Rust
- Books
- Bootcamps
- No response on Rust users forum
- No response on Twitter
- NobleProg Rust microcourse
- Classes (specifically academic, in universities)
- Tutorials
- Rustlings - Small exercises to get you used to reading and writing Rust code
- rust-learning - detailed list of awesome learning materials
- Tour of Rust - Step by step guide through the features of the Rust programming language
- Courses
- Intro to Rust - YouTube
- Rust Crash Course - YouTube
- Rust Projects - YouTube
- The Rust Programming Language - Udemy
- Using Web Assembly with Rust - egghead
- Write your First Program with Rust - egghead
- Videos
- Learning Rust - two people pair-programming and going chapter by chapter through the Rust Lang Book
- Into_rust - screencast series
- Workshops
- Ferrous Systems - paid workshops for companies and teams
- RustBridge - an organization that is part of the official Rust group.
- Systems Programming with Rust (at a conference)
Packages
One of the most important aspects of a programming language ecosystem is a way to share code with others. In the Rust ecosystem, the most common way is through packages, more commonly referred to as “crates”. Below are links to two places where you can share code (your own private registry or the public one):
- Cloudsmith - create your own private cargo registry
- crates.io - “The Rust community’s crate registry”
- libs.rs - “Fast, lightweight, opinionated, unofficial alternative to crates.io”
Platforms
The objective for this section was to figure out where Rust code can run. What platforms or systems are people targeting or building for? We saw a few of these mentioned in the Frameworks section. Here are the most common ones I could find (and some examples):
- Browser
- WebAssembly
- Wasm-bindgem
- Rust to WASM + Next
- CLI Apps
- clap
- Build binaries for Linux, macOS and Windows
- Embedded Devices
- Operating System
- Mobile Apps
- Server
- Anywhere?
Selling Points
Everyone will have their favorite reasons for using one language over another. I tried to select articles related to the selling points, but also highlight features of the language brought up by people who advocate for it.
- Articles
- Features
- Borrow checker (“Rust has a static garbage collector”)
- Community
- Ownership model
- Package manager
- Performance
- Productivity
- Excellent documentation
- Built-in tools (cargo, fmt, clippy)
- Smart memory-management
- Type system
- Other
- Used by big companies (talk about Facebook, Microsoft, Amazon, etc.)
*Note: this section also piggybacks off the Use Cases section (coming up).
Beyond this, I would encourage you to read the results from the Rust 2019 survey which asked “Why not use Rust”. Not all points relate to selling points, but it may provide insight into what would sell people on using Rust if these things were fixed.
Tools
The tools used for writing and using the programming language is an aspect we sometimes forget. This affects the developer experience and can drive or hinder the ecosystem. Here are some highlights:
- Benchmarking
- criterion - Statistics-driven Microbenchmarking
- Built-in testing support
- Cargo
- IDE support
- https://www.rust-lang.org/tools
- Hover over documentation in editor
- Rust Playground - test code online, share with others
Use Cases
Deriving some of the tops results from the Rust Survey 2019, here are the main industries/applications that responded in the survey and are using Rust:
- Top 10 from survey
- Backend Web Applications
- Distributed Systems
- Embedded Devices
- Enterprise Software
- Frontend Web Applications
- Internet of Things
- IT
- Network Programming
- Security
- Technology
- Other
- Blockchain (Libra Move) Solana
- Deno - uses JavaScript engine written in Rust
Summary
Reflecting on what we have covered thus far, we can see that the Rust ecosystem is well-developed and growing. This is not a conclusive/comprehensive list of the ecosystem or the companies using it. From my knowledge, Rust is used at big companies such as Amazon, Apple, Microsoft and Google. They are all investing in the language. We’ve covered the ecosystem from a bird’s-eye view as we see it today. Here are the main things to walk away with:
- Overview
- The community is ubiquitous both online and in-person
- There is no shortage of books or references to read from the official Rust groups
- Rust can be used for writing web, mobile, and CLI apps, servers embedded devices, and OS’s
- Rust is fast, well-documented, type-safe, manages memory efficiently, but has a steep learning curve
What’s next?
We plan to use this information when making decisions and building strategies for us to get involved with the Rust ecosystem. If you’d like to collaborate with us, please reach out to me over DMs on Twitter! We would love to work with you. Thank you for reading!
Thank you
To close out, I’d like to give thanks to the following people for their contributions and feedback. I appreciate all of you!
- David Tolnay
- Pedro Rittner
- Jk Jensen
- Joe Savona
- Nell Shamrell-Harrington
- Lauren Tan
- Kathy Kam
- Cami Williams
- Joel Marcey