[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: 5.2 feature list?
- From: John Hind <john.hind@...>
- Date: Tue, 03 Oct 2006 14:30:47 +0100
Biggest feature request on my radar is to sort out the automatic global
variables issue which seems to me to be the only serious design flaw in
Lua (and yes, I can see how it probably developed historically as Lua
got progressively used for larger projects than originally intended). I
know Roberto has code to work round this, but when I tried it it crashed
Girder spectacularly! It is also expensive looking.
What I'm looking for is something like OPTION EXPLICIT available in some
versions of Basic. This disables automatic global variables and forces
you to declare them before use. In Lua, there'd be a switch you'd put at
the start of each chunk and it would force you to use _G.name = value
syntax to CREATE an entry in the global environment table (or in Lua
cant, to set an entry to a value other than nil). You would still be
able to access or reassign an existing global without the _G syntax.
I suggest that, under OPTION EXPLICIT you would also have to use _G to
set a variable to nil to make it harder to accidentally delete someone
else's global.
It would be good to also be able to set OPTION EXPLICIT as the default
when creating a Lua interpreter in C.
I'm only using OPTION EXPLICIT as shorthand here as it is something
people might be familiar with. In many ways, I'd prefer OPTION LOCAL and
OPTION GLOBAL (or some other syntax for flagging directives). Here
OPTION GLOBAL is what we've got now. OPTION LOCAL would behave as
suggested above, but additionally it would allow dropping of explicit
"local" specification of variables. Variables without a table specifier
would be created local.
Would Roberto maybe admit that if he was redesigning Lua from scratch
today variables would be local by default and global by declaration? If
not, why not?
- John