lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

On 1/7/11, Roberto Ierusalimschy <> wrote:
>> I would be happy to see refs go away because they seem like a sharp,
>> tempting feature that actually doesn't add value.
>> If your userdata object needs to reference other Lua data, you
>> really, really, really want to use the environment mechanism because
>> this works with the GC whereas refs are very prone to creating
>> uncollectable cycles.
>> If your C code needs to reference a Lua value, I tend to recommend
>> using light userdata keys in the registry bearing in mind that this
>> creates anchors for the GC.
> Exactly. The archetypal use of references were a full userdata keeping
> references to other Lua values by keeping in its C structure the
> integers returned by luaL_ref. The finalizer for this userdata should be
> responsible to release its references when the userdata was collected.
> This kind of use became obsolete with environments.
> Does anyone still use references in real applications? For what?
> -- Roberto

Well, for my part thanks again. I wasn't aware of the environment
mechanism for userdata (I thought it was only for functions). It seems
I was using correctly (mostly, at least) an outdated mechanism...

For what it is worth, I'd say off with the reference system:
lightuserdata seems much cleaner.