-
TinyGo
Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
Rust hits a nice sweet spot by allowing you to write almost any multithreading pattern you may need, but statically ensuring that you don't break any of the multithreading rules, and it would be my choice for such a large task. The tradeoff here is that the language itself is more complicated; it's hard to imagine how Rust could run in the 1990s, because even if you teleported the entire source code back in time the computers would be essentially incapable of running it. But this safety does mean you can build complicated multithreaded systems like Servo without it becoming a nightmare. I think that Servo may well be impossible in any other language. I certainly wouldn't dream of taking it on with Go.
Have you seen TinyGo? In the case of embedded system I would probably still chose C over Rust if the system didn't support dynamic memory allocation, and most embedded systems do not.