Day 23 - built with Rust
Today's article is another throwback to the first edition of 24 days of Rust. In one of the final posts I wrote about interesting projects built with Rust. That was even before the language hit version 1.0. Two years later and we're at 1.14. Servo, iota and coreutils are still going strong. It's surely worth checking them out again, but I'm going to introduce a few more Rust projects that emerged during the last two years.
Redox
How about starting with an entire operating system written in Rust? Because this is what Redox is about. It consists of:
- a Unix-like microkernel
- file system (RedoxFS)
- userspace drivers
- networking
- GUI (Orbital)
- and more...
All built with Rust, free and open source! An impressive achievement for sure. While I wouldn't replace my Linux installs with Redox just yet, there are .iso releases already. It should work in QEMU or VirtualBox.
Project website: https://www.redox-os.org/
ripgrep
Andrew Gallant, aka burntsushi
, is a
prolific contributor to the Rust library ecosystem. Regexes, CSV,
byte ordering, docopt, property-based testing - Andrew's your man.
This time he took a stab at filesystem search, with an impressive outcome.
ripgrep
is a CLI search tool
that aims to surpass grep
, ack
, ag
and others in both usability and
performance. In the aptly titled introductory blog post -
ripgrep is faster than {grep, ag, git grep, ucg, pt, sift} -
Andrew explains his motivation and presents performance benchmarks.
TL;DR - ripgrep
is fast. Try it out!
Project website: https://github.com/BurntSushi/ripgrep
panopticon
I learned about panopticon at RustFest EU 2016. It's a GUI disassembler (for x86, AMD64, AVR and 6502) that aims to be a free, easy to use and powerful alternative to proprietary tools such as IDA. Panopticon was rewritten from C++ to Rust and the author expresses his joy in a reddit thread:
Programming in Rust is not only more fun, it's definitely easier too. Panopticon used alot sum types that were implemented using boost::variant. Like everything with Boost it kind of worked but was incredible ugly and complex. Replacing them with enums was probably the biggest reason I switched to Rust. Also I found iterator invalidation bugs simply by translating C++ to Rust, thanks Borrow Checker!
Project website: https://panopticon.re/
Mozilla Firefox
Well, this may be a little stretch ;-) But just a little. Firefox itself wasn't suddenly rewritten in its entirety from C++ to Rust. However, there are already some parts of the browser built with Rust. Stylo is an upcoming bridge between Firefox and Servo's CSS engine. And with Project Quantum even more good stuff is coming!
Now it's your turn!
I'd love to see you building awesome Rust projects! Pick a problem that you'd like to solve and try doing that with Rust. It doesn't have to be an entire new operating system (that was a hell of an itch to scratch, Redox folks, right?).
Here are some inspirations:
- Awesome Rust - a collection of programs, libraries and resources
- Contributing to Rust — libraries
- Are we Web yet? - some areas aren't as green as I'd like them to be
- A list of practical projects that anyone can solve in any programming language
- Where do you get ideas to build side-projects? - a Hacker News discussion
To summarize this article:
Getting a project featured in 24 days of Rust is left as an exercise for the reader.
Further reading
- Awesome Rust - includes applications written in Rust
- Friends of Rust - Organizations running Rust in production
- ripgrep code review
- Quantum at Mozilla Wiki