EvilBeaver / OneScript

Исполняющая среда скриптов на языке 1С
http://oscript.io
Mozilla Public License 2.0
482 stars 107 forks source link

Режим -check падает в некоторых случаях #407

Closed EvilBeaver closed 7 years ago

EvilBeaver commented 7 years ago

При проверке возможен NullReferenceException, если идет обращение к библиотекам. Это из-за того, что в режиме проверки синтаксиса библиотеки компилируются до инициализации глобального контекста.

А вообще, есть более глубокая проблема: библиотеки начинают выполняться до старта основного процесса, что есть неверно. И даже порождало какой-то глюк (уже не помню). Идеологически, на выполнение ничего не должно попадать до полной компиляции всех зависимостей.

dmpas commented 7 years ago

Идеологически, на выполнение ничего не должно попадать до полной компиляции всех зависимостей.

package-loader всю малину портит :) он меняет глобальный контекст, он должен исполниться. декларатив vs императив 1:0.

EvilBeaver commented 7 years ago

Неа, он не портит. При чем тут он. Его как раз можно выполнять, но он не имеет права использовать библиотеки, которые сам же должен будет грузить. Это понятно и логично. Но исполняться он может. А вот загружаемые им библиотеки (которые попадут в контекст) - вот они работать не должны без команды.

Предполагается, что loader - это вообще отдельный oscript-процесс, системный.

dmpas commented 7 years ago

package-loader тоже может использовать библиотеки и не те, которые сам загружает.

#Использовать tempfiles
Процедура ПриЗагрузкеБиблиотеки(...)

   // Стырить DLL / OS, положить во временный каталог и загрузить

КонецПроцедуры

tempfiles должен загрузиться и исполниться, чтобы загрузчик загрузил библиотеку.

EvilBeaver commented 7 years ago

Да, но если загрузка tempfiles приведет к вызову ПриЗагрузкеБиблиотеки, то вечный цикл весьма вероятен. Я бы это запретил.

EvilBeaver commented 7 years ago

Отмечу, что все это еще и связано с #344