mlua/CHANGELOG.md
2021-08-22 16:31:14 +01:00

5.5 KiB

v0.6.3

  • Disabled catching Rust panics in userdata finalizers on drop. It also has positive performance impact.
  • Added Debug::event() to the hook's Debug structure
  • Simplified interface of hook::HookTriggers
  • Added finalizer to ExtraData in module mode. This helps avoiding memory leak on closing state when Lua unloads modules and frees memory.

v0.6.2

  • New functionality: Lua::load_from_function() and Lua::create_c_function()
  • Many optimizations in callbacks/userdata creation and methods execution

v0.6.1

  • Update chunk! documentation (stable Rust limitations)
  • Fixed Lua sequence table conversion to HashSet/BTreeSet
  • once_cell dependency lowered to 1.0

v0.6.0

Changes since 0.5.4

  • New UserDataFields API
  • Full access to UserData metatables with support of setting arbitrary fields.
  • Implement UserData for Rc<RefCell<T>>/Arc<Mutex<T>>/Arc<RwLock<T>> where T: UserData.
  • Added SerializeOptions to to change default Lua serializer behaviour (eg. nil/null/array serialization)
  • Added LuaOptions to customize Lua/Rust behaviour (currently panic handling)
  • Added ToLua/FromLua implementation for Box<str> and Box<[T]>.
  • Added Thread::reset() for luajit/lua54 to recycle threads (coroutines) with attaching a new function.
  • Added chunk! macro support to load chunks of Lua code using the Rust tokenizer and optionally capturing Rust variables.
  • Improved errors reporting (Error's __tostring method formats full stacktraces). This is useful in a module mode.
  • Added String::to_string_lossy
  • Various bugfixes and improvements

Breaking changes:

  • Errors are always Send + Sync to be compatible with the anyhow crate.
  • Removed Result from LuaSerdeExt::null() and LuaSerdeExt::array_metatable() (never fails)
  • Removed Result from Function::dump() (never fails)
  • Removed AnyUserData::has_metamethod() (in favour of full access to metatables)

v0.6.0-beta.3

  • Errors are always Send + Sync to be compatible with anyhow crate
  • Implement UserData for Rc<RefCell>/Arc<Mutex>/Arc<RwLock>
  • Added __ipairs metamethod for Lua 5.2
  • Added String::to_string_lossy
  • Various bugfixes and improvements

v0.6.0-beta.2

  • [Breaking] Removed AnyUserData::has_metamethod()
  • Added Thread::reset() for luajit/lua54 to recycle threads. It's possible to attach a new function to a thread (coroutine).
  • Added chunk! macro support to load chunks of Lua code using the Rust tokenizer and optinally capturing Rust variables.
  • Improved error reporting (Error's __tostring method formats full stacktraces). This is useful in the module mode.

v0.6.0-beta.1

  • New UserDataFields API
  • Allow to define arbitrary MetaMethods
  • MetaMethods::name() is public
  • Do not trigger longjmp in Rust to prevent unwinding across FFI boundaries. See https://github.com/rust-lang/rust/issues/83541
  • Added SerializeOptions to to change default Lua serializer behaviour (eg. nil/null/array serialization)
  • [Breaking] Removed Result from LuaSerdeExt::null() and LuaSerdeExt::array_metatable() (never fails)
  • [Breaking] Removed Result from Function::dump() (never fails)
  • ToLua/FromLua implementation for Box<str> and Box<[T]>
  • [Breaking] Added LuaOptions to customize Lua/Rust behaviour (currently panic handling)
  • Various bugfixes and performance improvements

v0.5.4

  • Build script improvements
  • Improvements in panic handling (resume panic on value popping)
  • Fixed bug serializing 3rd party userdata (causes segfault)
  • Make error::Error non exhaustive

v0.5.3

  • Fixed bug when returning nil-prefixed multi values from async function (+ test)
  • Performance optimisation for async callbacks (polling)

v0.5.2

  • Some performance optimisations (callbacks)
  • ToLua implementation for Cow<str> and Cow<CStr>
  • Fixed bug with Scope destruction of partially polled futures

v0.5.1

  • Support cross compilation that should work well for vendored builds (including LuaJIT with some restrictions)
  • Fix numeric types conversion for 32bit Lua
  • Update tokio to 1.0 for async examples

v0.5.0

  • Serde support under serialize feature flag.
  • Re-export mlua_derive.
  • impl ToLua and FromLua for HashSet and BTreeSet

v0.4.2

  • Added Function::dump() to dump lua function to a binary chunk
  • Added ChunkMode enum to mark chunks as text or binary
  • Updated set_memory_limit doc

v0.4.0

  • Lua 5.4 support with MetaMethod::Close.
  • lua53 feature is disabled by default. Now preferred Lua version have to be chosen explicitly.
  • Provide safety guaraness for Lua state, which means that potenially unsafe operations, like loading C modules (using require or package.loadlib) are disabled. Equalient for the previous Lua::new() function is Lua::unsafe_new().
  • New send feature to require Send.
  • New module feature, that disables linking to Lua Core Libraries. Required for modules.
  • Don't allow 'callback outlive 'lua in Lua::create_function() to fix the unsoundness.
  • Added Lua::into_static() to make 'static Lua state. This is useful to spawn async Lua threads that requires 'static.
  • New function Lua::set_memory_limit() (similar to rlua) to enable memory restrictions in Lua VM (requires Lua >= 5.2).
  • Scope, temporary removed in v0.3, is back with async support.
  • Removed deprecated Table::call() function.
  • Added hooks support (backported from rlua 0.17).
  • New AnyUserData::has_metamethod() function.
  • LuaJIT 2.0.5 (the latest stable) support.
  • Various bug fixes and improvements.