Skip to content

Bayselonarrend/Lyna

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Луна

Механизм запуска 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 файлу>

API

Выполнение кода

ВыполнитьКодИзСтроки(Код)

Выполняет Lua код, переданный в виде строки.

Параметр Тип Описание
Код Строка Программный код для выполнения

Возвращаемое значение: Произвольный - Результат выполнения


ВыполнитьКодИзФайла(Путь)

Выполняет Lua код из указанного текстового файла.

Параметр Тип Описание
Путь Строка Путь к файлу кода

Возвращаемое значение: Произвольный - Результат выполнения


Компиляция и байт-код

СкомпилироватьКодИзСтроки(Код)

Преобразует исходный код в байт-код Lua.

Параметр Тип Описание
Код Строка Программный код для компиляции

Возвращаемое значение: Произвольный - Результат выполнения


ВыполнитьБайтКод(БайтКод)

Выполняет ранее скомпилированный код.

Параметр Тип Описание
БайтКод ДвоичныеДанные Байт код для выполнения

Возвращаемое значение: Произвольный - Результат выполнения


ВыполнитьБайтКодФайла(Путь)

Выполняет байт код из указанного файла.

Параметр Тип Описание
Путь Строка Путь к файлу с байт кодом

Возвращаемое значение: Произвольный - Результат выполнения


Вызов функций

ВызватьФункцию(ИмяФункции, Аргументы)

Вызывает функцию, инициализированную ранее выполненным кодом.

Параметр Тип Описание
ИмяФункции Строка Имя функции для вызова
Аргументы Массив Из Произвольный Аргументы функции

Возвращаемое значение: Произвольный - Результат выполнения


Управление переменными

УстановитьГлобальнуюПеременную(Имя, Значение)

Устанавливает значение глобальной переменной в контексте.

Параметр Тип Описание
Имя Строка Имя переменной
Значение Произвольный Значение переменной

ПолучитьГлобальнуюПеременную(Имя)

Получает значение глобальной переменной контекста.

Параметр Тип Описание
Имя Строка Имя переменной

Возвращаемое значение: Произвольный - Результат выполнения


Управление пакетами

ДобавитьПакетИзСтроки(ИмяПакета, Код)

Добавляет код из строки как пакет с указанным именем.

Параметр Тип Описание
ИмяПакета Строка Имя пакета, по которому он будет доступен после добавления
Код Строка Программный код пакета

ДобавитьПакетИзФайла(ИмяПакета, Путь)

Добавляет код из файла как пакет с указанным именем.

Параметр Тип Описание
ИмяПакета Строка Имя пакета, по которому он будет доступен после добавления
Путь Строка Путь к файлу кода

ПолучитьСписокПакетов()

Получает список добавленных в окружение пакетов.

Возвращаемое значение: Массив Из Строка - Результат выполнения


Управление VM

Перезапустить()

Очищает контекст выполнения и перезапускает LuaVM.

About

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

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published