Attributes

Pier <[email protected]> Sun, 24 May 2026 10:34:22 -0700 (PDT)
Newsgroups gmane.comp.lang.lua.general
Message-ID <[email protected]>
I absolutely love Lua for how easy it is to learn, how clean the syntax is, 
and how extendable it is. However, I do have a few thoughts on attributes 
which was in introduced in Lua 5.4 that I think deserve a good discussion 
maybe.

The concept itself is not bad and the syntax is a fair compromise. The 
close attribute is amazing when working with systems where freeing memory 
is important but easily overlooked or forgotten (i.e. closing files). On 
the other hand, the const attribute is just... meh. I don't see any reason 
to include it, because as far as I know it doesn't add any performance and, 
importantly, it doesn't make tables immutable! The SNAKE_CASE convention to 
me is more than enough to denote constants. I hold onto the belief that 
developers are component enough to not make stupid mistakes such as 
changing variables that aren't supposed to be changed or changing variables 
in an unexpected way. Even if that does happen, they are usually caught 
through pull-request or during test. I don't know many teams that allow 
anyone to change the codebase freely.

I guess for const to be useful it would have to add some extra benefit than 
just protection. I am no compiler designer, but if I had to come up with 
something I would say constant tables could be immutable and optimized 
internally since the keys would never change, or constant variables being 
expanded. I'm sure there are many ways to go about it. 

In the end, I still love Lua lol. Maybe I'm missing some context or 
something, so I'm always happy to continue the discussion on this topic.

-- 
You received this message because you are subscribed to the Google Groups "lua-l" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To view this discussion visit https://groups.google.com/d/msgid/lua-l/a7fc6ef3-698e-4857-8603-66a3474f1f0bn%40googlegroups.com.