[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Garbage collection
- From: "Thatcher Ulrich" <tu@...>
- Date: Tue, 29 Oct 2002 16:14:03 -0500
On Oct 29, 2002 at 02:53 -0000, tom7ca wrote:
> [snip]
I think David answered your previous points better than I can; I just
want to pick up on the API issue...
> And reference counting is certainly not a good default allocation
> strategy for Lua because it's inefficient and a pain to use from a C
> API. Reference counting is probably the worst part of, for example,
> the Python implementation.
OK, that may well be true; I haven't used the Python API.
But, it seems to me that the existing Lua reference-locking API is
completely agnostic about how the internal Lua GC operates. See:
http://www.lua.org/manual/manual.html#5.14
Basically, a C program declares that it is interested in a particular
object, using the lua_ref() call. lua_ref() returns a integer handle,
for use in retrieving the reference. The C program calls lua_getref()
with the handle, to put the physical reference to the object on the
Lua stack. When the C program no longer needs access to that object,
it frees the handle using lua_unref().
No details about the underlying GC implementation are exposed; ref
counting can work just as well as anything else behind this interface.
--
Thatcher Ulrich
http://tulrich.com