by obl on 4/21/20, 1:39 PM with 218 comments
by pizlonator on 4/21/20, 1:56 PM
I particularly suspect that if something like Cranelift gets evolved more then it will eventually reach throughput parity with llvm, likely without actually implementing all of the optimizations that llvm has. It shouldn’t be assumed that just because llvm has an optimization that this optimization is profitable anywhere but llvm or at all.
Final thought, someone should try this with B3. https://webkit.org/docs/b3/
by dwheeler on 4/21/20, 6:34 PM
For example, if you're worried that one of the compilers might be malicious, you can use the other compiler to check on it: https://dwheeler.com/trusting-trust
Even if you're not worried about malicious compilers, you can generate code, compiled it against multiple compilers, and sending inputs and see when they differ in the outputs. This has been used as a fuzzing technique to detect subtle errors in compilers.
by liquidify on 4/21/20, 2:20 PM
Is this guy human? This is amazing, and this guy should be given an award.
by WalterBright on 4/21/20, 9:11 PM
It's great to have all three, as they each have different characteristics in terms of speed, generated code, debug support, platform support, etc. Supporting these three also helps maintain proper semantic separation of code gen from front end.
by korpiq on 4/21/20, 2:33 PM
I find Rust (the spec, though also the implemenration) quite safe and practical (a balance). It deserves some independent implementations to secure a long and stable future.
On the other hand, I want to use it on non-ARM embedded platforms, where current cross-compilation through C produces unusably big binaries. I dream this might increase hope for that, too, eventually.
by andrewprock on 4/21/20, 5:38 PM
“Compiling development builds at least as fast as Go would be table stakes for us to consider Rust“
Go was designed from the ground up to have super fast compile times. In fact, there are some significant language issues related to that design decision.
Using one of the primary design goals that impacted language structure as "table stakes" is almost certainly going require a lot of effort with some serious unintended consequences.
Improving compilation times sounds good. Aiming high is good. But reaching "best of breed performance" is major initiative.
by Waterluvian on 4/21/20, 4:38 PM
by gok on 4/21/20, 3:30 PM
by Koshkin on 4/21/20, 2:12 PM
by jlebar on 4/21/20, 2:47 PM
by crad on 4/21/20, 2:18 PM
by mttyng on 4/21/20, 3:06 PM
by tyrion on 4/21/20, 3:50 PM
It would greatly improve the reading experience of your blog if you could make clickable the footnotes/references.
For example when you say:
> I’ve taken the chart from the 2016 MIR blog post[3]
I have to scroll to the end of the page to find the blog post (and then scroll back to resume reading). If [3] were clickable it would be great. It would be even better if [MIR blog post] were an actual link itself.
by tester3 on 4/22/20, 12:09 PM
e.g LLVM output is A, but the new one is B, how do they deal with different results between backends?
by Myrmornis on 4/21/20, 7:25 PM
On a small project, personally I use --release sometimes during development because the compile time doesn't matter that much and the resulting executable is much faster: if I don't use --release I can get a misleading sense of UX during development.
by amelius on 4/21/20, 2:01 PM
by stackzero on 4/22/20, 12:35 AM
by brokenbotnet on 4/22/20, 11:09 AM