Lyna
Механизм запуска Lua-скриптов внутри OneScript
Install / Use
/learn @Bayselonarrend/LynaREADME
Описание
Луна - это библиотека интеграции языка программирования 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.
Related Skills
node-connect
343.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
90.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
343.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
343.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
