Hi,
With the change to Lua 5.2, loadfile() should accept new arguments, most notably
the third one to provide an environment for the loaded chunk. This argument is
especially useful since setfenv() is removed in Lua 5.2.
However, I'm afraid this argument is ignored by LuaTeX:
mpg@roth ~ % texlua --version
This is LuaTeX, Version beta-0.74.0-2012122510 (TeX Live 2013/dev)(rev 4541)
mpg@roth ~ % head *.lua
==> bar.lua <==
print(_ENV)
==> foo.lua <==
print(_ENV)
local t = { print = print }
print(t)
loadfile('bar.lua', 'bt', t)()
mpg@roth ~ % lua5.2 foo.lua
table: 0x21325f0
table: 0x2138910
table: 0x2138910
mpg@roth ~ % texlua foo.lua
table: 0x1fc4810
table: 0x1fc8eb0
table: 0x1fc4810
Please note that the last line should be equal to the previous one, as is the
case with the stock Lua interpreter. I didn't dig into this, but I would guess
that the additional arguments are lost when LuaTeX replaces loadfile() whith is
own version possibly using kpse.
Best,
Manuel.