Size: a a a

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

2020 September 02

DK

Denis Kotov in Конференция C++ Russia
Не хочется чтобы марсоход завис из-за невалидной ссылки или еще чего-то ...
источник

DK

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

VK

Vladimir Krivopalov in Конференция C++ Russia
На самом деле спор разрешить довольно просто. Попробуйте накидать реализацию такого графа для clang. Если это действительно несложно, то с готовой реализацией можно смело писать предложение в комитет.
источник

DK

Denis Kotov in Конференция C++ Russia
Vladimir Krivopalov
На самом деле спор разрешить довольно просто. Попробуйте накидать реализацию такого графа для clang. Если это действительно несложно, то с готовой реализацией можно смело писать предложение в комитет.
И кто его там будет лобировать ?
источник

DK

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

DK

Denis Kotov in Конференция C++ Russia
У С++ коммитета не удобно следить за предложениями в последнее время из-за отказа от Google Group
источник

VK

Vladimir Krivopalov in Конференция C++ Russia
Denis Kotov
И кто его там будет лобировать ?
Есть представители комитета от России: https://stdcpp.ru
источник

DK

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

DK

Denis Kotov in Конференция C++ Russia
Но через Тор открывается конечно ...
источник

VK

Vladimir Krivopalov in Конференция C++ Russia
Здесь в чате есть и представители комитета, например, Антон Полухин. Можно написать им напрямую.

Вообще даже само наличие такой реализации, пусть в прототипе, было бы очень круто. Если Вы уже работали раньше с clang и реализовывали GC, то знакомы с его структурой, это очень поможет.

Поймите меня правильно, я это пишу искренне. Если такой механизм предложат в С++, я обеими руками буду голосовать за. В Rust он действительно мощный. Просто у меня есть большие сомнения как в простоте его реализации, так и в том, что его можно безболезненно внедрить, не ломая совместимость со старым кодом.
источник

DK

Denis Kotov in Конференция C++ Russia
Vladimir Krivopalov
Здесь в чате есть и представители комитета, например, Антон Полухин. Можно написать им напрямую.

Вообще даже само наличие такой реализации, пусть в прототипе, было бы очень круто. Если Вы уже работали раньше с clang и реализовывали GC, то знакомы с его структурой, это очень поможет.

Поймите меня правильно, я это пишу искренне. Если такой механизм предложат в С++, я обеими руками буду голосовать за. В Rust он действительно мощный. Просто у меня есть большие сомнения как в простоте его реализации, так и в том, что его можно безболезненно внедрить, не ломая совместимость со старым кодом.
Конечно идеально его не совместить со старым кодом, полноценное решение потребует перекомпиляции проекта с добавлением аттрибутов ... Но и преимущества громадные, компилятор действительно будет нашим другом )
источник

VK

Vladimir Krivopalov in Конференция C++ Russia
Проблема ведь в том, что не всё даже можно перекомпилировать. В больших проектах часто десятки сторонних библиотек, либо проект зависит от них через shared objects. То есть для нормальной работы ему нужны будут версии этих библиотек, тоже пересобранные с новым компилятором.

Преимущества значительные, полностью согласен. Меня самого очень радует, что в Rust при нормальной работе с временем жизни баги вида use-after-move невозможны, я на них в своё время заработал пару седых волос :) Но мне кажется, что добавить это в стандарт действительно непросто именно из-за боязни поломать обратную совместимость или сделать фичу непригодной.

К сожалению, если сегодня даже для исправления unique_ptr или std::regex комитет не готов ломать ABI, то такое фундаментальное нововведение наверняка отвергнут. И это тоже играет против С++ в долгосрочной перспективе.
источник

VK

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

DK

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

DK

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

VK

Vladimir Krivopalov in Конференция C++ Russia
Спасибо!
источник

DK

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

DK

Denis Kotov in Конференция C++ Russia
И еще я ему попозже API поменяю чуть чуть, сильно мне самому не нравится .create_object() -> можно спокойно использовать похожую функцию по названию как в стандарте make_gc например ...
источник

AP

Antony Polukhin in Конференция C++ Russia
Vladimir Krivopalov
Тоже круто, да. Но если валидацию ссылок в плюсы добавить будет очень непросто, если вообще возможно, то алгебраические типы и сопоставление на уровне языка обсуждали ещё лет пять назад, а воз и ныне там.
Ну как же. Паттерн матчинг во всю стараются втащить в C++23
источник

AP

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