Механизм запуска скриптов на Lua
Пакет лежит в основном пуле хаба, а opm знает этот хаб по умолчанию: короткой формы достаточно.
opm install lynaСкачанный файл ставится командой opm install -f <файл> — сеть для этого уже не нужна.
Описание
Описание
Луна - это библиотека интеграции языка программирования 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 файлу>
API
Выполнение кода
ВыполнитьКодИзСтроки(Код)
Выполняет Lua код, переданный в виде строки.
| Параметр | Тип | Описание |
|---|---|---|
Код |
Строка | Программный код для выполнения |
Возвращаемое значение: Произвольный - Результат выполнения
ВыполнитьКодИзФайла(Путь)
Выполняет Lua код из указанного текстового файла.
| Параметр | Тип | Описание |
|---|---|---|
Путь |
Строка | Путь к файлу кода |
Возвращаемое значение: Произвольный - Результат выполнения
Компиляция и байт-код
СкомпилироватьКодИзСтроки(Код)
Преобразует исходный код в байт-код Lua.
| Параметр | Тип | Описание |
|---|---|---|
Код |
Строка | Программный код для компиляции |
Возвращаемое значение: Произвольный - Результат выполнения
ВыполнитьБайтКод(БайтКод)
Выполняет ранее скомпилированный код.
| Параметр | Тип | Описание |
|---|---|---|
БайтКод |
ДвоичныеДанные | Байт код для выполнения |
Возвращаемое значение: Произвольный - Результат выполнения
ВыполнитьБайтКодФайла(Путь)
Выполняет байт код из указанного файла.
| Параметр | Тип | Описание |
|---|---|---|
Путь |
Строка | Путь к файлу с байт кодом |
Возвращаемое значение: Произвольный - Результат выполнения
Вызов функций
ВызватьФункцию(ИмяФункции, Аргументы)
Вызывает функцию, инициализированную ранее выполненным кодом.
| Параметр | Тип | Описание |
|---|---|---|
ИмяФункции |
Строка | Имя функции для вызова |
Аргументы |
Массив Из Произвольный | Аргументы функции |
Возвращаемое значение: Произвольный - Результат выполнения
Управление переменными
УстановитьГлобальнуюПеременную(Имя, Значение)
Устанавливает значение глобальной переменной в контексте.
| Параметр | Тип | Описание |
|---|---|---|
Имя |
Строка | Имя переменной |
Значение |
Произвольный | Значение переменной |
ПолучитьГлобальнуюПеременную(Имя)
Получает значение глобальной переменной контекста.
| Параметр | Тип | Описание |
|---|---|---|
Имя |
Строка | Имя переменной |
Возвращаемое значение: Произвольный - Результат выполнения
Управление пакетами
ДобавитьПакетИзСтроки(ИмяПакета, Код)
Добавляет код из строки как пакет с указанным именем.
| Параметр | Тип | Описание |
|---|---|---|
ИмяПакета |
Строка | Имя пакета, по которому он будет доступен после добавления |
Код |
Строка | Программный код пакета |
ДобавитьПакетИзФайла(ИмяПакета, Путь)
Добавляет код из файла как пакет с указанным именем.
| Параметр | Тип | Описание |
|---|---|---|
ИмяПакета |
Строка | Имя пакета, по которому он будет доступен после добавления |
Путь |
Строка | Путь к файлу кода |
ПолучитьСписокПакетов()
Получает список добавленных в окружение пакетов.
Возвращаемое значение: Массив Из Строка - Результат выполнения
Управление VM
Перезапустить()
Очищает контекст выполнения и перезапускает LuaVM.