[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: Lua Observations/Questions
- From: Ken Rawlings <krawling@...>
- Date: Fri, 9 Jul 1999 20:02:58 -0500 (EST)
> I guess you only need the gc method. It tells you exactly what you want
> to know: When a reference is released.
Unfortunately, that's not enough. It doesn't tell me when a reference
is created. A node with no previous or next nodes should be deleted,
unless there is an outstanding Lua reference to it. If I don't know
which are referenced, I don't know which are safe to delete
immediately and which need to wait for the gc tagmethod.
> > why are there no setlocal/getlocal tags?
> Performance (mainly).
Do you take a substatial performance hit, even if there is no
tagmethod associated? Most of the time setlocal/getlocal wouldn't
> The absence of external documentation tries to reflect this idea. You
> should only use those functions if you know where they are and how to
> get them if you need.
I'd document them officially, for one reason: the standard libraries
use luaxlib extensively. There's not a whole lot of documentation in
general on writing Lua libraries, so a new Lua developer(like myself)
will look at existing libraries to see examples. The obvious
libraries to look at to see how to do things correctly are the standard
> at their code (most of them are very simple). You can also ask if you
> need more help.
Thanks. For the most part it's straightforward, but there are
a few places where exactly how things work were unobvious to me,
like the luaL_opt_ functions and the space and buffer functions.
> Maybe (maybe!) that was not a good design. Anyway, I don't see how we could
> change that now, without creating a major incompatibility. We could create
> a new boolean type, and make the conditionals in the language to accept
I think that's a reasonable solution to the problem, especially if
combined with some sort of expression tagmethod that's called when
"nil" is the expression result.
Then the situation would be similar to the situation with referencing
unassigned variables. The default behavior is worrisome, but it can be
easily modified with a setglobal tagmethod.