Export module_cache.c api
Динамические библиоти (dylib, so) используются в тарантуле в двух местах:
- Для загрузки хранимых процедур через интерфейс
module_cache.c
(приватный) - Для загрузки Lua модулей с помощью
require
Каждый из них делает dlopen
самостоятельно, и использование одной библиотеки для двух целей приводит к тому, что она загружается в адресное пространство дважды. Как результат, существующие static переменные начинают ссылаться на два разных адреса, и это доставляет неприятности.
Указанную проблему можно было бы решить, реализовав новый package.loader
, который вместо dlopen
использовал бы module_cache
, но мы пока этого делать не будем.
В рамках данного тикета предлагается просто сделать интерфейс module_cache
публичным, т.к. динамические библиотеки также нужны нам для плагинов Picodata (picodata/picodata/picodata#123).