- Moved to C++17 as minimum supported standard C++ version.
- Reworked the whole library to be able to use it without c++ exceptions enabled.
- Breaking Change: The method
Stack<T>::pushnow takes astd::error_code&as last parameter and returns abool. - Breaking Change: The class
LuaExceptionhas been reworked and it now take astd::error_codeinstead of a int. - Breaking Change: The class
LuaExceptionis now thrown if a unregistered class is pushed via the Stack class, also when callingLuaRef::operator(), but only if exceptions are enabled. - Breaking Change:
LuaRef::operator()now returns the classLuaResult, where it is possible to obtain the call results or error message. - Breaking Change: LuaBridge does not silently enable exceptions when calling
getGlobalNamespace. CallenableExceptions(lua_State*)if you want to enable them explicitly. - Breaking Change: Removed
RefCounterPtr, maintaining the reference counts in a unsynchronized global table is not production quality. - Breaking Change: Removed
Class<T>::addStaticData, it was just an alias forClass<T>::addStaticProperty. - Breaking Change: Removed
Class<T>::addCFunction, it was just an alias forClass<T>::addFunction. - Breaking Change: Removed
Class<T>::addStaticCFunction, it was just an alias forClass<T>::addStaticFunction. - Allow specifying a non virtual base class method when declaring class members (functions or variables) not exposed in the inherited class.
- Allow using capturing lambdas in
Namespace::addFunctionandClass<T>::addFunction. - Added support for specifying factory functor in
Class<T>::addConstructorto do placement new of the object instance. - Allow using capturing lambdas in
Namespace::addProperty. - Added
getNamespaceFromStackfunction to construct a namespace object from a table on the stack. - Added
std::shared_ptrsupport for types intrusively deriving fromstd::enable_shared_from_this. - Added
Class<T>::addFunctionoverload taking alua_CFunctionas if it were a member. - Added
LuaRef::isValidto check when the reference is a LUA_NOREF. - Added support for
std::byteas stack value type. - Added support for
std::string_viewas stack value type. - Added support for
std::tupleas stack value type. - Added support for
std::optionalas stack value type by usingLuaBridge/Optional.h. - Added support for
std::setas stack value type by usingLuaBridge/Set.h. - Added single header amalgamated distribution file, to simplify including in projects.
- Added more asserts for functions and property names.
- Renamed
luabridge::Niltoluabridge::LuaNilto allow including LuaBridge in Obj-C sources. - Removed the limitation of maximum 8 parameters in functions.
- Removed the limitation of maximum 8 parameters in constructors.
- Removed
Class<T>::addData, it was just an alias forClass<T>::addProperty. - Removed
TypeListfrom loki, using parameter packs andstd::tuplewithstd::apply. - Removed juce traces from unit tests, simplified unit tests runs.
- Fixed issue when
LuaRef::cast<>fails with exceptions enabled, popping from the now empty stack could trigger the panic handler twice. - Fixed unaligned access in user allocated member pointers in 64bit machines reported by ASAN.
- Bumped lua 5.2.x in unit tests from lua 5.2.0 to 5.2.4.
- Bumped lua 5.4.x in unit tests from lua 5.4.1 to 5.4.3.
- Run against lua 5.3.6 and 5.4.3 in unit tests.
- Converted the manual from html to markdown.
- Small improvements to code and doxygen comments readability.
- Added namespace
addFunction()acceptingstd::function(C++11 only). - Added class
addStaticFunction()acceptingstd::function(C++11 only). - Update the Doxygen documentation.
- Add brief API reference into the manual.
- Hide non-public
luabridgemembers into thedetailnamespace. - Fix stack cleanup by
LuaRef::isInstance()method.
- Introduce stack
isInstance()method. - Introduce LuaRef
isInstance()method. - Added a convenience
isInstance()function template.
- Do not call the object destructor then its constructor throws.
- String stack get specialization doesn't change the stack value anymore.
- Added namespace
addProperty()accepting C-functions. - Introduce enableExceptions function.
- Fixed registration continuation for an already registered class.
- Fixed registration continuation issues.
- Added class
addFunction()accepting proxy functions (C++11 only). - Added class
addFunction()acceptingstd::function(C++11 only). - Added class
addProperty()accepting functions with lua_State* parameter. - Added class
addProperty()acceptingstd::function(C++11 only). - Added stack traits for
std::unordered_map(UnorderedMap.h). - Now using lightuserdata for function pointers.
- Performance optimization.
- Refactored namespace and class handling.
- Refactored stack operations.
- Handle exceptions in stack operations.
- Added
operator==andoperator!=forRefCountedPtrtemplate.
- Support for
__stdcallfunction pointers.
- Added stack traits for
std::vector(Vector.h). - Added stack traits for
std::list(List.h). - Added stack traits for
std::map(Map.h). - Added ability to use
LuaRefobjects as anstd::mapkeys. - Fixed some manual errata.
- Numerous bug fixes.
- Feature Requests from Github issues.
- Added
LuaRefobject. - Rewritten documentation.
- Split code up into several files.
- Add Lua table and type representations (based on Nigel's code).
- Reformat documentation as external HTML file.
- Pass
nilto Lua when a null pointer is passed for objects with shared lifetime.
- Option to hide metatables selectable at runtime, default to true.
addStaticMethod()renamed toaddStaticFunction()for consistency.addMethod()renamed toaddFunction()for consistency.addCFunction()registrations.- Convert null pointers to and from
nil. - Small performance increase in class pointer extraction.
- Backward compatibility with Lua 5.1.x.
- Explicit lifetime management models.
- Generalized containers.
- Single header distribution.