2. It's a pity there were not more posts along the lines of:
- This is what we do in our organization.
Well, I cannot speak for a 'community of best practice' but this is how I see the problem. Lua does not have null, as understood in other languages. The concept is embedded in many external data formats and is distinct from a false boolean value. So a JSON module will define json.null and a DB module will define db.null. If I wanted to dump out a database record to JSON then I must do something like this:
tsub(rec,db.null,json.null) -- really easy and general function to write
If Lua 5.3 introduced 'null' (however implemented - tho it would be nice if it evaluated as 'false') then we would have the usual lag where everyone had to port their modules, and in a few years everyone would use null. In the meantime, compatibility libraries would appear.
So why not agree to use some standard definition of null, embedded in a little library and skip the core change?
Even so, the above transformation is hardly a difficult one, it's just one of those things one has to explicitly check.
The array-hole issue is a red herring here - it's part of another conversation. It's possible to write user-defined array types which have the strict properties required of 'classical' arrays.