Closed EvilBeaver closed 7 years ago
Идеологически, на выполнение ничего не должно попадать до полной компиляции всех зависимостей.
package-loader всю малину портит :) он меняет глобальный контекст, он должен исполниться. декларатив vs императив 1:0.
Неа, он не портит. При чем тут он. Его как раз можно выполнять, но он не имеет права использовать библиотеки, которые сам же должен будет грузить. Это понятно и логично. Но исполняться он может. А вот загружаемые им библиотеки (которые попадут в контекст) - вот они работать не должны без команды.
Предполагается, что loader - это вообще отдельный oscript-процесс, системный.
package-loader тоже может использовать библиотеки и не те, которые сам загружает.
#Использовать tempfiles
Процедура ПриЗагрузкеБиблиотеки(...)
// Стырить DLL / OS, положить во временный каталог и загрузить
КонецПроцедуры
tempfiles должен загрузиться и исполниться, чтобы загрузчик загрузил библиотеку.
Да, но если загрузка tempfiles приведет к вызову ПриЗагрузкеБиблиотеки, то вечный цикл весьма вероятен. Я бы это запретил.
Отмечу, что все это еще и связано с #344
При проверке возможен NullReferenceException, если идет обращение к библиотекам. Это из-за того, что в режиме проверки синтаксиса библиотеки компилируются до инициализации глобального контекста.
А вообще, есть более глубокая проблема: библиотеки начинают выполняться до старта основного процесса, что есть неверно. И даже порождало какой-то глюк (уже не помню). Идеологически, на выполнение ничего не должно попадать до полной компиляции всех зависимостей.