182 lines
10 KiB
Markdown
Vendored
182 lines
10 KiB
Markdown
Vendored
## 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.
|
|
* Lot of optimisations have been added, and now the library is *fast*, nearly in the same league as sol2 v3.x.
|
|
* 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 multiple inheritance support: `deriveClass` now accepts more than one registered base class (e.g. `deriveClass<D, A, B>`).
|
|
* Added C++20 coroutine integration: `CppCoroutine<R>` type that can be registered via `Namespace::addCoroutine()` to expose C++ generators to Lua using `co_yield` and `co_return`.
|
|
* Added `LuaCoroutine` awaitable to resume a child Lua thread synchronously from inside a `CppCoroutine` body using `co_await`.
|
|
* Added `lua_resume_x` and `lua_isyieldable_x` portable helpers in `LuaBridge/detail/LuaHelpers.h`.
|
|
* Added `LUABRIDGE_HAS_CXX20_COROUTINES` feature-detection macro; opt out with `LUABRIDGE_DISABLE_CXX20_COROUTINES`.
|
|
* Added `ErrorCode::CoroutineYieldFromNonCoroutine` and `ErrorCode::CoroutineAlreadyDone` error codes.
|
|
* Added `Namespace::addVariable` to allow adding a modifiable value by copy into the namespace without incurring in function calls or metatables generation.
|
|
* Added `luabridge::callWithHandler` free function and `LuaRef::callWithHandler` member to provide a custom Lua message handler during `lua_pcall`.
|
|
* Added `luabridge::newFunction` free function and `LuaRef::newFunction` static method to wrap any C++ callable into a Lua function exposed as a `LuaRef`.
|
|
* Added `luabridge::getNamespaceFromStack` function to construct a namespace object from a table on the stack.
|
|
* Added `luabridge::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>::addConstructor` support for specifying factory functor to do placement new of the object instance.
|
|
* Added `Class<T>::addDestructor` to register a custom `__destruct` metamethod hook invoked just before the C++ destructor runs.
|
|
* 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 `Class<T>::addStaticIndexMetaMethod` for fallback `__index` handling on the static class table.
|
|
* Added `Class<T>::addStaticNewIndexMetaMethod` for fallback `__newindex` handling on the static class table.
|
|
* 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 `void*` and `const void*` stack specializations mapped transparently to Lua lightuserdata.
|
|
* 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 `LuaRef::append` and variadic `LuaRef::append(vs...)` to append values to a Lua sequence table using `lua_rawseti`.
|
|
* Added `LuaRef::call<R>()` now returns a strongly-typed `TypeResult<R>` instead of a generic `LuaResult`; `LuaRef::operator()` returns `TypeResult<void>`.
|
|
* Added `LUABRIDGE_STRICT_STACK_CONVERSIONS` compile-time flag to enforce strict type-safe stack conversions (`bool` requires `LUA_TBOOLEAN`, `std::string` requires `LUA_TSTRING`).
|
|
* Added `LuaFunction<Signature>` strongly-typed wrapper class for invoking Lua functions with compile-time argument and return-type checking.
|
|
* Added `TypeResult<T>::valueOr(default)` to extract the contained value or return a fallback when a cast fails.
|
|
* Added `allowOverridingMethods` class option to permit Lua scripts to override C++ methods registered in an extensible class.
|
|
* 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 `Stack<bool>::get` to properly require `LUA_TBOOLEAN` when `LUABRIDGE_STRICT_STACK_CONVERSIONS` is enabled; without the flag, legacy `lua_toboolean` semantics are preserved.
|
|
* Fixed floating-point `Stack<T>::push`, `get`, and `isInstance` to correctly allow NaN and Inf values to pass through without error.
|
|
* 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
|
|
* Included testing against Ravi 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.8.
|
|
* Added Lua 5.3.6 and 5.5.0 in unit tests.
|
|
* Run against PUC-Lua, Luau, LuaJIT and Ravi in CI.
|
|
* 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.
|