LINUX.ORG.RU

Building Tiny Rust Binaries for Embedded Linux

 ,


3

4

Сабж.

TL;DR: растоман последовательно уменьшает размер собираемого бинарника на примере хеллоуворлда с ~6 Мб до ~200 кб, используя ряд тонких настроек Cargo и LLVM, а также прибегая к помощи Xargo и upx.

★★★★★

Последнее исправление: Virtuos86 (всего исправлений: 1)

Они всё ещё не научились в разделяемые библиотеки?

размер собираемого бинарника

upx

Да когда же они все поймут, что место в оперативке ценнее места на диске. (Если ты сжал 6 MiB до 200 KiB на диске, но в оперативке это всё равно 6 MiB, то грош цена такому сжатию.)

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Они всё ещё не научились в разделяемые библиотеки?

Всегда умело. Только смысл от этого, если дин. либы всё равно придётся с собой тягать?

RazrFalcon ★★★★★
()

Хорошая шутка 👍🏼

fornlr ★★★★★
()
Ответ на: комментарий от RazrFalcon

Всегда умело.

За семью гейтами, с большими красными надписями «DEPRECATED», «OBSOLETE» и «UNSUPPORTED»?

Только смысл от этого, если дин. либы всё равно придётся с собой тягать?

Например, в том, что их можно не «с собой тягать», а поставить в систему один раз? Особенно если «их» — это общий языковой рантайм и больше ничего, судя по тому, что речь про хелловорлд?

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 3)
Ответ на: комментарий от intelfx

Если ты сжал 6 MiB до 200 KiB на диске, но в оперативке это всё равно 1,5 MiB

И да, твоя трушность зашкаливает. Сходи по ссылке, внизу поста табличка с итоговыми результатами.

Virtuos86 ★★★★★
() автор топика
Последнее исправление: Virtuos86 (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

Это я должен спрашивать, кто будет обновлять все 100500 статически слинкованных потенциально проприетарных говн, когда обновится рантайм или ещё какая-нибудь фундаментальная опенсорсная зависимость.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Они всё ещё не научились в разделяемые библиотеки?

Всегда умело.

За семью гейтами, с большими красными надписями «DEPRECATED», «OBSOLETE» и «UNSUPPORTED»

Нет, совершенно штатно. Но, поскольку официального ABI нет, то и большого смысла в динамической линковке нет.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

upx - это читинг

яволь, мой капитан

Virtuos86 ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

<...> кто будет обновлять все 100500 статически слинкованных потенциально проприетарных говн, когда обновится рантайм или ещё какая-нибудь фундаментальная опенсорсная зависимость?

ПМ?

А хлеб у тебя на деревьях растёт, ага.

Вот как раз динамически слинкованный рантайм будет обновлять ПМ. А 100500 статически слинкованных проприетарных говн обновлять никто не будет, потому что in the first place их пересобирать никто не будет.

intelfx ★★★★★
()
Ответ на: комментарий от tailgunner

Официального стандарта на язык тоже нет, что не мешает как-то им пользоваться. Там что, ABI каждый минорный релиз ломают?

intelfx ★★★★★
()
Ответ на: комментарий от RazrFalcon

Всё новое это хорошо забытое старое! Ну и автора как-то попроще описано, без «портянок».

Virtuos86 ★★★★★
() автор топика
Ответ на: комментарий от intelfx

Официального стандарта на язык тоже нет, что не мешает как-то им пользоваться.

Очень мешает. И жук, и жаба пытаются использовать фичи из последней версии транслятора или nightly.

Там что, ABI каждый минорный релиз ломают?

Не знаю. AFAIK, за ним просто никто не следит.

tailgunner ★★★★★
()
Ответ на: комментарий от intelfx

Если ты сжал 6 MiB до 200 KiB на диске, но в оперативке это всё равно 6 MiB, то грош цена такому сжатию.

Вообще-то зависит от того, где место дешевле - в оперативке или «на диске».

tailgunner ★★★★★
()
Ответ на: комментарий от intelfx

что место в оперативке ценнее места на диске.

Расскажи это тем, кто утрамбовывает сраный последний мегабайт в раздел флеша.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от tailgunner

Building Tiny Rust Binaries for Embedded Linux
Не всегда на устройстве есть Linux.

не всегда

anonymous
()
Ответ на: комментарий от intelfx

это не всегда так. Мы сейчас делаем прошивку для IP камеры и там место на диске ценнее памяти: на диске 8 мегабайт на ВСЁ (а хотелось бы использовать половину места для безопасных обновлений), а в памяти 64 мегабайта.

max_lapshin ★★★★★
()
Ответ на: комментарий от intelfx

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

max_lapshin ★★★★★
()
Ответ на: комментарий от max_lapshin

Ну хоть когда-то ЛОР сгодился не только для генерации срача и хэйта.

Virtuos86 ★★★★★
() автор топика
Ответ на: комментарий от max_lapshin

на диске 8 мегабайт на ВСЁ … а в памяти 64 мегабайта

Раньше Нокиа делала смарты, с такими хар-ми на Symbian 7/8/8.1. Да и 9-ая версия имела схожие ТТХ.

Virtuos86 ★★★★★
() автор топика

upx

Если будет запускаться много копий, будет есть больше памяти, чем не запакованный. Обычные бинарники шарятся, а сжатые — нет.

i-rinat ★★★★★
()
Ответ на: комментарий от anonymous

шах и мат растолюбам в эмбедде

Чо ты как лох. Сейчас 8 ядер и 4 гига памяти - это уже лютейший эмбеддед.

devl547 ★★★★★
()
Ответ на: комментарий от devl547

Сейчас 8 ядер и 4 гига памяти - это уже лютейший эмбеддед.

в таком эмбедде любой смартфон - IP камера.

anonymous
()
Ответ на: комментарий от intelfx

Если ты сжал 6 MiB до 200 KiB на диске, но в оперативке это всё равно 6 MiB, то грош цена такому сжатию

На самом деле все гораздо хуже. Несжатые 6 MiB на диске подгружаются операционной системой постранично по мере использования, и выгружаются если системе резко нужна память, а распакованные 6 MiB в памяти висят там пока работает процесс, и выкинуть их можно только в своп

annulen ★★★★★
()
Ответ на: комментарий от anonymous

Только наркоман предпочтёт замшелый Си современному языку, если рантайм того удастся запихать в ограниченный объем памяти. Раст не заменит Си, об этом речи и не идет, но стать приемлемой альтернативой — почему нет?

Virtuos86 ★★★★★
() автор топика
Ответ на: комментарий от Virtuos86

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

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

anonymous
()
Ответ на: комментарий от anonymous

В эмбеде не будут использовать полную std и тем более не будут использовать rocket. И размер будет меньше килобайта.

pftBest ★★★★
()
Ответ на: комментарий от anonymous

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

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

Анонимус не читатель? Где в твоей цитате указано, что я предлагаю подбирать «железо» под рантайм Раста? А себестоимоимость написания прошивки на сишке всяко будет выше, чем на Расте, хотя и на Расте, как ты справедливо указал, любителю будет сложновато писать эффективный код. Но, блин, инструмент-то более совершенный лучше менее совершенного. Даже спесивые сишники должны это понимать.

Virtuos86 ★★★★★
() автор топика
Ответ на: комментарий от Virtuos86

себестоимоимость написания прошивки на сишке всяко будет выше, чем на Расте

на основании чего ты так решил ? Что касается твоей ссылки на изыскания растолюбителей - там широко используемые приемы в эмбедде - отключение ненужного, стрип и сжатие, это всегда было и есть для любого языка. Зачем вообще упаковывать бинарники если есть initramfs которую можно слинковать с ядром в один бинарь и пожать люыбым компрессором на выбор - ядро само распакуется при старте в ОЗУ.

anonymous
()
Ответ на: комментарий от anonymous

себестоимоимость написания прошивки на сишке всяко будет выше, чем на Расте

на основании чего ты так решил ?

/me разводит руками. А правда, чего это такие предположения делаю :). Ну нет, так нет.

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

Это можно легко заметить, потому что strip и upx не являются растоспецифичными инструментами. Суть поста по ссылке не в новаторстве.

Virtuos86 ★★★★★
() автор топика
Ответ на: комментарий от anonymous

ты коммерческой разработкой никогда не занимался. Там экономят на всём и за пол-цента прибавки к себестоимости удавятся.

Зависит. В некоторой за пол-цента удавятся, в некоторой - не удавятся и за цент.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

я просто обожаю эти рассуждения о деньгах и экономике на форуме, где обсуждают глубоко технарскую хрень вида llvm vs gcc.

max_lapshin ★★★★★
()
Ответ на: комментарий от intelfx

Да когда же они все поймут, что место в оперативке ценнее места на диске.

Расскажи это Гуглу, вот ребята посмеются. Они не знают как уменьшить хранилише картинок - webp вот изобрели, webm - для видео.

sniper21 ★★★★★
()
Последнее исправление: sniper21 (всего исправлений: 1)
Ответ на: комментарий от sniper21

пусть дубли в хранилище по убирают а не кодеки изобретают

anonymous
()
Ответ на: комментарий от Virtuos86

strip и upx являются ELF специфичными инструментами, или раст генерирует какой то свой исполняемый формат ?

anonymous
()
Ответ на: комментарий от sniper21

Они не знают как уменьшить хранилише картинок

guetzli и knusperli поверх)

devl547 ★★★★★
()

бред какой то, в ~2004 годах удавалось на 10мб флеша полноценные voip switch заливать на С++ вместе с ОС,
а сейчас на 100мб флеша не знают как хелоу ворлд поместить на каком то расте

anonymous
()
Ответ на: комментарий от anonymous

Тред не читай, ОП не читай, по ссылкам не ходи @ сразу отвечай.

Virtuos86 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.