Standardowa implementacja Lua ma dwie cechy:
1. Standardowe moduły są statycznie zlinkowane z interpreterem.
2. Są w związku z tym automatycznie otwierane przy starcie interpretera i od razu dostępne.
Postanowiłem z tego zrezygnować dla oszczędzenia pamięci i przyspieszenia startu interpretera. Nie w każdym skrypcie są potrzebne wszystkie, zwłaszcza gdy Lua będzie używana w roli ARexxa, wtedy może się nawet okazać, że żaden moduł standardowy nie jest potrzebny. Jedyny moduł dostępny od razu to
package (inaczej nie dało by się użyć
require()). Pozostałe są bibliotekami umieszczonymi w
LIBS:Lua/ i są ładowane dynamicznie. Myślę, że to wyjaśnia sprawę
print().
Wyjaśnienie natomiast problemu z
read() jest prozaiczne. Moduł
io nie jest jeszcze gotowy... Standardowe moduły Lua to:
base,
package,
io,
string,
math i
system. Jak łatwo sprawdzić zaglądając do
LIBS:Lua/, gotowe są tylko
base i
string. Funkcja
read() jest z modułu
io, więc po pierwsze trzeba
require "io", po drugie na razie i tak nie ma tego modułu więc... Zdaję sobie sprawę, że ten moduł jest bardzo potrzebny, bo wszystkie demka Lua z niego korzystają

. W następnej wersji beta (to wciąż są wersje beta, pamiętajmy o tym) będzie.
Czemu te moduły tak cedzę po jednym, skoro standardową dystrybucję Lua kompiluje się przez "./configure; make"? Pakuję je w biblioteki ładowane dynamicznie (to nie są shared objects, to zwykłe morphosowe biblioteki). Dostosowuję je, aby bezpośrednio korzystały z API MorphOS-a z pominięciem libnixa. Zysk na szybkości i zajętości pamięci. Lua jest jednym z najszybszych języków skryptowych, a pominięcie warstwy abstrakcji wstawianej przez libnix dodatkowo trochę przyspieszy.
Co do książki – wystarczy przeczytać readme z archiwum, tam wszystko powyższe jest opisane. Poza kilkoma
require() na początku skryptu i chwilowym brakiem paru modułów, język
niczym się nie różni od standardu. Tak więc dostępna online książka Ierusalimschy'ego "Programming in Lua", czy też pozycja Junga i Browna "Beginning Lua Programming" są w pełni aktualne i odpowiednie.