Skip to the content.
Master
Version 3.0
- 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>::push now takes a std::error_code& as last parameter and returns a bool.
- Breaking Change: The class
LuaException has been reworked and it now take a std::error_code instead of a int.
- Breaking Change: The class
LuaException is now thrown if a unregistered class is pushed via the Stack class, also when calling LuaRef::operator(), but only if exceptions are enabled.
- Breaking Change:
LuaRef::operator() now returns the class LuaResult, where it is possible to obtain the call results or error message.
- Breaking Change: LuaBridge does not silently enable exceptions when calling
getGlobalNamespace. Call enableExceptions(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 for Class<T>::addStaticProperty.
- Breaking Change: Removed
Class<T>::addCFunction, it was just an alias for Class<T>::addFunction.
- Breaking Change: Removed
Class<T>::addStaticCFunction, it was just an alias for Class<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::addFunction, Namespace::addProperty, Class<T>::addFunction, Class<T>::addStaticFunction, Class<T>::addProperty and Class<T>::addStaticProperty.
- Added support for specifying factory functor in
Class<T>::addConstructor to do placement new of the object instance.
- Added
Namespace::addVariable to allow adding a modifiable value by copy into the namespace without incurring in function calls or metatables generation.
- Added
getNamespaceFromStack function to construct a namespace object from a table on the stack.
- Added
registerMainThread function especially useful when using lua 5.1 to register the main lua thread.
- Added
std::shared_ptr support for types intrusively deriving from std::enable_shared_from_this.
- Added
Class<T>::addFunction overload taking a lua_CFunction as if it were a member.
- Added
Class<T>::addIndexMetaMethod to allow register __index metamethod fallback on a registered class.
- Added
Class<T>::addNewIndexMetaMethod to allow register __newindex metamethod fallback on a registered class.
- Added
LuaRef::isValid to check when the reference is a LUA_NOREF.
- Added
LuaRef::isCallable to check when the reference is a function or has a __call metamethod.
- Added
LuaException::state to return the lua_State associated with the exception.
- Added support for
std::byte as stack value type.
- Added support for
std::string_view as stack value type.
- Added support for
std::tuple as stack value type.
- Added support for
std::optional as stack value type.
- Added support for
std::set as stack value type by using LuaBridge/Set.h.
- Added support to
LuaRef for being hashed with std::hash (LuaRef properly usable in std::unordered_map).
- Added single header amalgamated distribution file, to simplify including in projects.
- Added more asserts for functions and property names.
- Renamed
luabridge::Nil to luabridge::LuaNil to 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 for Class<T>::addProperty.
- Removed
TypeList from loki, using parameter packs and std::tuple with std::apply.
- Removed juce traces from unit tests, simplified unit tests runs.
- Changed all generic functions in
LuaRef and TableItem to accept arguments by const reference instead of by copy.
- 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.
- Fixed access of
LuaRef in garbage collected lua_thread.
- Included testing against Luau VM
- 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.6.
- Run against lua 5.3.6 and 5.4.6 in unit tests.
- Run against Luau and LuaJIT in unit tests.
- Converted the manual from html to markdown.
- Small improvements to code and doxygen comments readability.
- Support for
__fastcall function pointers.
Version 2.6
- Added namespace
addFunction() accepting std::function (C++11 only).
- Added class
addStaticFunction() accepting std::function (C++11 only).
- Update the Doxygen documentation.
- Add brief API reference into the manual.
- Hide non-public
luabridge members into the detail namespace.
- Fix stack cleanup by
LuaRef::isInstance() method.
Version 2.5
- Introduce stack
isInstance() method.
- Introduce LuaRef
isInstance() method.
- Added a convenience
isInstance() function template.
Version 2.4.1
- Do not call the object destructor then its constructor throws.
Version 2.4
- String stack get specialization doesn’t change the stack value anymore.
- Added namespace
addProperty() accepting C-functions.
- Introduce enableExceptions function.
Version 2.3.2
- Fixed registration continuation for an already registered class.
Version 2.3.1
- Fixed registration continuation issues.
Version 2.3
- Added class
addFunction() accepting proxy functions (C++11 only).
- Added class
addFunction() accepting std::function (C++11 only).
- Added class
addProperty() accepting functions with lua_State* parameter.
- Added class
addProperty() accepting std::function (C++11 only).
- Added stack traits for
std::unordered_map (UnorderedMap.h).
- Now using lightuserdata for function pointers.
Version 2.2.2
- Performance optimization.
Version 2.2.1
- Refactored namespace and class handling.
Version 2.2
- Refactored stack operations.
- Handle exceptions in stack operations.
Version 2.1.2
- Added
operator== and operator!= for RefCountedPtr template.
Version 2.1.1
- Support for
__stdcall function pointers.
Version 2.1
- 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
LuaRef objects as an std::map keys.
- Fixed some manual errata.
Version 2.0
- Numerous bug fixes.
- Feature Requests from Github issues.
- Added
LuaRef object.
- Rewritten documentation.
Version 1.1.0
- Split code up into several files.
- Add Lua table and type representations (based on Nigel’s code).
- Reformat documentation as external HTML file.
Version 1.0.3
- Pass
nil to Lua when a null pointer is passed for objects with shared lifetime.
Version 1.0.2
- Option to hide metatables selectable at runtime, default to true.
addStaticMethod() renamed to addStaticFunction() for consistency.
addMethod() renamed to addFunction() for consistency.
addCFunction() registrations.
- Convert null pointers to and from
nil.
- Small performance increase in class pointer extraction.
Version 1.0.1
- Backward compatibility with Lua 5.1.x.
Version 1.0
- Explicit lifetime management models.
- Generalized containers.
- Single header distribution.