Подтвердить что ты не робот

Использует ли newLISP сбор мусора?

Эта страница была довольно запутанной для меня.

В нем говорится:

Управление памятью в newLISP не зависит от алгоритма сбора мусора. Память не отмечена или не подсчитана по ссылке. Вместо этого решение о том, следует ли удалить вновь созданный объект памяти, выполняется сразу после создания объекта памяти.

newLISP следует только правилу с одной ссылкой (ORO). Каждый объект памяти, на который не ссылается символ, устарел, как только newLISP достигает более высокого уровня оценки во время оценки выражения. Объекты в newLISP (исключая символы и контексты) передаются по значению в другие пользовательские функции. В результате каждый объект newLISP требует только одной ссылки.

Далее, я вижу:

Все списки, массивы и строки передаются и выводятся из встроенных функций по ссылке.

Я не могу понять эти два.

Как newLISP "не полагается на алгоритм сбора мусора", и все же передает вещи по ссылке?
Например, что бы он сделал в случае круговых ссылок?!

Возможно ли, что LISP не будет использовать сбор мусора, без снижения производительности? (Я предполагаю, что вы всегда можете передавать вещи по достоинству или всегда можете выполнять сканирование полной кучи всякий раз, когда вы думаете, что это может быть необходимо, но тогда мне кажется, что это безумно повредит вашей работе.)
Если да, то как бы это касалось циркулярных ссылок? Если нет, что они означают?

4b9b3361

Ответ 1

Возможно, чтение http://www.newlisp.org/ExpressionEvaluation.html помогает лучше понять http://www.newlisp.org/MemoryManagement.html. Что касается круговых ссылок: они не существуют в newLISP, их невозможно создать. Вопрос о производительности рассматривается в дополнительном разделе этой бумаги для управления памятью и здесь: http://www.newlisp.org/benchmarks/

Может работать и экспериментировать с newLISP, т.е. пытаться создать круговую ссылку, - прояснит большинство вопросов.