Я сейчас экспериментирую с системой плагинов Голанга. Проблема, с которой я столкнулся при тестировании, заключается в том, что размер файлов плагинов относительно велик.
Приложение, загружающее плагин, будет упоминаться как "хост".
Размер самого хост-приложения составляет ~ 50 МБ, поскольку он является веб-приложением и должен быть расширен за счет функциональности плагина.
Я запустил небольшой загрузчик плагинов для запуска плагинов.
Плагины могут использовать уже существующие API в приложении, например, для доступа к базе данных.
Я подготовил пример плагина для этого вопроса. Размер файла плагина .so составляет ~ 39 МБ. Это дает мне обоснованное подозрение, что плагин также содержит исходный код из хост-приложения.
Команда, использованная для создания main.so
:
go build -ldflags="-s -w" --buildmode=plugin main.go
Можно ли "удалить" дублированный исходный код из приложения, чтобы уменьшить размер файла, поскольку он уже загружен во время выполнения, когда загружается плагин?
Плагин-загрузчик: https://github.com/jonasfranz/gitea/blob/feature/plugin/modules/plugins/loader.go
Пример плагина: https://git.jonasfranz.software/JonasFranzDEV/giteaplugin