> lack of a separate integer type (chars are strings, ints are floats)
Lua 5.3 introduced integer types. [1]
> Even bit manipulation requires going through the FFI.
LuaJIT includes a bit manipulation library, but its FFI acceleration is optional. Also, Lua 5.3 introduced bitwise operators. [1]
> One cannot even format UTF-8 text
Lua 5.3 introduced "basic utf-8 support" [1] although I am not sure to what extent.
> The official documentation mostly revolves around C bindings. The actual Lua language documentation is provided by another web site that looks like it has been written by an attention-deficit child
Again, I suspect you are criticizing LuaJIT. The actual Lua documentation [2] has never let me down.