Co to jest format pliku LUA?
Plik .lua zawiera kod źródłowy programu lub rozszerzenia aplikacji, zazwyczaj dla gry lub aplikacji wbudowanej, napisany w języku skryptowym Lua. Kod źródłowy to zbiór poleceń, instrukcji i definicji zmiennych napisanych przy użyciu zdefiniowanej składni. .lua jest plikiem tekstowym, który można otworzyć i edytować za pomocą dowolnego edytora tekstu; zaleca się jednak otwieranie takich plików w narzędziach do edycji obsługujących podświetlanie składni. Plik .lua może zawierać szereg krótkich poleceń, jak również kompletny kod programu lub modułu.
Składnia Lua czerpie inspirację z języka Pascal, a język wykorzystuje tablice asocjacyjne (zwane *tablicami*) oraz rozszerzalną semantykę poprzez metatablice. Lua jest opisywana przez swoich twórców jako:
- Solidna i przetestowana - używana przez wielu uznanych deweloperów i w wielu projektach, w tym w wtyczkach Adobe Lightroom, systemie szablonów Scribunto Wikipedii, monitoringu CCTV i oprogramowaniu układowym oraz w grach takich jak World of Warcraft (dodatki UI) i oryginalne Angry Birds.
- Szybka - powszechnie uważana za najszybszy interpretowany język skryptowy; LuaJIT, jej wariant kompilowany just-in-time, jeszcze bardziej zwiększa wydajność.
- Wieloplatformowa - Lua jest dystrybuowana jako niezależny od platformy kod źródłowy ANSI C, działający na systemach Linux, Windows, macOS, Android, iOS, systemach wbudowanych i komputerach typu mainframe.
- Osadzalna - dobrze udokumentowana i łatwa do zintegrowania poprzez API C z kodem napisanym w innych językach, zarówno kompilowanych, jak i skryptowych.
- Prosta i potężna - oferuje wsparcie dla metafunkcji (metatablic i metametod), które można rozszerzać w zależności od potrzeb.
- Lekka i darmowa - interpreter dodaje około 300 KB do aplikacji, a język jest wydawany na licencji MIT.
Lua została stworzona w 1993 roku przez inżynierów informatyków Roberto Ierusalimschy'ego, Waldemara Celesa i Luiza Henrique de Figueiredo na Papieskim Uniwersytecie Katolickim w Rio de Janeiro (PUC-Rio). Jest utrzymywana przez laboratorium badawcze LabLua w Departamencie Informatyki tego uniwersytetu. „Lua” oznacza „księżyc” w języku portugalskim. Od czasu jej powstania opracowano wiele wersji języka; obecna stabilna wersja to Lua 5.4, wprowadzona w 2020 roku, która przyniosła nowy generacyjny mechanizm odśmiecania pamięci (garbage collector) i odrębny podtyp liczby całkowitej. Skompilowany kod bajtowy Lua jest przechowywany w plikach .LUAC i posiada binarny nagłówek magiczny \x1BLua zamiast czytelnego tekstu.
Bezpieczeństwo
RYZYKO: MEDIUMPlik .lua to KOD źródłowy, więc czytanie go jest bezpieczne, ale URUCHAMIANIE niezaufanego pliku już nie: skrypty Lua mogą wywoływać os.execute, io.open, os.remove i ładować natywne biblioteki, więc złośliwy skrypt może usuwać pliki, wykradać dane lub uruchamiać polecenia systemowe - dokładnie tak niektóre pliki .lua z oszustwami do gier i „darmowymi skryptami” atakują użytkowników. Zawsze czytaj pobrany plik .lua przed jego uruchomieniem, pobieraj dodatki/mody do gier tylko z renomowanych źródeł i uważaj na zaciemnione (obfuscated) skrypty lub kod bajtowy (.luac), których nie możesz sprawdzić. Wewnątrz piaskownicy (np. Roblox) ryzyko jest mniejsze, ale „skrypty” socjotechniczne nadal są powszechnym wektorem oszustw.
Szczegóły formatu
w pigułceProgramy otwierające pliki LUA
Szczegóły techniczne
specyfikacja| Typ pliku | Kod źródłowy w formacie tekstowym (UTF-8 lub ASCII) |
| Typ MIME | text/x-lua |
| Sygnatura pliku (magiczne bajty) | Brak dla plików źródłowych - zwykły tekst bez binarnego nagłówka. Skompilowany kod bajtowy używa 1B 4C 75 61 (ESC + „Lua”) |
| Paradygmat składni | Wieloparadygmatowy: proceduralny, obiektowy poprzez metatablice oraz funkcyjny |
| Podstawowa struktura danych | Tablica (tablica asocjacyjna) - jedyny typ złożony, służący jako tablice, słowniki i obiekty |
| Składnia komentarzy | -- dla jednoliniowych; --[[ ... --]] dla komentarzy blokowych |
| Obsługa Shebang | Plik źródłowy może zaczynać się od #!/usr/bin/env lua dla bezpośredniego wykonywania w systemach uniksopodobnych |
| Standardowe środowisko uruchomieniowe | lua (interpreter), luac (kompilator kodu bajtowego), luajit (kompilator JIT) |
| API do osadzania | Kompaktowe API C (lua_State, luaL_newstate, lua_call); dostępne powiązania dla C++, Python, Java i innych |
| Biblioteka standardowa | io, os, string, table, math, coroutine, package, utf8, debug - minimalny rozmiar z założenia |
| Obsługa współprogramów (coroutines) | Asymetryczne współprogramy pierwszej klasy poprzez coroutine.create / coroutine.resume / coroutine.yield |
| Garbage collector | Inkrementalny, trójkolorowy mark-and-sweep; opcjonalny tryb generacyjny wprowadzony w Lua 5.4 |
| Typy numeryczne | Odrębne podtypy całkowitoliczbowe (domyślnie 64-bitowe) i zmiennoprzecinkowe (podwójnej precyzji) od wersji Lua 5.3 |
| System modułów | require() rozwiązuje źródła .lua i binarne rozszerzenia C (.so / .dll) poprzez package.path / package.cpath |
| Licencja | Licencja MIT (open source, darmowa do dowolnego użytku, w tym komercyjnego) |
| Wydano | Lua created in 1993 at PUC-Rio (Pontifical Catholic University of Rio de Janeiro) |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | www.lua.org |
Konwersje LUA
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki LUA.