Я создаю язык. Во-первых, я хочу решить, какой код генерировать. Язык будет иметь лексические замыкания и наследование на основе прототипов, подобное javascript. Но я не фанат gc и стараюсь избегать как можно больше. Итак, вопрос: существует ли элегантный способ реализовать замыкания, не прибегая к выделению кадра стека в куче и предоставлению его сборщику мусора?
Мои первые мысли:
- Использовать подсчет ссылок и собирать циклы мусора (мне это не очень нравится)
- Используйте стек спагетти (выглядит очень неэффективно)
- Ограничить формирование замыканий некоторыми контекстами таким образом, чтобы я мог избежать использования стека обратных адресов и стека локальных компьютеров.
Я не буду использовать язык высокого уровня и не буду следовать никаким соглашениям о вызовах, поэтому могу разбить стек столько, сколько захочу.
(Редактировать: я знаю, что подсчет ссылок является формой сборки мусора, но я использую gc в более общем смысле)