История изменений
Исправление AKonia, (текущая версия) :
Во время исполнения ? Ну вообще гипотетически можно например сделать mmap исполняемого кода нового бинарника и переключиться на него. Другой вопрос, что с танцами придётся и оригинальный бинарник загружать, по сути по принципу ВМ, когда ВМ компилирует пользовательский код и в исполняемой памяти запускает его, но это как по мне звучит странно, да и скорее всего помимо рисков написать ужасный код вместо простого, но рабочего вызывает вопросы мотивация. Хотя есть более простой вариант - буквально держать ВМ какого-нибудь языка сценариев, типо Lua и соответственно при обновлении обеспечить 1) хранение 2) процедуру восстановления состояния в новой версии по состоянию ВМ старой. В случае бинарника такое тоже возможно, но только если приложение разбить на плагины, обновлять только их, при условии, если можете обеспечить подгрузку символов с помощью libdl
при условии низкосвязности среды, таким образом, чтобы выгрузка старого модуля не грохала приложение.
Исходная версия AKonia, :
Во время исполнения ? Ну вообще гипотетически можно например сделать mmap исполняемого кода нового бинарника и переключиться на него. Другой вопрос, что с танцами придётся и оригинальный бинарник загружать, по сути по принципу ВМ, когда ВМ компилирует пользовательский код и в исполняемой памяти запускает его, но это как по мне звучит странно, да и скорее всего помимо рисков написать ужасный код вместо простого, но рабочего вызывает вопросы мотивация. Хотя есть более простой вариант - буквально держать ВМ какого-нибудь языка сценариев, типо Lua и соответственно при обновлении обеспечить 1) хранение 2) процедуру восстановления состояния в новой версии по состоянию ВМ старой.