Size: a a a

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

2020 September 02

DK

Denis Kotov in Конференция C++ Russia
Vladimir Krivopalov
Тоже круто, да. Но если валидацию ссылок в плюсы добавить будет очень непросто, если вообще возможно, то алгебраические типы и сопоставление на уровне языка обсуждали ещё лет пять назад, а воз и ныне там.
Не согласен, это обычная проверка на графе, нужно добавить какой-то флаг свидетельствующий как долго живет объект и это можно сделать с помощью манглинга
источник

DK

Denis Kotov in Конференция C++ Russia
Проблема в том что сложно продвигать свои фичи в язык когда их никто не лобирует в коммитете
источник

DK

Denis Kotov in Конференция C++ Russia
Их просто проигнорируют потому что есть похожие и по ним скажет так есть ответчики что могут выступить в коммитете
источник

VK

Vladimir Krivopalov in Конференция C++ Russia
Denis Kotov
Не согласен, это обычная проверка на графе, нужно добавить какой-то флаг свидетельствующий как долго живет объект и это можно сделать с помощью манглинга
А как это совместить с существующим кодом? Тем, который про флаги ничего не знает и их никак не учитывает?
источник

DK

Denis Kotov in Конференция C++ Russia
Vladimir Krivopalov
А как это совместить с существующим кодом? Тем, который про флаги ничего не знает и их никак не учитывает?
Флагом будет являться дополнительный манглинг
источник

DK

Denis Kotov in Конференция C++ Russia
И совместимость достигается перекомпилированием библиотеки
источник

DK

Denis Kotov in Конференция C++ Russia
Манглинг является флагом и хранится в объектнике
источник

DK

Denis Kotov in Конференция C++ Russia
Можно было бы скомпилировать библиотеку и сохранить информацию как долго живет ссылка переданная в конструктор для анализа компилятором в дальнейшем
источник

DK

Denis Kotov in Конференция C++ Russia
Множество вариантов есть как это можно было бы реализовать
источник

VK

Vladimir Krivopalov in Конференция C++ Russia
Denis Kotov
И совместимость достигается перекомпилированием библиотеки
Из-за нежелания ломать ABI на полке пылятся дюжины куда более простых и консервативных предложений в стандарт. Так что тут шансов около нуля.
источник

DK

Denis Kotov in Конференция C++ Russia
Vladimir Krivopalov
Из-за нежелания ломать ABI на полке пылятся дюжины куда более простых и консервативных предложений в стандарт. Так что тут шансов около нуля.
Из-за нежелания ломать ABI у нас до сих пор проблема с денглинг ссылками которые можно решить и исключить многочасовые отладки кода ...
источник

VK

Vladimir Krivopalov in Конференция C++ Russia
Да и в целом такой механизм несоизмеримо проще добавить в язык с самого начала, как это сделал Rust, чем навесить на уже обросшего за десятилетия тоннами кода и сценариев С++.
источник

*

*cyberzx in Конференция C++ Russia
А какое отношение Линукс имеет к С++? :)
источник

DK

Denis Kotov in Конференция C++ Russia
Vladimir Krivopalov
Да и в целом такой механизм несоизмеримо проще добавить в язык с самого начала, как это сделал Rust, чем навесить на уже обросшего за десятилетия тоннами кода и сценариев С++.
Почему ? В плюсах добавляют новые ABI и это таже поломка так как старая программа не слинкуется с новой
источник

*

*cyberzx in Конференция C++ Russia
Кроме того, что он всегда не любил плюсы
источник

DK

Denis Kotov in Конференция C++ Russia
*cyberzx
Кроме того, что он всегда не любил плюсы
Это да, он просто их не понял и поэтому не любил ... частая проблема
источник

VK

Vladimir Krivopalov in Конференция C++ Russia
Denis Kotov
Почему ? В плюсах добавляют новые ABI и это таже поломка так как старая программа не слинкуется с новой
Потому что просто добавить новый ABI не то же самое, что добавить новый на повсеместно используемые вещи. Да даже и с новыми - корутины добавляли шесть лет, и до сих пор они довольно слабо освоены.
источник

VK

Vladimir Krivopalov in Конференция C++ Russia
А здесь речь о жизни объектов, это фундаментальная вещь. В нынешнем языке этого понятия нет, значит, новое должно как-то уживаться со старым кодом. Иначе пользы от него не будет никакой.

Есть проект на тысячи строк кода, вдруг появляется такая вот фича типа времени жизни ссылок в Rust (aka <'a>). Старый код о ней ничего не знает и в расчёт её не берёт, потому передавать объекты с указанным временем жизни в него нельзя. И получается непреодолимый барьер между старым и новым кодом. А по факту получается, что никто их не будет использовать, потому что любые изменения даже инкрементально вносить бывает нелегко, а если это влияет на весь проект, то вообще беда.
источник

DK

Denis Kotov in Конференция C++ Russia
Vladimir Krivopalov
А здесь речь о жизни объектов, это фундаментальная вещь. В нынешнем языке этого понятия нет, значит, новое должно как-то уживаться со старым кодом. Иначе пользы от него не будет никакой.

Есть проект на тысячи строк кода, вдруг появляется такая вот фича типа времени жизни ссылок в Rust (aka <'a>). Старый код о ней ничего не знает и в расчёт её не берёт, потому передавать объекты с указанным временем жизни в него нельзя. И получается непреодолимый барьер между старым и новым кодом. А по факту получается, что никто их не будет использовать, потому что любые изменения даже инкрементально вносить бывает нелегко, а если это влияет на весь проект, то вообще беда.
Нет, то про что я говорю было бы совместимо со старым кодом по большей мере, так как анализом на графе можно узанть сколько будет жить объект в большом количестве тривиальных кейсов ... для не тривиальных придеться добавить флаг игнорирования валидации ссылок или добавить аттрибут при котором компилятор не будет ругаться ...
источник

DK

Denis Kotov in Конференция C++ Russia
От этого кода станет безопаснее что не маловажно в большом количестве кейсов где используется С++
источник