Механизм запуска Lua-скриптов внутри OneScript
Луна - это библиотека интеграции языка программирования Lua с OneScript. Она представляет из себя Native API компоненту на языке Rust, в основе которой лежит крейт mlua, а также программную обертку вокруг нее. Цель Луны - дать разработчику возможность увеличить скорость выполнения своих скриптов через вынесение тяжелой логики на более производительный движок Lua, при этом не отказываясь от разработки решений в рамках экосистемы OneScript
- Выполнение Lua-кода: Запуск скриптов из строки или файла
- Компиляция в байт-код: Предварительная компиляция для повышения производительности
- Управление переменными: Установка и получение глобальных переменных
- Вызов функций: Прямой вызов Lua-функций с передачей параметров
- Система пакетов: Загрузка и управление Lua-модулями
- Перезапуск VM: Сброс состояния виртуальной машины
Выполнение кода из строки
Код = "
|function countValuesGreaterThan(array, threshold)
| local count = 0
|
| for _, value in ipairs(array) do
| if value > threshold then
| count = count + 1
| end
| end
|
| return count
|end";
Lua = Новый Lua();
Lua.ВыполнитьКодИзСтроки(Код);
МассивАргументов = Новый Массив;
МассивАргументов.Добавить(МассивЗначений);
МассивАргументов.Добавить(500);
Результат = Lua.ВызватьФункцию("countValuesGreaterThan", МассивАргументов);Выполнение кода из заранее скомпилированного файла
Lua = Новый Lua();
Результат = Lua.ВыполнитьБайтКодФайла(ПутьКФайлу);
МассивАргументов = Новый Массив;
МассивАргументов.Добавить(МассивЗначений);
МассивАргументов.Добавить(500);
Результат = Lua.ВызватьФункцию("countValuesGreaterThan", МассивАргументов); Для начала работы необходимо клонировать репозиторий и собрать OSPX пакет в каталоге /src/os/ при помощи команды
opm buildУстановить собранный пакет можно при помощи команды
opm install -f <путь к ospx файлу>Выполняет Lua код, переданный в виде строки.
| Параметр | Тип | Описание |
|---|---|---|
Код |
Строка | Программный код для выполнения |
Возвращаемое значение: Произвольный - Результат выполнения
Выполняет Lua код из указанного текстового файла.
| Параметр | Тип | Описание |
|---|---|---|
Путь |
Строка | Путь к файлу кода |
Возвращаемое значение: Произвольный - Результат выполнения
Преобразует исходный код в байт-код Lua.
| Параметр | Тип | Описание |
|---|---|---|
Код |
Строка | Программный код для компиляции |
Возвращаемое значение: Произвольный - Результат выполнения
Выполняет ранее скомпилированный код.
| Параметр | Тип | Описание |
|---|---|---|
БайтКод |
ДвоичныеДанные | Байт код для выполнения |
Возвращаемое значение: Произвольный - Результат выполнения
Выполняет байт код из указанного файла.
| Параметр | Тип | Описание |
|---|---|---|
Путь |
Строка | Путь к файлу с байт кодом |
Возвращаемое значение: Произвольный - Результат выполнения
Вызывает функцию, инициализированную ранее выполненным кодом.
| Параметр | Тип | Описание |
|---|---|---|
ИмяФункции |
Строка | Имя функции для вызова |
Аргументы |
Массив Из Произвольный | Аргументы функции |
Возвращаемое значение: Произвольный - Результат выполнения
Устанавливает значение глобальной переменной в контексте.
| Параметр | Тип | Описание |
|---|---|---|
Имя |
Строка | Имя переменной |
Значение |
Произвольный | Значение переменной |
Получает значение глобальной переменной контекста.
| Параметр | Тип | Описание |
|---|---|---|
Имя |
Строка | Имя переменной |
Возвращаемое значение: Произвольный - Результат выполнения
Добавляет код из строки как пакет с указанным именем.
| Параметр | Тип | Описание |
|---|---|---|
ИмяПакета |
Строка | Имя пакета, по которому он будет доступен после добавления |
Код |
Строка | Программный код пакета |
Добавляет код из файла как пакет с указанным именем.
| Параметр | Тип | Описание |
|---|---|---|
ИмяПакета |
Строка | Имя пакета, по которому он будет доступен после добавления |
Путь |
Строка | Путь к файлу кода |
Получает список добавленных в окружение пакетов.
Возвращаемое значение: Массив Из Строка - Результат выполнения
Очищает контекст выполнения и перезапускает LuaVM.
