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:

To summarize this article:

Getting a project featured in 24 days of Rust is left as an exercise for the reader.

Further reading