
Berkus
12.01.2018
00:07:23
secure, not safe

Anton
12.01.2018
00:07:39

Berkus
12.01.2018
00:08:57
интересно не оптимизируется ли он до memset в случае POD-ов

Vladislav
12.01.2018
00:09:44

Google

Berkus
12.01.2018
00:10:24
ну и тогда его тоже компилер может выкинуть )

Vladislav
12.01.2018
00:10:39
да)

День Спокойного Превосходства
12.01.2018
00:37:26
чем отличается секурное обнуление от несекурного?

Berkus
12.01.2018
00:39:22

День Спокойного Превосходства
12.01.2018
00:39:49
что это означает на низком уровне?

Berkus
12.01.2018
00:39:54

День Спокойного Превосходства
12.01.2018
00:42:09
хм
а в нативных апи интерестно в чём разница. там есть RtlSecureZeroMemory и RtlZeroMemory внутри ntdll в винде

Berkus
12.01.2018
00:48:23
std::fill_n(arr.begin(), arr.end(), 0); превратится в memset, который компилятор вполне может выкинуть

Alex Фэils?︙
12.01.2018
00:49:30

День Спокойного Превосходства
12.01.2018
01:04:50
а

Google

День Спокойного Превосходства
12.01.2018
01:04:56
оке

Scarf
12.01.2018
01:30:49

День Спокойного Превосходства
12.01.2018
01:35:05
их можно вызввать неявно потому что например

Ioann V
12.01.2018
03:23:32

Igor
12.01.2018
07:17:04
пони в моём с++? ну уж нет.
На юзкейсе "скрестить cPegasus и cUnicorn" весьма наглядно объяснять dreaded diamond и виртуальное наследование, так что я не согласен

Vsevolod
12.01.2018
07:38:27
@zamazan4ik лучше бы pull request прислал для libucl, а то ж он у меня больше для сишечки...

Aidar
12.01.2018
07:47:12

Aleksey
12.01.2018
07:52:23
memset_s кому нужно гарантированно очистить память.

Alex Фэils?︙
12.01.2018
07:59:26
А его занесли в кресты?

Aidar
12.01.2018
08:01:47
А чо нельзя std::fill с volatile?

Aleksey
12.01.2018
08:10:45
http://en.cppreference.com/w/c/string/byte/memset
errno_t memset_s( void *dest, rsize_t destsz, int ch, rsize_t count ) (2) (since C11)

Matwey
12.01.2018
08:11:34
C11 же не занесли в C++11

Alex Фэils?︙
12.01.2018
08:23:19

Эдуард
12.01.2018
08:28:34
Когда @AlexFails слышит про технологию Х, которой нет, первое, что он пишет "го запилим Х" :)) Тебе уже макрос впору заводить или бота настроить на автоответ на такие сообщения :))

Дед Пегас
12.01.2018
08:29:23

Эдуард
12.01.2018
08:30:08
Именно))

Matwey
12.01.2018
08:31:02
Но при чем тут го? Чатик же про плюсы

Google

Alex Фэils?︙
12.01.2018
08:37:21

Maxim
12.01.2018
09:00:51

Nik
12.01.2018
09:05:38
А на чем сейчас православно REST запилить в плюсах можно? Так чтоб и epoll/kqueue/iocp умело и уровнем повыше boost.asio и poco?

Igor
12.01.2018
09:07:39

Anton
12.01.2018
09:07:55
poco вроде не умеет epoll/kqueue

Igor
12.01.2018
09:08:09
А, сорян, рестино на asio вроде
Пишите своё на libevent

Alexander
12.01.2018
09:09:22

Anton
12.01.2018
09:11:24
вот есть статейка бенчмарк https://habrahabr.ru/post/207460/

Nik
12.01.2018
09:12:51
Пишите своё на libevent
Его завезли в винду? Да и цель не писать свой сервер, а поднять микросервис на плюсах за 10 минут

Anton
12.01.2018
09:14:53
если быстро и не особо парит производительность то poco подойдет

Igor
12.01.2018
09:14:54

Alex Фэils?︙
12.01.2018
09:16:24
Да есть в винде сервисы

Nik
12.01.2018
09:17:49

Igor
12.01.2018
09:19:52

Nik
12.01.2018
09:23:02

Igor
12.01.2018
09:23:39
Согласен

Antony
12.01.2018
09:26:14

Almaz
12.01.2018
09:27:48
Привет

Google

Antony
12.01.2018
09:28:36
Хаюшки

Matwey
12.01.2018
09:32:21

Alexander
12.01.2018
09:33:00

Berkus
12.01.2018
09:34:21

Alexander
12.01.2018
09:34:41

Berkus
12.01.2018
09:35:02

Alexander
12.01.2018
09:36:04

Berkus
12.01.2018
09:36:07
для роутинга есть несколько мелких либ, там можно ортогонально запилить в принципе

Серж
12.01.2018
09:37:17
volatile это про то что над этим объектом компилятор не должен выполнять оптимизаций, в том числе не оптимизирует memset если после него нет использований этого объекта, разве нет?

Nik
12.01.2018
09:37:48

Berkus
12.01.2018
09:37:52

Egor
12.01.2018
09:38:19

Berkus
12.01.2018
09:38:32
А про что?
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
12.01.2018
09:38:55
Кажется, что для корректного memory-mapped I/O нам недостаточно "indicates that a value may change"?
Потому что у девайса может быть адрес, по которому надо только писать.

Alexander
12.01.2018
09:39:28

Berkus
12.01.2018
09:39:36
фактически специфицирует что у чтения и записи может быть сайд-эффект, даже если компилятор считает иначе

Aidar
12.01.2018
09:40:06
Ну и что?

Google

Egor
12.01.2018
09:40:14
Окей. И кажется, что из этого в частности следует запрет практически всех оптимизаций?
А с memset, судя по гуглежу, проблема лишь в том, что они принимает указатель на обычные данные, не volatile?

Berkus
12.01.2018
09:40:54
> the MIPSpro compiler and versions 3 and later of GCC cleverly zero out only the first byte and leave the rest of the pwd array intact.
> There has been recent notice that some compilers violate the standard by not always respecting the v o l a t i l e qualifier.

Aidar
12.01.2018
09:42:36

Berkus
12.01.2018
09:42:42
нет

Aidar
12.01.2018
09:42:49

Серж
12.01.2018
09:42:52
>compilers violate the standard
это поэтому нельзя std::fill?

Berkus
12.01.2018
09:42:53
я процитировал что там написано, для тех, кто не умеет читать

Egor
12.01.2018
09:42:55

Alex Фэils?︙
12.01.2018
09:43:05

BlackAndOrange
12.01.2018
09:43:07
Насколько я помю, если сделать
#define volatile
ничего не изменится

Berkus
12.01.2018
09:43:19

Aidar
12.01.2018
09:43:19
Плевать на компиляторы которые не хотят соблюдать стандарты

BlackAndOrange
12.01.2018
09:43:30
По стандарту должно, да

Egor
12.01.2018
09:43:36

Berkus
12.01.2018
09:43:37

Aidar
12.01.2018
09:43:45
С++ не о компиляторах

Berkus
12.01.2018
09:43:53