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