Matwey
Обертка это такая, она еще будет делать val = fun(arg) внутри.
Matwey
Я думал, может вы знаете
Anatoly
Я думал, может вы знаете
я такое result_wrapper называл
Berkus
в целом это Result<T> cо специализацией под void
Anatoly
да, ладно, это же действительно часто встречается в метапрограммировании надо написать T r = g(f()); , а f() может быть void, и приходится стучать в бубен
Anatoly
вот-вот, у future всяких в т.ч.
Anatoly
я не так написал. надо вызвать функцию f, и передать её результат в другую функцию g. но f может быть void, и тогда надо передать какой-нибудь Result<void> например, using R = invoke_result<F, Args...>; if constexpr (is_same_v<void, R>) { f(args...); g(Result<void>{}); } else { g(Result<R>{f(args...)}); }
Berkus
Yawn
Anatoly
и да, с++ позволяет писать return f() в т.ч. для void, но g(f()) уже так не умеет - недоработочка
Max
/report
Alexander "SonnySlave"
/report не работает. При обнаружении спама просьба кастовать в тред следующих людей: @AlexFails @winged_pegasus @crackedmind @berkus @zamazan4ik
Danil
этот текст можно добавить в закрепленное сообщение
+ вписать в описание/пин было бы круто, и не только здесь, но и вдругих чатиках, а то руками грепать по админам всегда ниоч
Alexander "SonnySlave"
Ignat
на крестах был написан?
Ignat
земля пухом...
Berkus
надо поднять своего бота...
Constantine
а что случилось с ним?
Constantine
ботов на плюсах запретили женевской конвенцией?
Berkus
да там вроде просто автору надоело его хостить или что-то такое
Constantine
а че, проблема захостить?
Крылатый
Как видишь.
Berkus
проблема аудитить чужой код прежде чем хостить
Anonymous
кажется автор его у себя на планшете хостил
Крылатый
Ты путаешь с Алексом
Constantine
а там много букав?
Igor
кажется автор его у себя на планшете хостил
это у фейлса бот на планшете, батлер жил сам по себе
Constantine
сорсы есть?
Matwey
Constantine
и потом, а как дела у clang с JIT LLVM?
Berkus
cling же работает
Constantine
я к тому, что clang -> LLVM JIT можно использовать как жесткий sandbox
Constantine
для C++ кода
Anatoly
э? как? там же нативный код
Constantine
я не изучал технические детали, но принципиально можно же просто запрещать доступ на все, что не нравится
Constantine
ну т.е. кроме коннекта на телеграм
Berkus
я к тому, что clang -> LLVM JIT можно использовать как жесткий sandbox
фигня, кмк. к тому же бот не на плюсах насколько я знаю
Constantine
Egor
исходники-то есть бота?
Berkus
https://storebot.me/bot/groupbutler_bot
Berkus
последние комменты
Berkus
хм, почему нельзя сделать LLVM JIT sandbox?
потому что затраты труда на это больше чем написать такого же батлера с нуля
Constantine
потому что затраты труда на это больше чем написать такого же батлера с нуля
ну мне кажется этот проект сам по себе безумно ценный
Constantine
я подумаю)
Constantine
надо документач поднимать как LLVM импортирует вызовы
Berkus
https://github.com/RememberTheAir/GroupButler нашел сорцы бота
Berkus
на ЛУА епт
Anatoly
да нет там никакого сандбокса, нативное же всё. я хз как в этой линуксне, но в винде можно запросто вызывать ядро напрямую, хоть сисколлами, хоть int 2e
Constantine
речь про JIT версию LLVM
Anatoly
ну. JIT LLVM просто генерит машинный код из биткода ллвм
Anatoly
и этот машинный код может вызывать всё что хочет
Egor
https://github.com/RememberTheAir/GroupButler нашел сорцы бота
боты прожорливые, хз? а то я бы мог поставить себе
Berkus
ну. JIT LLVM просто генерит машинный код из биткода ллвм
но биткод ты можешь санитизировать перед генерацией как угодно. в этом и идея
Berkus
как по-твоему работают операционки типа Singularity?
Anatoly
как ты его санитизируешь, это задача уровня антивируса
Berkus
попробуй почитать
Anatoly
про Singularity? ок
Berkus
про Singularity? ок
нет, вообще про такие системы в целом
Constantine
там вообще вроде должно быть достаточно проксировать доступ на внешние ресурсы и изолировать грубые нарушения памяти
Constantine
последнее мы вообще можем делать полной виртуализацией чтения/записи, если очень хотим
Anatoly
ну вот у бота будет только протокол телеги - отправка и чтение сообщений. он напишет вася@ , и получит там команду на майнинг биткойна
Constantine
потребление ресурсов можно лимитировать
Constantine
это не задача виртуалки
Anatoly
значит надо ограничивать ему протокол телеги. а это уже считай пол-бота самому писать
Constantine
задача виртуалки - не дать косвенно импортировать функцию ОС
Constantine
после чего перешифровать весь жесткий диск
Anatoly
тогда уж компилить emscripten и выполнять на ноде
Tim
речь про то как обезопаситься при запуске плюсовой проги на своей тачке?
Anatoly
угу, запуск чужого бота на своем сервере
Constantine
речь про идею, что можно сделать sandbox для JIT LLVM
Tim
ага, наверное можно
Tim
хз правда можно ли там достаточно обезопасить сырые указатели