-
Nikitos создал
Пробел из docs/TASKS.md §12.5 (неблокирующий hot reload). Раньше перезапуск происходил ПРЯМО В МОМЕНТ обнаружения правки или нажатия F5: старый рантайм уничтожался посреди обработки события, и кадр оставался недоигранным. * r2d_script_request_reload()/r2d_script_take_reload_request(): запрос копится, а исполняется главным циклом после того, как кадр отрисован и профайлер закрыт — JS-вызовов в этом кадре больше не будет; * F5 и слежение за файлами теперь ЗАПРАШИВАЮТ перезапуск, а не делают его сразу; в журнал идёт причина (правка файлов, F5, текст игры); первый запрос важнее последующих; * если новый код не загрузился, движок пишет ошибку и продолжает работать со старым рантаймом (r2d_script_reload возвращает false — это уже было); * $.script: request/pending/hotReload/count; биндинги engine.requestReload, engine.reloadPending, engine.hotReload. Честно задокументировано главное ограничение: перезапуск уничтожает весь JS-heap, поэтому состояние надо сохранять через $.save/$.fs — «частичной замены модуля» не появилось. Проверка: tests/agent/highlevel_reload_test.py (8 проверок: запрос ждёт границы кадра, в том же кадре рантайм отвечает, после кадра запрос снят и игра загрузилась заново), полный набор qjs и агентских тестов зелёный.
6633e54a