I think I saw somewhere a native function in Lua that can return a new userdata. Does it exist? Is it possible to create custom userdata from normal Lua script?
You may be thinking of newproxy
From: http://lua-users.org/wiki/HiddenFeatures
newproxy
is an unsupported and undocumented function in the Lua base library. From Lua code, thesetmetatable
function may only be used on objects of table type. Thenewproxy
function circumvents that limitation by creating a zero-size userdata and setting either a new, empty metatable on it or using the metatable of anothernewproxy
instance. We are then free to modify the metatable from Lua. This is the only way to create a proxy object from Lua which honors certain metamethods, such as__len
.
It was also useful for __gc
metamethods, as a hack to get a callback when the newproxy
instance becomes free.
This feature was present in Lua 5.1, but removed in 5.2. In Lua 5.2, __gc
metamethods can be set on zero sized tables, so the main impetus for newproxy
went away.