[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Is debug.upvalueid()'s result stable?
- From: Viacheslav Usov <via.usov@...>
- Date: Mon, 1 Feb 2021 18:05:19 +0100
On Mon, Feb 1, 2021 at 3:44 PM Egor Skriptunoff
<egor.skriptunoff@gmail.com> wrote:
> This quote doesn't answer my question.
Your question was "Does Lua guarantee debug.upvalueid() returns the
same result during the lifespan of the closure?"
Roberto's answer was negative, with a demonstration.
Apparently that was not really the question you wanted answered. You
rephrased your question:
> Are those hexadecimal digits after "userdata:" permanent?
But the answer to this is trivially negative again, from the same demonstration.
I may have misunderstood, but it looks like you are asking for a full
list of operations that could change a previously seen upvalue ID for
a given contiguously existing chunk.
I do not know the (full) answer, but GC is not part of it, because
Lua's (stock) GC is non-moving, so an address of an existing object
cannot change. I would think that the upvalue join demonstrated by
Roberto, along with its C API counterpart, should be the only such
operation, but somebody more knowledgeable should confirm this.
Cheers,
V.