Lua's variables being global by default seems somewhat error-prone.
Agreed, but the recently-released v5.5 fixes that [0], and it's fairly easy to fix this in older versions with the following snippet
setmetatable(_G, { __newindex = false, __index = false })
Agreed, but the recently-released v5.5 fixes that [0], and it's fairly easy to fix this in older versions with the following snippet
[0]: https://www.lua.org/manual/5.5/manual.html#2.2