I was using Lua in the same ways for years, but after all that came to undeniable conclusion: you spend too much time writing
static int l_foo(lua_State *L) {
size_t len;
const char *s = luaL_checkstring(L, 1, &len);
luaL_newuserdata(…);
return 1;
}
luaL_register(…);
much more than appropriate. It feels like
you are serving Lua, not the other way round. Reimplementing basic functions that Lua doesn’t have, writing too much glue in C to make it look like native interface. It is also very un-crossplatform when you use rocks (Lua’s PM). Lua is nice and fast and powerful with its metatables, environments and true coroutines, and I miss that in other scripting toy-languages like python and js. And if Lua took place in js ecosystem, we’d be much less fucked on the frontend side, exactly because of these mechanisms. But it is an engine without a cabin and wheels and nothing changes.
As of nil, “:/.” and others like local…in, table=array, it just becomes an always-itching scratch after years. Lua doesn’t even respect full backwards compatibility (not that it was claimed) but its authors stick to the principles that many folks tried to un-convince them to no avail.
language must be good, if that s the best criticism anyone could come up with
That’s only the shallow surface, the real talk always goes in the mailing list before the release.