Live data from Hacker News

Show HN: Another C++ Lua Wrapper

github.com

11–13 of 13 posts

Re: Show HN: Another C++ Lua Wrapper

#11
post #8
post #6

If you've written this, presumably you've found something lacking in the other eight billion Lua/C++ bindings (I agree, they all have major deficiencies, such that Luabind remains my "least bad" choice). Could you explain exactly what yours does differently?

Could you elaborate on common deficiencies? What does Luabind get right? What are its shortcomings?

Luabind is terrible to install. The most up-to-date version (https://github.com/rpavlik/luabind) is nowhere to be found on the first three pages of Google results for 'luabind'. It requires and builds with Boost, with all the attendant package version conflicts - for example, the Luabind package for Ubuntu 14.04 has the two-year-old Boost 1.54 as a dependency, which typically conflicts with newer Boosts from PPAs. And for some reason the github source generates a library called libluabindd.so, with a spurious extra 'd' which requires symlinking to libluabind before stuff will build against it.

It's a shame, because the library itself is intuitive and reliable, but building it is just painful.

Re: Show HN: Another C++ Lua Wrapper

#12
post #4

Earlier quoted context omitted.

Seems really well done and well documented. Sorry to ask this without exploring the code myself (!), but there is a check in common.hpp for C++14 compliant compiler. What features of C++14 are you using in this project?

From what I can see (quick glance) he uses integer_sequence https://github.com/vapourismo/luwra/blob/56a566dd9e20fc7e3c9...

Also variable templates, which are crucial to generating the metatable name for user types.

Re: Show HN: Another C++ Lua Wrapper

#13
post #6

If you've written this, presumably you've found something lacking in the other eight billion Lua/C++ bindings (I agree, they all have major deficiencies, such that Luabind remains my "least bad" choice). Could you explain exactly what yours does differently?

I've found that most libraries implement the wrapper around C++ functions in the most terrible way. It ranges from userdata types wrapping std::function objects to wrapping the lua_State, which the users have to interact with themselfs.

Luwra uses inlinable functions and templates almost exclusively. That way (best-case scenario), each wrapped field/method/constructor/function implies only one generated lua_CFunction, which invokes the Lua API to retrieve the values and finally call the wrapped function with them. And all that, during compile-time, which in my opinion is the best part about it.

Post reply on HN