dollar
@dollar
Делай добро и бросай его в воду.

Почему минимальный размер приложения такой большой?

Пытаюсь скомпилировать "пустышку":
fn main() {
}

В итоге получается приложение 127 килобайт.

Я понимаю, если бы я использовал функцию, которая в какой-то библиотеке, и Rust включил бы полностью эту библиотеку в exe'шник. Хотя это тоже печально бы выглядело. Но ведь здесь вообще нет вызовов! Что же там такого содержится ценного в файле, без чего не обойтись?

Здесь не должно быть ни сборщика мусора, ни виртуальной машины, ничего такого.
  • Вопрос задан
  • 763 просмотра
Решения вопроса 1
Tyranron
@Tyranron
Избитая тема, которая уже подымалась и изучалась не один раз. Достаточно сделать: https://www.google.com/search?q=rust+binary+size и сразу попадаем на статью Rustlog: Why is a Rust executable large?. Настоятельно рекомендую к прочтению, хоть она и слегка устарела (Rust больше не использует jemalloc по умолчанию), но вопрос там разобран крайне детально.

Если коротко, то в Ваш бинарь попадают:
1. Если собирали не в release mode, то debug-символы.
2. Аллокатор, либо код-клей для системного аллокатора.
3. Код для panic unwinding (в том числе и libbacktrace).
4. Части libstd Rust'а, даже если Вы их не используете.

Если стоит задача минимизировать бинарь Rust (под всякий embedded, к примеру), то обычно делают #![no_std], юзают мини-аллокаторы, делают panic = abort и идут на другие лишения.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@grinat
В гоу по моему 2мб мин размер, в приложении скомпилированном андроид студией, где размер таки важен, минимум 3.7мб выходит. Так шо 120кб в наши времена это хороший результат для хело ворда.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы