Pull to refresh

Comments 3

Можно поподробнее, что такое "конвейерная компиляция"?

Компилятору нужны не полностью собранные зависимости для сборки пакета, а лишь их "метаданные" (список типов, зависимостей, экспортов и т.д.), генерируемые на ранней стадии компиляции. Начиная с Rust 1.38.0, Cargo будет сразу же начинать сборку зависимых пакетов, как только их метаданные будут доступны.

Т.е. сборка пакетов с зависимостями будет начинаться до того, как все их зависмости будут собраны до конца. При большом количестве рекурсивных зависимостей это может заметно ускорять сборку.


With ASCII diagrams, let’s say we have a binary which depends on libB which in turn depends on libA. A compilation today might look like this:
         meta                meta
[-libA----|--------][-libB----|--------][-binary-----------]
0s        5s       10s       15s       20s                30s


With pipelined compilation, however, we can transform this to:
[-libA----|--------]
          [-libB----|--------]
                             [-binary-----------]
0s        5s       10s       15s                25s

(из IRLO темы)

Ок, теперь понял. Спасибо)

Sign up to leave a comment.

Articles