There's an issue open for incremental compilation:
https://github.com/mozilla/rust/issues/2369

On Sat, Aug 24, 2013 at 6:45 AM, Matthieu Monrocq
<[email protected]> wrote:
> Most C/C++ projects require parallel make because they lack modules. I work
> on medium-large projects in C++, for which we use Boost as well as about a
> hundred custom middleware components. A "simple" source file of ~1000 lines
> ends up generating a preprocessed file in the order of between 100,000 lines
> and 1,000,000 lines. Each and every TU. This is what makes them so amenable
> to parallelization.
>
> On the other hand, for languages with modules, a ~1000 lines file is a ~1000
> lines file; it may depend on ~50 various other modules, but those need not
> be reparsed each time (a serialized version of the produced AST/ABT can be
> generated once and for all) and they can also be cached by the compiler
> (which unlike typical C compilers processes several modules in one pass).
>
> As such, there is much less gain here.
>
> On the other hand, I do agree with your command, it could possibly be better
> (temporarily) to run LLVM to cleanup each and every module before combining
> them into a single crate for optimization; however I feel that in the long
> term this will be useless once codegen itself is reviewed so that first and
> foremost a leaner IR is emitted that do not require so much cleanup to start
> with.
>
> -- Matthieu
>
>
>
> On Fri, Aug 23, 2013 at 10:16 PM, Bill Myers <[email protected]> wrote:
>>
>> > - We essentially always do whole-program / link-time optimization
>> > in C++ terminology. That is, we run a whole crate through LLVM at
>> > once. Which _would_ be ok (I think!) if we weren't generating
>> > quite so much code. It is an AOT/runtime trade but one we
>> > consciously designed-in to the language.
>>
>> > time: 33.939 s LLVM passes
>>
>> Maybe this should be changed to optionally do codegen and LLVM passes in
>> parallel, producing an LLVM or native module for each Rust file, and then
>> linking the modules together into the compiled crate.
>>
>> Alternatively, there seems to be some work on running LLVM FunctionPasses
>> in parallel at
>> http://llvm.1065342.n5.nabble.com/LLVM-Dev-Discussion-Function-based-parallel-LLVM-backend-code-generation-td59384.html
>> but it doesn't seem production-ready.
>>
>> Most large C/C++ projects rely on parallel make and distcc to have
>> reasonable build times, and it seems something that Rust needs to support
>> (either via make/distcc or internally) to be a viable replacement for large
>> projects.
>>
>>
>> _______________________________________________
>> Rust-dev mailing list
>> [email protected]
>> https://mail.mozilla.org/listinfo/rust-dev
>>
>
>
> _______________________________________________
> Rust-dev mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/rust-dev
>
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to