The "bootstrapable.org" project that OP refers to is an interesting practical result from the infamous "Reflections on Trusting Trust."[1] If you have the source compiler, which is itself bootstrapped from source, then you effectively sidestep the problem brought up in the paper -- someone sneaks in a boobytrapped compiler somewhere in the process resulting in a chain of tainted compilers.<p>This is the kind of work that seems pretty thankless, but I'm glad someone is doing it.<p>[1] <a href="https://www.archive.ece.cmu.edu/~ganger/712.fall02/papers/p761-thompson.pdf" rel="nofollow">https://www.archive.ece.cmu.edu/~ganger/712.fall02/papers/p7...</a>
> There are plans to extend mrustc to support newer Rust, but it turned out to be difficult.<p>Was some feature added to rust 1.20.0 that was particularly difficult to implement? Or is this just a 'have to stop somewhere' situation.
<a href="https://dwheeler.com/trusting-trust/" rel="nofollow">https://dwheeler.com/trusting-trust/</a> is the page on Diverse Double-Compiling as a counter to the trusting trust attack
So bootstrap chain here is g++->mrustc->several iterations of rust. (Rather than original bootstrap chain via ocaml.)<p>Bootstrap for g++ is presumably something like machine code->asm->c->g++.<p>And the overall goal is something like shortening or simplifying the chain from machine code to rust compiler.<p>Ideally I suppose this would be something like machine code->proto rust->rust compiler.<p>Haskell seems to have a relatively good pipeline, with clean division between core and non-core.<p><a href="https://ghc.haskell.org/trac/ghc/wiki/Commentary" rel="nofollow">https://ghc.haskell.org/trac/ghc/wiki/Commentary</a>
writing mrustc in C++ seems like such a mistake.<p>It compiles rust to C, so why not write it in rust? then compile itself to C.<p>Another idea, just compile rustc to web assembly then use <a href="https://github.com/WebAssembly/wabt/tree/master/wasm2c" rel="nofollow">https://github.com/WebAssembly/wabt/tree/master/wasm2c</a> to convert it to your bootstrap source.