Документация Engee

Загрузка модулей

Функция Base.require отвечает за загрузку модулей и управление кэшем предварительной компиляции. Это реализация оператора import.

Экспериментальные функции

Описанные ниже функции являются экспериментальными и не входят в стабильную версию API Julia. Перед их использованием для сборки уточните, каков их текущий статус и могут ли они измениться в ближайшее время.

Обратные вызовы загрузки модулей

Для отслеживания модулей, загружаемых функцией Base.require, можно зарегистрировать обратный вызов.

loaded_packages = Channel{Symbol}()
callback = (mod::Symbol) -> put!(loaded_packages, mod)
push!(Base.package_callbacks, callback)

Обратите внимание, что символ, передаваемый в обратный вызов, является неуникальным идентификатором. Поставщик обратного вызова должен отследить цепочку модулей, чтобы определить полное имя загружаемой привязки.

Ниже приведен пример такого обратного вызова:

# Получаем полное имя модуля.
function module_fqn(name::Symbol)
    fqn = fullname(Base.root_module(name))
    return join(fqn, '.')
end