Size: a a a

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

2020 May 22

AV

Alexey Veselovsky in Конференция C++ Russia
сколько кода придется втянуть в hello world?
источник

AB

Anton Bikineev in Конференция C++ Russia
Alexey Veselovsky
А насколько этот GC отрываем от самой хромовой кодобазы?
Супер отличный вопрос 🙂
Я долго драйвил тему, чтобы оторвать его полностью от всех зависимостей. К сожалению, мы на данный момент только решили перенести его из Chromium в V8, и работа над этим идет как раз сейчас. Теоретически, скоро (или в эскпериментальном виде сейчас) можно притянуть V8 и заюзать cppgc (сам сборщик).
Надеюсь, скоро получится сделать сборщик совершенно независимым, наподобие других плюсовых гугловых библиотек, вроде benchmark, gtest, etc.
источник

AV

Alexey Veselovsky in Конференция C++ Russia
Anton Bikineev
Супер отличный вопрос 🙂
Я долго драйвил тему, чтобы оторвать его полностью от всех зависимостей. К сожалению, мы на данный момент только решили перенести его из Chromium в V8, и работа над этим идет как раз сейчас. Теоретически, скоро (или в эскпериментальном виде сейчас) можно притянуть V8 и заюзать cppgc (сам сборщик).
Надеюсь, скоро получится сделать сборщик совершенно независимым, наподобие других плюсовых гугловых библиотек, вроде benchmark, gtest, etc.
было бы круто!
источник

AV

Alexey Veselovsky in Конференция C++ Russia
потом втащить в буст, а потом уже в стандарт...  🙂
источник

AB

Anton Bikineev in Конференция C++ Russia
Мы часто обсуждаем, должно ли это быть частью Стандарта. При этом есть люди совершенно против (вроде Чандлера), а есть кто и за.
источник

AB

Anton Bikineev in Конференция C++ Russia
Мне нравится вариант, где сброщик - отдельная библиотека, но, к сожалению, без поддержки языка сделать сборщик довольно таки трудно.
источник

AB

Anton Bikineev in Конференция C++ Russia
С поддержкой языка есть много возможностей для оптимизаций.
источник

AV

Alexey Veselovsky in Конференция C++ Russia
гм. а где можно пример кода использующего этот GC посмотреть? в идеале - линк на исходник на гитхабе. Можно прям на строчку кода.
источник

AB

Anton Bikineev in Конференция C++ Russia
источник

AV

Alexey Veselovsky in Конференция C++ Russia
О! Круто, спасибо!
источник

AB

Anton Bikineev in Конференция C++ Russia
Основная идея в том, чтобы дать метамагии и рантайму понять, как работать с объектами, и для этого предоставить функцию-трассировки, чтобы сборщик знал как трассировать определенный класс. Это приносит некоторый бойлерплэйт, который я очень жду, чтоб метаклассы пофиксили 🙂
источник

AV

Alexey Veselovsky in Конференция C++ Russia
Забавно. Гугл пошел по пути превращения С++ в D, а мозилла придумала Rust, чтобы как-то совсем без GC обойтись. Что-то мне подсказывает, что в расте такие графы крутить будет довольно больно и всё равно черевато утечками памяти.
источник

AV

Alexey Veselovsky in Конференция C++ Russia
да, кстати. в gcc же тоже сборщик мусора 🙂
источник

AV

Alexey Veselovsky in Конференция C++ Russia
то есть внутри компилятора для менеджмента памяти - в компиляторе ж тоже огромные графы
источник

AZ

Alexander Zaitsev in Конференция C++ Russia
часто встречаю, что в больших системах колхозят свои подобия сборки мусора
источник

AV

Alexey Veselovsky in Конференция C++ Russia
значит такая балалайка нужна
источник

AV

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

AB

Anton Bikineev in Конференция C++ Russia
Alexey Veselovsky
Забавно. Гугл пошел по пути превращения С++ в D, а мозилла придумала Rust, чтобы как-то совсем без GC обойтись. Что-то мне подсказывает, что в расте такие графы крутить будет довольно больно и всё равно черевато утечками памяти.
Я не знаток раста совсем, но слышал от друзей разговоры по этому поводу.

Насколько я понимаю, фундаментальная идея борров-чекера в том, что в один момент времени может быть только один владелец. Для графов объектов, где есть циклические ссылки, в rust приходится либо переходить на димнамический борроу-чекер (RefCell вроде), либо просто в unsafe, если перфоманс критичен. Т.е. даже простая структура данных, как двусвязный список или дерево с ссылками на родителей, реализуется в обход борроу-чекера.

В сложных системах со сложными графами циклические ссылки - неизбежность. Поэтому интересно, как mozilla решила это в servo. Я не знаток раста, поэтому, скорее всего, могу упускать что-либо.
источник

TS

Timur Safin in Конференция C++ Russia
FWIW - в бекэнде Acronis Backup тоже был как-то свой C++ сборщик мусора. Но весь вышел
источник

AB

Anton Bikineev in Конференция C++ Russia
Alexey Veselovsky
более того, я не удивлюсь, если она и в расте появится
кстати говоря, интерн, который занимался precise stack scanning, работал (или работает) над GC в раст
источник