[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: Current state of 5.1, and the PS2.
- From: Rici Lake <lua@...>
- Date: Thu, 2 Nov 2006 21:03:05 -0500
On 2-Nov-06, at 8:49 PM, Glenn Maynard wrote:
(What is it that requires these functions to be called this way?)
Some libraries require the existence of a current function environment,
and may change it to some other table in order to facilitate setting
the environment of the functions (and possibly userdata) created by the
If the luaopen_* function is not lua_call'ed, and is not in the context
of a lua_call, there will be no call frame to get the function
Additionally, in accordance with the new module system, the luaopen_*
function may wish to know the name it was loaded as, which should be
provided as the first argument to the lua_call.
Since the luaopen_* function may change the function environment, it is
a good idea to give it a fresh one; linit.c uses the following idiom,
which I've been following:
lua_call(L, 1, 0);
I believe that's the same initialization which will be done by
require(), so the luaopen_* function doesn't need to know whether it's
been dynamically loaded or statically compiled.