[Перевод] Почему Bun на Rust собирается впятеро быстрее, чем на Zig, и при чём тут линкер
Habr ·
![[Перевод] Почему Bun на Rust собирается впятеро быстрее, чем на Zig, и при чём тут линкер](https://habrastorage.org/extt/98/c4/3d/98c43dde0d308e945d0d8ac54d529697.jpg)
После переезда Bun с Zig на Rust его CI-сборка под Linux, по данным команды, ускорилась с 30 минут до 5 с половиной. Инженер Perfetto Lalit Maganti засомневался, что дело в языке: по его опыту Zig обычно собирается быстрее Rust. Он повторил обе сборки, написал для этого трассировщик и увидел, что две трети времени старой сборки линкер в одиночку крутил Full LTO, причём заодно оптимизировал скачанный JavaScriptCore. После перевода на ThinLTO и пересборки WebKit сборка на Zig сократилась с 24 до 15 минут, а основную часть оставшегося разрыва автор относит к структуре: Rust-версия разбита на 90 с лишним крейтов и собирается параллельно, а Zig-версия шла одним модулем. Что из-за этого же медленна и линковка, он подозревает, но не доказал. Читать далее