Size: a a a

Compiler Development

2021 February 08

EP

Egor Pugin in Compiler Development
Михаил Бахтерев
Ссылки считает. На основе этого подсчёта закрывает файлы, сокеты всякое такое, освобождает страницы в памяти, делает reparenting дочерних процессов, разблокирует мьютексы. И т.д. и т.п.
почему это не ресурс и не явное управление ресурсами?
источник

МБ

Михаил Бахтерев... in Compiler Development
Andrei Kurosh
Так мы друг другу не противоречим. Любую логику, определяющую в рантайме, когда данные больше не понадобятся, можно теоретически выразить кучей условий вида if(...) delete x - но это сложно, бажно и дорого в поддержке, поэтому народ и изобретает автоматизированные способы типа арен, умных указателей и т.д.
Это ещё может быть неэффективно: растёт объём кода, который надо регулярно выполнять, трэшатся кэши.
источник

МБ

Михаил Бахтерев... in Compiler Development
Egor Pugin
почему это не ресурс и не явное управление ресурсами?
Не понял вопрос.
источник

ДК

Дмитрий К in Compiler Development
Andrei Kurosh
Это было бы правдой в мире, где программисты никогда не устают и не ошибаются
Это правда, где компилятор чекает лайфтаймы.
источник

AT

Alexander Tchitchigi... in Compiler Development
Egor Pugin
почему это не ресурс и не явное управление ресурсами?
Память — тоже ресурс. Особенно с т.з. ОС. Сборка мусора может и применяется ко всем типам ресурсов (в разных контекстах, про ФС уже упоминали, алсо Git, системы управления пакетами и т.п.). Неявное — потому что этим (в данном случае) занимается ядро ОС без каких бы то ни было усилий или "пинков" со стороны программиста.
источник

МБ

Михаил Бахтерев... in Compiler Development
Дмитрий К
Это правда, где компилятор чекает лайфтаймы.
Как компилятор может прочекать лайфтаймы, скажем, адаптивной вычислительной сетки, используемой для прогноза погоды?
источник

AK

Andrei Kurosh in Compiler Development
Дмитрий К
Это правда, где компилятор чекает лайфтаймы.
Компилятор не всегда может прочекать лайфтаймы автоматически
источник

AK

Andrei Kurosh in Compiler Development
Да даже на банальном примере с бинарным деревом можно оценить, сколько бойлерплейта нужно чтобы «компилятор который чекает лайфтаймы» это принял
источник

МБ

Михаил Бахтерев... in Compiler Development
Может, и может прочекать. Вопрос в том, как... Любопытно было бы посмотреть.
источник

ДК

Дмитрий К in Compiler Development
Михаил Бахтерев
Как компилятор может прочекать лайфтаймы, скажем, адаптивной вычислительной сетки, используемой для прогноза погоды?
Боюсь я не знаком с "адаптивными вычислительными сетками".
источник

ДК

Дмитрий К in Compiler Development
Andrei Kurosh
Да даже на банальном примере с бинарным деревом можно оценить, сколько бойлерплейта нужно чтобы «компилятор который чекает лайфтаймы» это принял
Тут как раз всё просто - корень владеет всеми узлами. Все добавления и удаления идут через корень. Пока жив корень - живо и его имущество.
источник

МБ

Михаил Бахтерев... in Compiler Development
Дмитрий К
Боюсь я не знаком с "адаптивными вычислительными сетками".
Хорошо... Что-нибудь такое: вот есть у нас чат. И из чата кого-то кикают, и надо вычистить все его сообщения из истории. Лайфтайм сообщения зависит от решения модератора, не известного на этапе компиляции...
источник

ДК

Дмитрий К in Compiler Development
Михаил Бахтерев
Хорошо... Что-нибудь такое: вот есть у нас чат. И из чата кого-то кикают, и надо вычистить все его сообщения из истории. Лайфтайм сообщения зависит от решения модератора, не известного на этапе компиляции...
Компилятор может проконтролировать, что сообщения не будут жить дольше, чем владеющий ими чат.
источник

МБ

Михаил Бахтерев... in Compiler Development
Дмитрий К
Компилятор может проконтролировать, что сообщения не будут жить дольше, чем владеющий ими чат.
Хм... Много ли от этого пользы? Чат живёт неопределённо долго. А хотелось бы, чтобы память освобождалась.
источник

AT

Alexander Tchitchigi... in Compiler Development
Напоминаю, что @nin_jin — автор "универсального формата сериализации tree".
источник

ДК

Дмитрий К in Compiler Development
Михаил Бахтерев
Хм... Много ли от этого пользы? Чат живёт неопределённо долго. А хотелось бы, чтобы память освобождалась.
Так она освободится при удалении этих сообщений из чата, ибо только он ими владеет.
источник

ДК

Дмитрий К in Compiler Development
Alexander Tchitchigin
Напоминаю, что @nin_jin — автор "универсального формата сериализации tree".
Я много чего автор. В данном случае скорее релевантно то, что я автор $mol_atom, который мемоизирует вычисления, автоматически инвалидирует кеш при изменении зависимостей и автоматически его очищает, когда он никому не интересен.
источник

МБ

Михаил Бахтерев... in Compiler Development
Дмитрий К
Так она освободится при удалении этих сообщений из чата, ибо только он ими владеет.
А если есть ещё подсистема, которая считает статистику по сообщениям, а сообщения сами ссылаются на другие сообщения? Хм... Копировать придётся?
источник

AT

Alexander Tchitchigi... in Compiler Development
Михаил Бахтерев
А если есть ещё подсистема, которая считает статистику по сообщениям, а сообщения сами ссылаются на другие сообщения? Хм... Копировать придётся?
Послушайте, Михаил, как мы только что узнали, уважаемый Дим — опытный разработчик, давайте не будем унижать его интеллектуальные способности, объясняя ему очевидные для всех вещи. 😊
источник

ДК

Дмитрий К in Compiler Development
Михаил Бахтерев
А если есть ещё подсистема, которая считает статистику по сообщениям, а сообщения сами ссылаются на другие сообщения? Хм... Копировать придётся?
Не обязательно. В другие части системы выдаётся не прямая ссылка на сообщение, а прокси, который спрашивает у чата "дай данные сообщения с таким-то идентификатором". Если такого сообщения нет в чате - тут есть разные варианты от бросания исключения, до создания сообщения налету.
источник