Berkus
secure, not safe
Berkus
интересно не оптимизируется ли он до memset в случае POD-ов
Berkus
ну и тогда его тоже компилер может выкинуть )
Vladislav
да)
Anonymous
чем отличается секурное обнуление от несекурного?
Anonymous
что это означает на низком уровне?
Berkus
чем отличается секурное обнуление от несекурного?
компилятор имеет право в некоторых случаях выкинуть memset; если ты этим мемсетом зачищал например приватный ключ, то может получиться ой
Anonymous
хм
Anonymous
а в нативных апи интерестно в чём разница. там есть RtlSecureZeroMemory и RtlZeroMemory внутри ntdll в винде
Berkus
std::fill_n(arr.begin(), arr.end(), 0); превратится в memset, который компилятор вполне может выкинуть
🦥Alex Fails
понятно, std::fill в любом случае не будет опущен
тут же выше написано было, что может в мемсет превратиться
Anonymous
а
Anonymous
оке
Anonymous
То же самое
нет, так не может быть
Anonymous
их можно вызввать неявно потому что например
Ioann_
std::fill_n(arr.begin(), arr.end(), 0); превратится в memset, который компилятор вполне может выкинуть
Можно кстати прагму вписать. Вроде есть такая которой можно указать компилятору на то, чтобы код он не оптимизировал. Ну такое себе, конечно непереносимое решение
Igor
пони в моём с++? ну уж нет.
На юзкейсе "скрестить cPegasus и cUnicorn" весьма наглядно объяснять dreaded diamond и виртуальное наследование, так что я не согласен
Vsevolod
@zamazan4ik лучше бы pull request прислал для libucl, а то ж он у меня больше для сишечки...
Aleksey
memset_s кому нужно гарантированно очистить память.
🦥Alex Fails
А его занесли в кресты?
Aidar
А чо нельзя std::fill с volatile?
Aleksey
http://en.cppreference.com/w/c/string/byte/memset
Aleksey
errno_t memset_s( void *dest, rsize_t destsz, int ch, rsize_t count ) (2) (since C11)
Matwey
C11 же не занесли в C++11
🦥Alex Fails
C11 же не занесли в C++11
@antoshkka го исправим
Richard
Когда @AlexFails слышит про технологию Х, которой нет, первое, что он пишет "го запилим Х" :)) Тебе уже макрос впору заводить или бота настроить на автоответ на такие сообщения :))
Richard
Именно))
Matwey
Но при чем тут го? Чатик же про плюсы
Anonymous
А на чем сейчас православно REST запилить в плюсах можно? Так чтоб и epoll/kqueue/iocp умело и уровнем повыше boost.asio и poco?
Anton
poco вроде не умеет epoll/kqueue
Igor
А, сорян, рестино на asio вроде
Igor
Пишите своё на libevent
Alexander "SonnySlave"
@zamazan4ik лучше бы pull request прислал для libucl, а то ж он у меня больше для сишечки...
ну а чего ты не присылаешь PR? 😊 Для начала нужно найти тех, кто пакеты готов делать. А там уже как руки дойдут
Anton
вот есть статейка бенчмарк https://habrahabr.ru/post/207460/
Anonymous
https://bitbucket.org/sobjectizerteam/restinio-0.4
О, интересно, спасибо
Anonymous
Пишите своё на libevent
Его завезли в винду? Да и цель не писать свой сервер, а поднять микросервис на плюсах за 10 минут
Anton
если быстро и не особо парит производительность то poco подойдет
🦥Alex Fails
Да есть в винде сервисы
Anonymous
Про винду не знаю. Но свой сервис на винде? Ненене)
Щас приходится вот это использовать - вот где боль https://msdn.microsoft.com/en-us/library/windows/desktop/aa364510(v=vs.85).aspx
Igor
Щас приходится вот это использовать - вот где боль https://msdn.microsoft.com/en-us/library/windows/desktop/aa364510(v=vs.85).aspx
Не, сорян, я в винду не умею. Под ХР писал последний раз лет 5 назад
Igor
Согласен
🐙 Antony
@antoshkka го исправим
Занесли в C++17
🐙 Antony
Хаюшки
Matwey
Приветики
Berkus
А чо нельзя std::fill с volatile?
volatile это вообще про другое
Alexander
Шалом 😁
Berkus
для роутинга есть несколько мелких либ, там можно ортогонально запилить в принципе
Сережа
volatile это про то что над этим объектом компилятор не должен выполнять оптимизаций, в том числе не оптимизирует memset если после него нет использований этого объекта, разве нет?
Anonymous
за 10 минут? с каким функционалом?
А это важно? Обработчики get/post, данные форм и хэдеры. Никакой магии типа tls не нужно
Egor
нет
А про что?
Berkus
А про что?
In computer programming, particularly in the C, C++, C#, and Java programming languages, the volatile keyword indicates that a value may change between different accesses, even if it does not appear to be modified. This keyword prevents an optimizing compiler from optimizing away subsequent reads or writes and thus incorrectly reusing a stale value or omitting writes. Volatile values primarily arise in hardware access (memory-mapped I/O), where reading from or writing to memory is used to communicate with peripheral devices, and in threading, where a different thread may have modified a value.
Egor
Кажется, что для корректного memory-mapped I/O нам недостаточно "indicates that a value may change"?
Egor
Потому что у девайса может быть адрес, по которому надо только писать.
Alexander
А это важно? Обработчики get/post, данные форм и хэдеры. Никакой магии типа tls не нужно
анализ cors, безопасность... работа с бд... не ну если просто файлики по get отдавать или hello world в ответ кидать, то такое можно на плюсах за 10 минут)
Berkus
фактически специфицирует что у чтения и записи может быть сайд-эффект, даже если компилятор считает иначе
Aidar
Ну и что?
Egor
Окей. И кажется, что из этого в частности следует запрет практически всех оптимизаций?
Egor
А с memset, судя по гуглежу, проблема лишь в том, что они принимает указатель на обычные данные, не volatile?
Berkus
Окей. И кажется, что из этого в частности следует запрет практически всех оптимизаций?
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1381.pdf прочитай вот тут почему даже volatile не будет работать