Like Rust in the wind

I’ve been giving a serious look at Rust during this 6 months, but I haven’t written anything about it, time has come to correct that.

What’s Rust?

Rust is a system level language developed primarily by the Mozilla fundation. Right now it looks like one of the candidates to be the C++ successor.

The other contender for many people would be Go, but using Go in embedded (as in bare metal embedded) doesn’t seem as well supported.

Why Rust?

There’s a long, unsuccesful history of programmers trying to convince others to use C++ on embedded devices. The main problem is how bad supported is for most platforms, specially low level devices, although there might be some psycological resistance to the idea of that kind of change, specially in an space were most people started working in assembler.

Why then try to switch to Rust? Because Rust brings stuff that C/C++ can’t compete with. Rust has powerful tools to avoid some of the most devastating and sneaky bugs that you’ll find in typical embedded development, and the open question is how much of its features can be ported to the smallest of processors to avoid the great evil in firmware development, shared mutable state.

What will I do?

I’ve adquired a STM32F7508-DK, a development board that packs a nice punch, and I’ll try to make it work with Rust. No previous support exists for this microcontroller or this board in particular (although there’s quite the infrastructure for it in the stm32rs repository). The point of this is to try to see if a Rust ‘amateur’ like me is able to pull this off, and how hard it will be.