Size: a a a

Конференция C++ Russia

2020 May 20

EB

Eduard Bondarenko in Конференция C++ Russia
реклама
источник

ЖХ

Женя Х in Конференция C++ Russia
Timur Safin
подстава какая-то
Извиняюсь, поправила в сообщении ссылку)
источник

TS

Timur Safin in Конференция C++ Russia
Женя Х
Извиняюсь, поправила в сообщении ссылку)
да, так - хорошо! Спасибо!
источник

TS

Timur Safin in Конференция C++ Russia
@eduardbcom jugru на этой неделе, как Ласковый Май в лучшие годы - чесом по всем тематическим конференциям выступает. Легко запутаться
источник

TS

Timur Safin in Конференция C++ Russia
Переслано от Alexey Fyodorov
@tsafin https://habr.com/p/502526/
На этой неделе у нас 10 эфиров
источник

m

magras in Конференция C++ Russia
Alexey Solomin
Да и вообще для человека пишущего в т. ч. "злой хакинг" 😏 C++ one love ❤

на Rust такое писать кощунство:
   inline string_view reinterpretWstringAsString(const wstring_view& str_in)
   {
       return string_view(reinterpret_cast<const char*>(str_in.data()), str_in.length() * 2);
   }
Мне кажется здесь вы не правы. Один unsafe на то чтобы скастить указатели и такая функция должна прекрасно работать в расте. Кажется даже лайфтаймы компилятор должен вывести самостоятельно. При этом в отличие от плюсов она не станет миной замедленного действия.
источник

AV

Alexey Veselovsky in Конференция C++ Russia
magras
Мне кажется здесь вы не правы. Один unsafe на то чтобы скастить указатели и такая функция должна прекрасно работать в расте. Кажется даже лайфтаймы компилятор должен вывести самостоятельно. При этом в отличие от плюсов она не станет миной замедленного действия.
в чем же тогда тут unsafe будет? unsafe это всегда в любом языке или мина замедленного действия, или он избыточен и прикрывает собой изъяны дизайна языка (например системы типов).
источник

AV

Alexey Veselovsky in Конференция C++ Russia
либо, если unsafe правильный, то любой кто вызывает unsafe код тоже должен быть помечен как unsafe, тогда мина будет явным образом обозначена.
источник

ᅠᅠ

ᅠ ᅠ in Конференция C++ Russia
Что является примером относительного чтения в коде C / C ++, приводящего к утечке информации с помощью указателей или shared_ptr? (в обход стека aslr)
источник

m

magras in Конференция C++ Russia
Alexey Veselovsky
в чем же тогда тут unsafe будет? unsafe это всегда в любом языке или мина замедленного действия, или он избыточен и прикрывает собой изъяны дизайна языка (например системы типов).
Каст двухбайтовых строк в однобайтовые через указатели, кажется всегда будет сомнительной с точки зрения безопасности операцией. unsafe в данном случае только для того, чтобы локально сказать, я знаю что делаю и для стороннего наблюдателя все будет окей, поэтому сама функция может быть "safe".
источник

AV

Alexey Veselovsky in Конференция C++ Russia
magras
Каст двухбайтовых строк в однобайтовые через указатели, кажется всегда будет сомнительной с точки зрения безопасности операцией. unsafe в данном случае только для того, чтобы локально сказать, я знаю что делаю и для стороннего наблюдателя все будет окей, поэтому сама функция может быть "safe".
какое оно нафиг safe, если у тебя тут UB? то есть у тебя на какой-нибудь платформе вполне себе bus error вылетит
источник

AV

Alexey Veselovsky in Конференция C++ Russia
или хз что ещё
источник

m

magras in Конференция C++ Russia
Если я правильно помню, банальный сплит string_view в расте выполнен через указатели и unsafe.
источник

m

magras in Конференция C++ Russia
Alexey Veselovsky
какое оно нафиг safe, если у тебя тут UB? то есть у тебя на какой-нибудь платформе вполне себе bus error вылетит
Собственно поэтому этого и нельзя сделать по-умолчанию. unsafe же как раз о том, что "Да, я выхожу за рамки дозволенного и теперь только я отвечаю за работоспособность кода". И если на конкретной платформе я могу гарантировать корректность работы этой функции, я не вижу проблемы.
источник

m

magras in Конференция C++ Russia
Alexey Veselovsky
какое оно нафиг safe, если у тебя тут UB? то есть у тебя на какой-нибудь платформе вполне себе bus error вылетит
Раст я хуже знаю, но в плюсах, кажется, здесь нет UB.
источник

AV

Alexey Veselovsky in Конференция C++ Russia
magras
Собственно поэтому этого и нельзя сделать по-умолчанию. unsafe же как раз о том, что "Да, я выхожу за рамки дозволенного и теперь только я отвечаю за работоспособность кода". И если на конкретной платформе я могу гарантировать корректность работы этой функции, я не вижу проблемы.
любая функция которая вызовет эту функцию - также приведет в UB и должна быть unsafe. очевидно же.

эта функция тут - мина замедленного действия
источник

AV

Alexey Veselovsky in Конференция C++ Russia
magras
Раст я хуже знаю, но в плюсах, кажется, здесь нет UB.
я не уверен. обратная функция - точно была бы UB. А тут - надо чекать стандарт.
источник

m

magras in Конференция C++ Russia
Alexey Veselovsky
любая функция которая вызовет эту функцию - также приведет в UB и должна быть unsafe. очевидно же.

эта функция тут - мина замедленного действия
Если функция тригерит UB это некорректный код. К unsafe propagation это уже не имеет отношения.
источник

AV

Alexey Veselovsky in Конференция C++ Russia
дык вся штука в том, чтобы помочь программисту избежать UB. Внутри unsafe помощи нет, или она сильно ограничена.
источник

m

magras in Конференция C++ Russia
Alexey Veselovsky
я не уверен. обратная функция - точно была бы UB. А тут - надо чекать стандарт.
На сколько я помню, в плюсах на любой объект можно смотреть как на набор char или byte, поэтому я не вижу здесь UB.
источник