← Все новости
[Перевод] Почему Bun на Rust собирается впятеро быстрее, чем на Zig, и при чём тут линкер

[Перевод] Почему Bun на Rust собирается впятеро быстрее, чем на Zig, и при чём тут линкер

После переезда Bun с Zig на Rust его CI-сборка под Linux, по данным команды, ускорилась с 30 минут до 5 с половиной. Инженер Perfetto Lalit Maganti засомневался, что дело в языке: по его опыту Zig обычно собирается быстрее Rust. Он повторил обе сборки, написал для этого трассировщик и увидел, что две трети времени старой сборки линкер в одиночку крутил Full LTO, причём заодно оптимизировал скачанный JavaScriptCore. После перевода на ThinLTO и пересборки WebKit сборка на Zig сократилась с 24 до 15 минут, а основную часть оставшегося разрыва автор относит к структуре: Rust-версия разбита на 90 с лишним крейтов и собирается параллельно, а Zig-версия шла одним модулем. Что из-за этого же медленна и линковка, он подозревает, но не доказал. Читать далее