Great to see sol2 mentioned. We use it in Codea[1] to bind to our game/render engine. The article is right about the lack of safety and inscrutable messages, though. Recently we bound almost the entire iOS Objective-C APIs into Lua, though not using sol2, this used the Obj-C runtime headers and a lot of Lua C-hackery.