Vladimir
Раньше было emit-llvm/ emit=bc
big
но это уже, я так полагаю, только через cargo rustc --
Vladimir
Ну блин
Vladimir
Сорян х)
big
вот вот ) задача в том чтобы обойтись минимальными костылями, т.к. этим всем будут пользоваться простые смертные
big
так то конечно проще вообще makefile'ом ))
big
(или нет)
Vladimir
Ну наверное проще, мне кажется нельзя в cargo build встроить что-то особенное.
big
можно через linker.sh еще пробовать
big
https://github.com/pepyakin/rust-side-module-poc/blob/master/build.sh
https://github.com/pepyakin/rust-side-module-poc/blob/master/linker.sh
big
я знаю что можно через .cargo/config
Vladimir
Vladimir
Просто шелскрипт?
big
это когда ты указываешь linker executable. flavor остается я так понимаю, а executable меняется.
big
вот пример https://github.com/pepyakin/rust-side-module-poc/blob/master/linker.sh
Vladimir
Я просто не понял он сам запускается, или ты его запускаешь
Vladimir
Вот
Vladimir
Ясно
big
-С linker задаеть линкер executable
Vladimir
А с карго это дружит?
big
ага, если указать через .cargo/config
big
ща нарою пример
Vladimir
Ну и зверство
big
https://github.com/paritytech/wasm-tests/blob/9a1fcbf0d4e73bea437577e807bc38c7ba243d80/.cargo/config#L2
Vladimir
Ну ладно, тут даже почти не заерство
Vladimir
А xargo такое не умеет?
big
во. Это 99% ощущения от Emscripten такие )
big
а я если че не втеме xargo
Vladimir
Ну лан
big
я думал он помогает в случаях если нету core / std
Vladimir
Мб, я просто видел там для разных таргетов какие-то параметры указывать можно
Vladimir
Да xargo на главной пишет, что для того чтоб компилить стд нужен.
Anton
Loo
https://github.com/GGist/pendulum-rs
Loo
пендулум
Anonymous
Маjко
Да ладно, всё одно меньше чем Идея
Сережа
Сережа
хотя не, оно наверное в итоге соберет *.o, можно мейкфайл написать
Сережа
Пацаны, у меня есть массив [u8; 1024] и вектор Vec<u8>, посылка может уместиться в 1 пакет и я беру её из массива, если не уместиться, то беру из вектора.
Для экономии памяти, ответ я формирую в том же векторе.
fn process(req: &[u8], accum: &mut Vec<u8>)
так не работает, т.к. в req ссылка на содержимое вектора, борроу чекер не дает так сделать.
Я не придумал ничего лучше чем разбить эту функцию на 2:
pub fn get_processor(req: &[u8]) -> Option<fn(&mut Vec<u8>) -> ()>
получить функцию для формирования ответа, затем вызвать её с вектором.
Есть ли способ лучше?
Filipp
SmallVec?
Vladimir
Ебать извращенец
Vladimir
Байтодрочер
Vladimir
Байты ему надо экономить
Filipp
я так понимаю в SmallVec только то, что в буфер не влезает хранится
Vladimir
Принимай овнед что-то, и возвращай овнед что-то
Сережа
SmallVec?
Это, на первый взгляд, будет давать выделение на стеке.
В моем случае после разбора того, что в векторе, мне его содержимое уже не нужно (либо не нужно сразу если уместилось в массив). Хотелось бы как то его переиспользовать тут же, без unsafe.
Ivan
Всем привет, я переводил эту статью про изучение Go на примере переписывания с Python, скинули скриншот ваших тут страданий. Печально видеть, как вы позорите Rust-комьюнити оскорблениями и надменностью. Я не сомневаюсь, что тут есть и те, кто адекватен и не считает, что выбор другого языка программирования, отличного от ваших предпочтений, является достаточной причиной, чтобы оскорблять других людей. Но если вы тут есть — не стесняйтесь ставить на место других, коммьюнити, в которых люди умеют общаться и уважать других сложно строить и очень легко испортить. Не хотелось бы, чтобы Rust коммьюнити было образцом надменности и упоротости. Спасибо за внимание.
Filipp
Filipp
тогда та часть, что в хипе выкинется
Сережа
тут своя атмосфера, не принимай близко к сердцу
Vladimir
Filipp
Сережа
ну согласен, это конечно все байтодрочерство, я просто привык
Vladimir
Сережа
я знаю что Cow это copy on write
Сережа
в плюсах вроде как это уже моветон и там придумали, что move семантика лучше
Vladimir
Ну если честно фиг пойми задачу
Vladimir
Выглядит так какбудто у тебя на выходе меньше всегда чем на входе
Vladimir
Или нет?
Сережа
есть траспортный уровень, на котором я хочу чтобы послыка билась на пакеты, если не влезает в 1 пакет - посылка в векторе, если влезает - не трогаем вектор и берем посылку сразу из буфера для приема
Сережа
О - оптимизация
Сережа
этот чувак кстати который нас всех недостойными назвал - известный го деятель на хабре
Vladimir
Вектор то зачем, если у тебя размеры константные?
Сережа
что ж вы его говном не закидали?
Сережа
я занят просто.
Сережа
вектор чтобы собирать много пакетов в 1 посылку и обрабатывать её в итоге
Сережа
константные размеры пакета, посылка состоит из 1 или более пакетов
Vladimir
Окей, а как ты хочешь чтоб там был и респонс и реквест
Vladimir
Если может быть несколько реквест респонсов до момента обработки финального вектора
Сережа
я полагаю после обработки реквеста, мне его данные уже не нужны
Vladimir
Окей, но что делать если данные ответа не поместились
պլհկ
да не ссы, jemalloc переиспользует твой вектор
Сережа
увеличить вектор
Vladimir
Ок, т.е. на выходе из этой функции будет полноценный вектор?
Сережа
я пытался его передавать как аргумент, на выходе (возвращает) - ()
Vladimir
Короче на вход передавай fn foo (b:& mut [u8;1024])-> Cow