Just going to throw this out there since I’m a huge fan and both LLVM and Rust just got support for it: RISC-V
Why? Because I think, as much as an instruction set architecture and a programming language are capable of doing so, they share a lot of the same design criteria, philosophy, and goals.
First of all, RISC-V is a free and open source instruction set architecture with open source core designs. It’s overseen by the RISC-V foundation, whose role is rather like the Mozilla Foundation’s relationship with Rust: provide coordination and infrastructure for the project, but strongly encourage outside collaboration and ensure the project is a community effort. RISC-V is very much intended to be a research and experimentation platform, where many people can try different approaches and the community moves on with the ones that work the best in a collaborative, open-source manner.
Second, both are something of hypermodern projects, incorporating tons of hard-won knowledge about the problems of previous systems, and aiming to solve them strategically through better design.
Beyond that, here is how RISC-V matches up with Rust’s “safe, concurrent, practical” credo:
Safe: the RISC-V architecture was developed from the ground-up with a security-oriented mindset, and includes numerous and uncommon safety features including an every-word-tagged memory architecture and cores where control and data circuits are physically isolated from each other. The RISC-V foundation also announced that all existing RISC-V cores are NOT vulnerable to Meltdown/Spectre-style attacks (more on that below)
Concurrent: RISC-V cores are amenable to massive parallelism. For example, a company named Esperanto just announced a massively parallel RISC-V CPU, consisting of 4096 ET-Minion “puny” cores and 16 more powerful ET-Maxion cores to drive them, while letting you target all of them with a single ISA. RISC-V is also a great testbed for research into new strategies for inter-core connectivity, such as a Labeled von Neumann Architecture which treats the CPU more like a traditional packet network and applies MPLS-style labels to messages flowing between cores, providing both efficient inter-core message routing and quality-of-service guarantees which prevent a single core from monopolizing CPU resources.
Practical: the modest goal of the RISC-V project is world domination. It aims to be the one true ISA, usable for everything from microcontrollers to, at least hypothetically, complex server-class CPUs ala Xeon, POWER, or SPARC.
Regarding Meltdown/Spectre, the RISC-V foundation just made an announcement about it, highlighting that no extant RISC-V cores are vulnerable (due to lack of speculative execution features):
Research into adding speculative execution features to RISC-V is just now starting, with an announcement last month of the taping out of the first out-of-order silicon RISC-V chip. For RISC-V, the announcement of Meltdown/Spectre is almost perfectly timed, as they are greenfielding speculative execution right now with zero legacy, 20/20 hindsight, and an extremely solid foundation upon which they can build things like capability-based access controls for things like caches and system memory which could physically prevent speculation units from accessing anything outside the current protection domain at the circuit level. The RISC-V foundation had this to say:
The RISC-V community has an historic opportunity to “do security right” from the get-go with the benefit of up-to-date knowledge. In particular, the open RISC-V ISA makes it possible for many different groups to experiment with alternative mitigation techniques and share results. The RISC-V Foundation was formed with an open and inclusive governance model to allow for contributions from leading experts across academia and industry.
If this all sounds exciting to you, and you’d like to play around with Rust and RISC-V, support has just recently landed:
The HiFive1 is a relatively cheap ($60) hobbyist board in an Arduino form factor, and a Rust library is available to access it peripherals if you’d like to play around with things like blinking LEDs or other Arduino-style projects.