Our great sponsors
-
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.
-
rpp-backup
This repo is for Red++ v3, which is the latest playable version. The repo for v4 is not in a playable state at the moment, but dev will be resuming soon.
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
There is also the mrustc (https://github.com/thepowersgang/mrustc) project that can be used for bootstrapping. It compiles/transpiles Rust into C that can be compiled using something like Clang or GCC.
Rust wasn't really aiming for a simple bootstrap path. I wanted to understand (and have the option to control) a lot of things I wasn't entirely sure about in the lowest levels of existing systems languages; so while I did start with an interpreter I quickly gave up and switched to the exact opposite: a very "bottom-up" compiler starting from a minimal backend that actually emitted binary object files. This had no asssembler or linker, just wrote individual bytes of ELF, PE and MachO files from an OCaml program. Then I wrote a little miniature linear IR and instruction selector and register allocator, and finally wrote a little lowering pass to hook that backend up to the residual parser I had from the interpreter. It is .. certainly fairly involved to take this path, but actually less hard than it sounds! And it's very educational (and if you're like me, you may also find it fun!)
Rust currently has one fully working compiler, rustc. There's a project to add a Rust frontend to GCC, which would make GCC able to compile Rust. That is written in C and C++, not Rust. C++ was bootstrapped from C, and C was bootstrapped from B, which was bootstrapped from GE 635 assembly.
My big issue with Haskell is that, in practice, I find a willingness to iterate on the superset of the language people actually write in a backwards-incompatible way to be a bigger problem than only having a single implementation of a language that cares about stability so much that they have the Stability Promise and Crater.
For something more hardware interfacey, this reads well: https://github.com/JustRegularLuna/rpp-backup/blob/master/audio/engine_3.asm