* The luaopen_* functions (to open libraries) cannot be called directly, like a regular C function. They must be called through Lua, like a Lua function.
* Function lua_open was replaced by lua_newstate to allow the user to set a memory-allocation function. You can use luaL_newstate from the standard library to create a state with a standard allocation function (based on realloc).
lua_open() lze normalne zavolat, nebot je v hlavickovem souboru zadefinovana jako makro, ktere vola luaL_newstate. Volani lua_newstate() skutecne ma smysl pouze tehdy, kdyz potrebujeme pamet alokovat jinym zpusobem, nez to delaji klasicke libc funkce.
luaopen_* lze samozrejme nahradit luaL_openlibs(). To varovani je napsane proto, ze funkce s parametry se skutecne museji volat pres lua_call(), protoze zpusob ulozeni parametru na zasobniku je v tomto pripade odlisny od std. cecka - opacne poradi + je pridany pocet parametru.
lua_open trochu uhyba z lua konvence prefixu, kde lua_ je pro jadro a luaL_ pro auxlib, takze muze byt matouci, ze bez #include <lauxlib.h> nebude fungovat (ackoli by, podle prefixu, melo). proto je IMO podporovano jenom z duvodu zpetne kompatibility.
V kazdem pripade ale mate pravdu v tom, ze propriste budu presne specifikovat verzi Lua (mezi 5.0.x a 5.1 jsou zmeny v API) a taktez budu pouzivat nejnovejsi API, tj. to z 5.1, aby zbytecne nedochazelo k rozporum napriklad pri cteni aktualni dokumentace. Diky za upozorneni!
Ano, to je pravda. U mě výpis "ar t /usr/lib/liblua50.a" vypadá pouze takto :
lapi.o
lcode.o
ldebug.o
ldo.o
ldump.o
lfunc.o
lgc.o
llex.o
lmem.o
lobject.o
lopcodes.o
lparser.o
lstate.o
lstring.o
ltable.o
ltests.o
ltm.o
lundump.o
lvm.o
lzio.o