lynaпакет
Пакет лежит в основном пуле хаба: короткой формы достаточно, если хаб прописан сервером пакетов в opm.cfg.
opm install lynaУстановка на opm младше 1.7.0
Легаси-флоу. Клиент младше 1.7.0 адрес пула в аргументе не разбирает: пул сначала прописывают сервером пакетов, и только потом ставят через него. На 1.7.0 и новее этот раздел не нужен — хватает команды из шапки страницы.
Добавьте пул сервером пакетов в opm.cfg. Порт продублирован в «Сервер»: у opm push поле «Порт» не читается.
{
"СервераПакетов": [
{
"Имя": "default",
"Сервер": "https://hub.1cdevelopers.ru",
"Порт": 443,
"ПутьНаСервере": "/api/v1/pools/default/download/",
"РесурсПубликацииПакетов": "/api/v1/pools/default/push",
"Приоритет": 1
}
]
}И ставьте пакет, указывая сервер:
opm install -m default lynaОписание
Описание
Луна - это библиотека интеграции языка программирования 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.