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.
Выпуск Rust 1.38.0: конвейерная компиляция, #[deprecated] для макросов и std::any::type_name