SkillAgentSearch skills...

Lyna

Механизм запуска Lua-скриптов внутри OneScript

Install / Use

/learn @Bayselonarrend/Lyna
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<img src="media/logo_m.png?1" align="left" width="64"> <h1>Луна</h1> <p>Механизм запуска Lua-скриптов внутри OneScript</p>

Описание

Луна - это библиотека интеграции языка программирования 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

View on GitHub
GitHub Stars11
CategoryDevelopment
Updated12d ago
Forks1

Languages

Rust

Security Score

80/100

Audited on Mar 19, 2026

No findings