Где блекджек, где мои шлюхи? Ничерта не работает! Войти !bnw Сегодня Клубы
Один из подходов к инсталляции программ -- делать один здоровый бинарник и один конфиг к нему. Понятное дело, если я напишу какую-нибудь нужную говнософтину, то заставлять даже того, кому она нужна, ковыряться без необходимости в её кишках неэтично. Вот если она окажется такой удачной и везде нужной, что её станут, например, пихать в дистрибутивы -- тут конечно лучше бы всё декомпозировать и зависимости ставить отдельно. Но таких программ появляются единицы на тысячу, да и то не на каждую =). Экстремальный пример -- Docker. Но он сам по себе довольно замороченный. Пример попроще -- Go и Rust, у которых штатный режим предполагает сборку жирного бинарника, зато *одного*. Ещё один забавный пример -- JXcore. Это форк Node, который умеет паковать всё барахло в один бинарник. А оно потом берёт и почему-то работает. В идеале. Я вчера решил этому JXcore задать хорошую трёпку. Есть сервер с древним дебианом на ядре 2.6. Тотальный апдейт ему делать никто не хочет, ставят только апдейты на тему безопасности. 1. JXcore на него поставился и запустился. Современный JXcore на ядре 2.6 и примерно соответствующих системных библиотеках. 2. Ок, подумал я, у меня ж есть пара программок на Node. Взял свой xmpp-forwarder, и он заработал. Причём нельзя сказать, что у него совсем нет зависимостей. Явные -- `livescript`, `prelude-ls` и довольно-таки жирный `node-xmpp-client`. 3. Наконец, я решил сделать тот самый *portable standalone* бинарник. Для чего JXCore в данном случае и был нужен. Вот тут JXcore грохнулся при его сборке. Что-то не нашёл в `glibc`. Надо будет попробовать собрать бинарник на другой машинке и запустить на том серваке, я считаю. Что характерно, никаких системных требований по минимальным версиям библиотек авторы не публикуют. Тем не менее, по-моему всё равно круто: я ведь думал, что оно там вообще работать откажется, а оно работает. С Докером всё более или менее ясно. Если ядро достаточно новое, чтобы он сам заработал -- значит и софтина под ним скорее всего будет работать. Тем более там в контейнерах как правило какая-нибудь Ubuntu LTS. Да и вообще Докер не на ту тему немного. Интересно, а на каком самом старом барахле могут работать *portable standalone* бинарники, сделанные компиляторами Go и Rust?
Рекомендовали: @minoru @ninesigns
#M7WIHW / @dluciv / 3213 дней назад

ghc может собирать статически слинкованные с musl бинарники, один из которых у меня заводился на 2.6.2чототам.
#M7WIHW/DX6 / @l29ah / 3213 дней назад
@l29ah Прикольно. На самом деле Go, уверен, тоже сможет, если умеренно с ним потрахаться. На нём чуть-ли не загрузчики писали. А вот Rust слишком жирный, собака, не верю.
#M7WIHW/9PQ / @dluciv --> #M7WIHW/DX6 / 3213 дней назад
@dluciv Схуяли руст жирный, чо ты несешь? У него вообще рантайма нет.
#M7WIHW/QQC / @plhk --> #M7WIHW/9PQ / 3212 дней назад
@plhk А это что такое https://doc.rust-lang.org/alloc/rc/ ???
#M7WIHW/K1I / @j123123 --> #M7WIHW/QQC / 3212 дней назад
@plhk Или может я не совсем правильно понимаю фразу "рантайма нет"?
#M7WIHW/568 / @j123123 --> #M7WIHW/QQC / 3212 дней назад
@j123123 Thread-local reference-counted boxes, там же написано.
#M7WIHW/560 / @plhk --> #M7WIHW/K1I / 3212 дней назад
@plhk Пфф, если б там было рантайма ровно столько же, сколько нужно языку вроде Си, то не было б проблем с использованием этого Rust на Windows XP например. А такие проблемы есть http://blog.rust-lang.org/2015/09/17/Rust-1.3.html >We’re continuing to invest in Windows, with preliminary support for targeting Windows XP. While we do not intend to treat Windows XP as a “first tier” platform, it is now feasible to build Rust code for XP as long as you avoid certain parts of the standard library. Какую-то часть функций из стандартной библиотеки (значит у Rust есть своя стандартная библиотека, т.е. рантайм!!!) нельзя использовать, если мы хотим компилировать под древний Windows XP который несмотря на свою древность все еще активно используется https://redmondmag.com/articles/2015/04/08/windows-xp-usage.aspx
#M7WIHW/F6X / @j123123 --> #M7WIHW/Y7Q / 3212 дней назад
@plhk Если можно вообще все стандартные библиотеки выкинуть, это конечно хорошо, да. Но никто так обычно не пишет
#M7WIHW/MH2 / @j123123 --> #M7WIHW/Y7Q / 3212 дней назад
@plhk Прикольно. Ну так он системный язык же. Вопрос, насколько легко его резать, чтобы так порезать.
#M7WIHW/4X5 / @dluciv --> #M7WIHW/FHA / 3212 дней назад
@plhk Вот пусть кстати source to source транслятор из C в Rust сделают, и прогонят ядро линупса через него, чтоб дальше его на Rust писать
#M7WIHW/DCX / @j123123 --> #M7WIHW/FHA / 3212 дней назад
@dluciv Я привел ссылку на документацию. Для твоего случая cкорей всего достаточно сделать `--target=x86_64-unknown-linux-musl`
#M7WIHW/SAE / @plhk --> #M7WIHW/4X5 / 3212 дней назад
@plhk Прикольно, оказывается он из коробки так могёт! Мой случай правда `x86` без 64, но это не принципиально =)
#M7WIHW/SM6 / @dluciv --> #M7WIHW/SAE / 3212 дней назад

@j123123 Никому это не нужно и профита тоже нет

#M7WIHW/DGV / @ninesigns --> #M7WIHW/DCX / 3212 дней назад
@ninesigns Почему нет? Можно будет использовать более высокоуровневый язык, экономя тем самым время
#M7WIHW/FQK / @j123123 --> #M7WIHW/DGV / 3212 дней назад

@j123123 Охуенно, часть кода на сишке из которой генерится небезопасный растовый код и одна десятитысячная часть на расте

#M7WIHW/ZAB / @ninesigns --> #M7WIHW/FQK / 3212 дней назад

@j123123 Чем ты там время решил сэкономить? Большинство ядерного кода это цикл вида "прочитать данные из юзеоспейса, положить в память устройства, дернуть регистр, обработать прерывание. Где там высокоуровневость всралась?

#M7WIHW/NS8 / @ninesigns --> #M7WIHW/FQK / 3212 дней назад
@ninesigns Прочитай про танцующие деревья в каком-нибудь ReiserFS например https://web.archive.org/web/20071024001500/http://www.namesys.com/v4/v4.html
#M7WIHW/KR0 / @j123123 --> #M7WIHW/NS8 / 3212 дней назад
@j123123 ты ебанутый? нет, ты можешь конечно сделать это за своё время, попутно переучив всех разработчиков, но я думаю, что не хватит ресурсов
#M7WIHW/0DX / @anonymous --> #M7WIHW/DCX / 3212 дней назад
Хорошо бы в мейнлайн это подтащили.
#M7WIHW/JF2 / @heroin / 3212 дней назад
@anonymous А хули там переучиваться? Разве там что-то существенным образом отличается, если на rust писать в сишном стиле?
#M7WIHW/LHE / @j123123 --> #M7WIHW/0DX / 3212 дней назад

@j123123 через сколько лет, ты думаешь, ядро линупса перепилят на руст?

#M7WIHW/G7O / @ninesigns --> #M7WIHW/UO1 / 2865 дней назад
@ninesigns Вряд ли перепишут. Скорее уж придумают язык получше, чем руст. И напишут ядро получше, чем линукс. Но если вдруг перепишут, я отпишусь в этом треде
#M7WIHW/MFO / @j123123 --> #M7WIHW/G7O / 2865 дней назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.