TL;DR: растоман последовательно уменьшает размер собираемого бинарника на примере хеллоуворлда с ~6 Мб до ~200 кб, используя ряд тонких настроек Cargo и LLVM, а также прибегая к помощи Xargo и upx.
strip и upx являются ELF специфичными инструментами, или раст генерирует какой то свой исполняемый формат ?
Ты (судя по тому, что тот анонимус тоже поставил ненужный пробел перед вопросительным знаком) выступил в роли КО, заявив, что бинарники стрипают и стдлиб обрезают уже давно. Я ответил, что пойнт был не в этом.
Еще один. Если рантайм Раста помещается в флэш-память девайса (подразумевается, что еще остается место), то это хороший повод выбрать Раст. Это то, что написал я.
Вы с анонимусом думаете, что я рекомендую выбросить на помойку весь эмбеддед, в который Раст не влезает. Где вы это прочитали, я не знаю.
В рач линуксе, например, для всего кода на хаскелле насильно сделали динамическую линковку. И теперь после каждого апдейтп что-нибудь да ломается, ведь в рач линуксе зависимости от динамических библиотек никто не отслеживает.
Кстати, пару раз с либреофисом такая же лажа была.
upx - это читинг. Хотя, возможно, для bare metal и полезно.
У меня на bare metal этот upx нормально никогда не работал и все сжатые им исполнительные файлы не запускались. Кроме того, upx не работал и на старых железках под Linux 2.4.* и Linux 2.6.*, с примерно похожими симптомами.
Сейчас же это все стоит жалкие копейки. Почему нельзя сделать 128/128 увеличив цену на пару баксов?
особенности массового производства - прежде чем поставить на конвеер надо скомплектовать, например 100 тыс изделий - для них сначала закупают комплектующие, добавил ты 1 бакс и тебе уже надо вложить в производство на 100 тыс долларов больше, потом оптовые цены могут непропорционально изменяться - память небольшого размера можно найти по бросовым ценам на стоках. Для местных IP-камерщиков все еще сложнее - они просто покупают готовое и чтобы что-то поменять для них цены вырастут в разы, самим перепаивать - надо вскрыать каждое изделие.
Мда. Что ж это за говённый язык такой, которому надо минимум 6Мб какого-то шлака, просто ради того, чтобы одним сисколлом строку в stdout выплюнуть? Боюсь представить объёмы для чего-то мало-мальски полезного. Тут даже жаба с электроном уже не выглядят полным идиотизмом.
Если это статически слинкованный бинарник, то у плюсов примерно то же самое получается, и тоже чтобы 1 строку в stdout выплюнуть, так что претензия несколько некорректная получается. А вот upx это дно пробито.
Пытался когда-то давно собрать musl статически с lto, чтобы собирать маленькие статические бинарники без зависимостей. Но что-то с наскока не пошло, забросил. Были проблемы с неправильным указанием видимости функции-стартера в musl, из-за чего она выкидывалась при lto. Думаю и с другими именами были бы проблемы. Дальше не стал копать. Лень двигатель прогресса.
Вполне вероятно, что будет девайс схожей направленности, но только low cost, куда раст не втиснуть.
При использовании сишки оба девайса может поддерживать одна команда и шарить код между проектами.
При использовании раста имеем две отдельных кодовых базы, если не две команды.
Ну и кому нужен этот геморрой?
Вполне вероятно, что будет девайс схожей направленности, но только low cost, куда раст не втиснуть.
На этом можно муки выбора закончить, нет?
Вообще в Rust-сообществе сформирована отдельная рабочая группа, которая работает над внедрением Rust в embedded, но каковы их успехи и есть ли они в принципе, я не отслеживаю.
Да.
Суть, однако, в том, что есть еще ряд причин не использовать раст, как, впрочем, и любой другой «крутой» язык - хаскель, ним etc, и такой выбор зачастую даже не встает.
Ты же взрослый человек, должен понимать, что принцип «почему бы и нет» здесь не работает.