Я только начал использовать Hammerspoon и написал код инициализации (https://gist.github.com/keithrbennett/103f57dfeb0c9346ee817825659fbf5a). Я был осторожен, чтобы не допустить утечки глобальных переменных, но друг указал мне на комментарий, опубликованный по адресу https://github.com/Hammerspoon/hammerspoon/issues/1103, который рекомендовал это сделать. В нем говорилось, что «как правило, все наблюдатели и таймеры должны быть записаны в глобальную переменную ...». Когда этот комментарий был опубликован в 2016 году, текущая версия Lua (см. https://www.lua.org/versions.html) была 5.3. Так и осталось.
Верно ли, что назначение обработчиков событий глобальным переменным полезно? Действительно ли существует риск того, что мои обработчики событий будут собраны мусором? Если да, это особенность или ошибка среды выполнения Hammerspoon? (Мне кажется, что это ошибка.) Если это функция, почему это разумно?