Agreed! …but while we’re at it curly gang all day
Thank you for actually suggesting something! Many people say “this is unidiomatic/slow/unoptimal” but nobody is giving specifics. Thanks :) btw the author is looking to improve the Rust version and is accepting…
> If I made the C++ code use a custom vector and the Rust code use the standard vector, then people would complain that the Rust code was artificially shorter. People would also complain that even though you claim “my…
The author said he liked Rust and will switch to Rust if/when it builds faster than C++. So for the author at least, his answer is Rust!
Do they compile fast? If not, why not just use Rust? The author said he’ll switch to Rust when the compilation speed improves
I know the article is really detailed, and I don’t remember a lot of it either! But he does specifically break down how much of compilation time is spent in the borrow checker, LLVM, macro expansion, etc.
Martin?
I think you two are talking past each other. He’s talking about hypotheticals, and you’re talking about what’s more common
“opt-in” in the sense that I could just multiple versions of my functions if I want to? Agreed!
TIL. Thanks! In my plebeian brain I just thought “monomorphization = static dispatch” / 0-cost abstraction (vs. just writing multiple versions of a function), which both Rust generics and C++ templates fall into. Now I…
cool! Does quick-lint use this pattern? https://github.com/quick-lint/cpp-vs-rust
Something to stress is that the article is not just about compile times. It’s about compile+test times. If Chrome were written in Python it’d be hella slower iteration times
I think it depends on the kinds of projects you’re working on, and your developer workflow. For small→medium projects I agree that Rust compile times are fine
The article breaks down how much time is spent by each part of the compiler (borrow checking, LLVM, macro expansion, etc.) check it out!
#itdepends on the kind of software you’re making
And all of them combined compile faster than either of these implementations!
The specific time borrow check takes is in the article. Check out the section on “ Cranelift backend”
No need to speculate These timings are all in the paper! Check the “Cranelift backend” section
They should rewrite it in Rust
> maybe a more fair comparison wouldn't involve polymorphism in the rust code? I think using features of the language is fair game btw, don't C++ templates also use monomorphization? I agree C++'s implementation is…
or just https://smmry.com/https://quick-lint-js.com/blog/cpp-vs-rust... like I did
What about the other way around? Trying to cripple rustc until its features are closer to clang's? For example, removing some of the sanitizers or borrow checker in rustc?
Thank you for finally talking about this! I appreciate it, thanks
I’d be down for a spot between Menlo Park and SJ. Don’t really wanna go all the way to SF
Agreed! …but while we’re at it curly gang all day
Thank you for actually suggesting something! Many people say “this is unidiomatic/slow/unoptimal” but nobody is giving specifics. Thanks :) btw the author is looking to improve the Rust version and is accepting…
> If I made the C++ code use a custom vector and the Rust code use the standard vector, then people would complain that the Rust code was artificially shorter. People would also complain that even though you claim “my…
The author said he liked Rust and will switch to Rust if/when it builds faster than C++. So for the author at least, his answer is Rust!
Do they compile fast? If not, why not just use Rust? The author said he’ll switch to Rust when the compilation speed improves
I know the article is really detailed, and I don’t remember a lot of it either! But he does specifically break down how much of compilation time is spent in the borrow checker, LLVM, macro expansion, etc.
Martin?
I think you two are talking past each other. He’s talking about hypotheticals, and you’re talking about what’s more common
“opt-in” in the sense that I could just multiple versions of my functions if I want to? Agreed!
TIL. Thanks! In my plebeian brain I just thought “monomorphization = static dispatch” / 0-cost abstraction (vs. just writing multiple versions of a function), which both Rust generics and C++ templates fall into. Now I…
cool! Does quick-lint use this pattern? https://github.com/quick-lint/cpp-vs-rust
Something to stress is that the article is not just about compile times. It’s about compile+test times. If Chrome were written in Python it’d be hella slower iteration times
I think it depends on the kinds of projects you’re working on, and your developer workflow. For small→medium projects I agree that Rust compile times are fine
The article breaks down how much time is spent by each part of the compiler (borrow checking, LLVM, macro expansion, etc.) check it out!
#itdepends on the kind of software you’re making
And all of them combined compile faster than either of these implementations!
The specific time borrow check takes is in the article. Check out the section on “ Cranelift backend”
No need to speculate These timings are all in the paper! Check the “Cranelift backend” section
They should rewrite it in Rust
> maybe a more fair comparison wouldn't involve polymorphism in the rust code? I think using features of the language is fair game btw, don't C++ templates also use monomorphization? I agree C++'s implementation is…
or just https://smmry.com/https://quick-lint-js.com/blog/cpp-vs-rust... like I did
What about the other way around? Trying to cripple rustc until its features are closer to clang's? For example, removing some of the sanitizers or borrow checker in rustc?
Thank you for finally talking about this! I appreciate it, thanks
I’d be down for a spot between Menlo Park and SJ. Don’t really wanna go all the way to SF