Что такое формат файла LUA?
Файл .lua содержит исходный код программы или расширения приложения, обычно для игры или встроенного приложения, написанный на языке программирования Lua. Исходный код - это совокупность команд, инструкций и определений переменных, написанных с использованием определенного синтаксиса. .lua является текстовым файлом, который можно открыть и отредактировать в любом текстовом редакторе; однако рекомендуется открывать такие файлы в инструментах редактирования, поддерживающих подсветку синтаксиса. Файл .lua может содержать как несколько коротких команд, так и полный код программы или модуля.
Синтаксис Lua черпает вдохновение в Pascal, а сам язык использует ассоциативные массивы (называемые *таблицами*) и расширяемую семантику через метатаблицы. Разработчики описывают Lua как:
- Надежный и проверенный - используется многими известными разработчиками и проектами, включая плагины Adobe Lightroom, систему шаблонов Scribunto в Wikipedia, системы видеонаблюдения и встроенные прошивки, а также в таких играх, как World of Warcraft (аддоны интерфейса) и оригинальная Angry Birds.
- Быстрый - широко признан самым быстрым интерпретируемым языком сценариев; LuaJIT, его вариант с JIT-компиляцией, еще больше повышает производительность.
- Кроссплатформенный - Lua распространяется как платформонезависимый исходный код на ANSI C, работающий на Linux, Windows, macOS, Android, iOS, встроенных системах и мейнфреймах.
- Встраиваемый - хорошо документирован и легко интегрируется через C API с кодом, написанным на других языках, как компилируемых, так и скриптовых.
- Простой и мощный - предлагает поддержку мета-функций (метатаблицы и метаметоды), которые можно расширять по мере необходимости.
- Легкий и бесплатный - интерпретатор добавляет к приложению примерно 300 КБ, а сам язык выпускается под лицензией MIT.
Lua был создан в 1993 году инженерами Роберту Иерузалимски, Вальдемаром Селешем и Луисом Энрике де Фигейреду в Папском католическом университете Рио-де-Жанейро (PUC-Rio). Он поддерживается исследовательской лабораторией LabLua при факультете компьютерных наук этого университета. «Lua» в переводе с португальского означает «луна». С момента создания было разработано несколько версий языка; текущий стабильный выпуск - Lua 5.4, представленный в 2020 году, который принес новый генерационный сборщик мусора и отдельный подтип целых чисел. Предварительно скомпилированный байт-код Lua хранится в файлах .LUAC и содержит бинарный магический заголовок \x1BLua вместо читаемого текста.
Безопасность и защита
РИСК: MEDIUMФайл .lua - это исходный КОД, поэтому его чтение безопасно, но ЗАПУСК ненадежного файла - нет: скрипты Lua могут вызывать os.execute, io.open, os.remove и загружать нативные библиотеки, поэтому вредоносный скрипт может удалять файлы, похищать данные или выполнять системные команды - именно так некоторые файлы .lua для читов в играх и «бесплатные скрипты» атакуют пользователей. Всегда читайте скачанный .lua перед запуском, берите игровые аддоны/моды только из надежных источников и остерегайтесь обфусцированных или байт-кодовых (.luac) скриптов, которые вы не можете проверить. Внутри изолированной среды (например, Roblox) риск ниже, но «скрипты» социальной инженерии все еще являются распространенным вектором мошенничества.
Детали формата
в двух словахПрограммы, открывающие файлы LUA
Технические подробности
глубокая спецификация| Тип файла | Текстовый исходный код (UTF-8 или ASCII) |
| MIME-тип | text/x-lua |
| Сигнатура файла (магические байты) | Отсутствуют для файлов исходного кода - обычный текст без бинарного заголовка. Предварительно скомпилированный байт-код использует 1B 4C 75 61 (ESC + «Lua») |
| Парадигма синтаксиса | Мультипарадигмальный: процедурный, объектно-ориентированный через метатаблицы и функциональный |
| Основная структура данных | Таблица (ассоциативный массив) - единственный составной тип, служащий массивом, словарем и объектом |
| Синтаксис комментариев | -- для однострочных; --[[ ... --]] для блочных комментариев |
| Поддержка Shebang | Файл исходного кода может начинаться с #!/usr/bin/env lua для прямого выполнения в Unix-подобных системах |
| Стандартная среда выполнения | lua (интерпретатор), luac (компилятор байт-кода), luajit (JIT-компилятор) |
| API для встраивания в хост | Компактный C API (lua_State, luaL_newstate, lua_call); доступны привязки для C++, Python, Java и других |
| Стандартная библиотека | io, os, string, table, math, coroutine, package, utf8, debug - минимальный размер по дизайну |
| Поддержка сопрограмм (coroutines) | Первоклассные асимметричные сопрограммы через coroutine.create / coroutine.resume / coroutine.yield |
| Сборщик мусора | Инкрементальный трехцветный mark-and-sweep; опциональный генерационный режим представлен в Lua 5.4 |
| Числовые типы | Отдельные подтипы целых чисел (64-бит по умолчанию) и чисел с плавающей запятой (двойная точность) начиная с Lua 5.3 |
| Система модулей | require() разрешает исходный код .lua и бинарные расширения C (.so / .dll) через package.path / package.cpath |
| Лицензия | Лицензия MIT (открытый исходный код, бесплатно для любого использования, включая коммерческое) |
| Выпущен | Lua created in 1993 at PUC-Rio (Pontifical Catholic University of Rio de Janeiro) |
| Открыть стандартное | Да · без роялти |
| Спецификация | www.lua.org |
Конвертации LUA
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах LUA.