[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: Replacement for unlocked refs?
- From: "J. Perkins" <jason@...>
- Date: Thu, 31 Jan 2002 11:24:32 -0500
Keeping all references in the weak table is a good idea, I will
do that. Still, I stand by my assertion that this is a critical
function of an embedded language which should be a part of the
library, not "emulated" in user code. But since I seem to be the
only one concerned by it, I will go suffer in silence ;)
Thanks for the help,
Roberto Ierusalimschy wrote:
On Thu, 31 Jan 2002, J. Perkins wrote:
But really two tables are required, right? One for locked refs
and another for unlocked? And then the reference value must also
indicate which table it is stored in, [...]
Usually you know whether a reference points to a locked or unlocked object,
so it does not need to include that information.
(If you really want to emulate the old behavior, you can use two tables,
one weak and one strong. You put all elements in the weak table,
but only locked ones go to the other table. That way, your references
are always to the weak table; you do not need negative indices. To unref,
you set the ref to nil in both tables. But, as I said, I think most
people don't need that.)
Is there some reason why unlocked refs were dropped?
It was replaced by weak references (and, unlike some other languages, we
do not need more than one way to do something ;-). But also the whole
system of references was somewhat outdated by multiple states. And there
is a tendency in Lua to unificate all data structures into tables.
Globals went to tables, now tag methods and references are going, too.