[#3]
Re: Lua w nowym wcieleniu
@R-Tea,
post #1
Nie musi być uruchomiony ciągle. W bibliotece lua.library jest funkcja LuaNewState(), która tworzy instancję interpretera - do tej instancji ładujemy skrypt (z pamięci lub z pliku) i wykonujemy. Każdy program może sobie otworzyć lua.library i stworzyć swoją instancję, oczywiście lua.library i moduły binarne są w pamięci komputera tylko raz, niezależnie od tego czy aktualnie pracujących skryptów jest 5, czy 500.
Rzecz jasna, żeby wykonać skrypt nie wewnątrz jakiejś aplikacji, tylko jako zewnętrzny, musi być jakaś komenda, która ten skrypt wykona, odpowiednik ARexxowej "rx". Taka komenda (nazwana "luax") wkrótce będzie gotowa, nie jest to nic skomplikowanego.
Jeżeli jakiś program pozwala na wykorzystanie skryptów ARexxa odpalając je przez "rx", będzie można go "oszukać" tworząc linka "rx"->"luax" i będzie tak samo dobrze wykonywał skrypty Lua.
Co do maszyny Javy - jest tu pewne podobieństwo. Lua najpierw tłumaczy sobie skrypt do bytecodu i potem wykonuje go. Bytecode można sobie nawet zgrać i potem załadować z pliku. Zasadnicza różnica jest taka, że Lua nie gwarantuje przenośności bytecodu między różnymi systemami operacyjnymi, nie gwarantuje też istnienia kompatybilnych między systemami bibliotek np. do GUI czy grafiki niskopoziomowej. A to dlatego, że przenośność "binarek" nie jest celem Lua, tak jak jest celem Javy.