[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: Does LUA_ENVIRONINDEX make LUA_GLOBALSINDEX obsolete?
- From: "Patrick Donnelly" <batrick.donnelly@...>
- Date: Mon, 14 Jul 2008 23:07:58 -0600
On Mon, Jul 14, 2008 at 10:49 PM, Tim Maxwell <email@example.com> wrote:
> The environment system is a powerful new feature for Lua. It seems to me
> that the globals table accessible through LUA_GLOBALSINDEX is just a special
> case of the environment table - unless I am mistaken, LUA_GLOBALSINDEX
> simply refers to the environment table that was created for the first Lua
> state. If I'm wrong, disregard the rest of this message.
> Perhaps LUA_GLOBALSINDEX is unnecessary. lua_getglobal and lua_setglobal
> could be redirected to access LUA_ENVIRONINDEX instead of LUA_GLOBALSINDEX.
> Most global variable access should go to the environment table anyway, so
> lua_getglobal and lua_setglobal would be more useful if they want to the
> environment table. Other functions that use LUA_GLOBALSINDEX should probably
> go to LUA_ENVIRONINDEX as well.
> Can anybody think of a use for LUA_GLOBALSINDEX over LUA_ENVIRONINDEX?
> Is there anything that this change would break?
> Is LUA_GLOBALSINDEX already being retired?
> Tim Maxwell
LUA_GLOBALSINDEX is the environment of the running thread.
LUA_ENVIRONINDEX is useful for sharing an environment across many
userdata/functions in C (especially useful since C functions cannot
share upvalues). Usually, you will want to use LUA_GLOBALSINDEX.
"One of the lessons of history is that nothing is often a good thing
to do and always a clever thing to say."