PackageTrack
Sign in Get early access

mlua-sys

Low level (FFI) bindings to Lua 5.5/5.4/5.3/5.2/5.1 (including LuaJIT) and Luau

0.11.0 4.7M downloads/mo #4651 most downloaded on crates.io mlua-rs/mlua

What this package is like to depend on

Last release 1 months ago

05 Jul 2026

Ships fairly regularly

a new release about every 2 months

Most releases are documented

notes for 19 of 29 stable releases

Nothing withdrawn

no release was ever pulled

4 years old

30 releases · first in 2022

4 releases in the last 12 months

see the full history below

Release timeline

30 releases · Jul 2022 to Jul 2026
2023 2024 2025 2026
Release Pre-release

Releases

latest 30
  1. 0.11.0 05 Jul 2026
    Release notes

    What's Changed (since v0.11.0-beta.3)

    • Allow linking external Lua libraries in a build script (e.g. pluto) using external mlua-sys feature flag
    • Lua::inspect_stack takes a callback with &Debug argument, instead of returning Debug directly
    • Added Debug::function method to get function running at a given level
    • Debug::curr_line is deprecated in favour of Debug::current_line that returns Option<usize>
    • Added Lua::set_globals method to replace global environment
    • Table::set_metatable now returns Result<()> (this operation can fail in sandboxed Luau mode)
    • impl ToString replaced with Into<StdString> in UserData registration
    • Value::as_str and Value::as_string_lossy methods are deprecated (as they are non-idiomatic)
    • Bugfixes and improvements

    Full Changelog: v0.11.0-beta.3...v0.11.0

    Open source →
    Release notes

    Changes since v0.11.0-beta.3

    • Allow linking external Lua libraries in a build script (e.g. pluto) using external mlua-sys feature flag
    • Lua::inspect_stack takes a callback with &Debug argument, instead of returning Debug directly
    • Added Debug::function method to get function running at a given level
    • Debug::curr_line is deprecated in favour of Debug::current_line that returns Option<usize>
    • Added Lua::set_globals method to replace global environment
    • Table::set_metatable now returns Result<()> (this operation can fail in sandboxed Luau mode)
    • impl ToString replaced with Into<StdString> in UserData registration
    • Value::as_str and Value::as_string_lossy methods are deprecated (as they are non-idiomatic)
    • Bugfixes and improvements
    Open source →
  2. 0.11.0-rc.1 21 Apr 2026 pre-release

    Nothing published for this version

  3. 0.10.0 27 Jan 2026
    Release notes

    Changes since v0.10.0-rc.1

    • Added error-send feature flag (disabled by default) to require Send + Sync for Error
    • Some performance improvements
    Open source →
  4. 0.9.0 23 Nov 2025
    Release notes

    Changes since v0.9.0-rc.3

    • Improved non-static (scoped) userdata support
    • Added Scope::create_any_userdata() method
    • Added Lua::set_vector_metatable() method (unstable feature flag)
    • Added OwnedThread type (unstable feature flag)
    • Minimal Luau updated to 0.590
    • Added new option sort_keys to DeserializeOptions (Lua::from_value() method)
    • Changed Table::raw_len() output type to usize
    • Helper functions for Value (eg: Value::as_number()/Value::as_string/etc)
    • Performance improvements
    Open source →
  5. 0.8.3 10 Aug 2025
    Release notes
    • Close to-be-closed variables for Lua 5.4 when using call_async functions (#192)
    • Fixed Lua assertion when inspecting another thread stack. (#195)
    • Use more reliable way to create LuaJIT VM (which can fail if use Rust allocator on non-x86 platforms)
    Open source →
  6. 0.8.2 14 Jul 2025
    Release notes
    • Performance optimizations in handling UserData
    • Minimal Luau updated to 0.536
    • Fixed bug in Function::bind when passing empty binds and no arguments (#189)
    Open source →
  7. 0.8.1 23 Jun 2025
    Release notes
    • Added Lua::create_proxy for accessing to UserData static fields and functions without instance
    • Added Table::to_pointer() and String::to_pointer() functions
    • Bugfixes and improvements (#176 #179)
    Open source →
  8. 0.8.0 12 Jun 2025
    Release notes

    Changes since 0.7.4

    • Luau support
    • Removed C glue
    • Added async support to __index and __newindex metamethods
    • Added Function::info() to get information about functions (#149).
    • Added parking_lot dependency under feature flag (for UserData)
    • Hash implementation for Lua String
    • Added Value::to_pointer() function
    • Performance improvements

    Breaking changes:

    • Refactored AsChunk trait (added implementation for Path and PathBuf).
    Open source →
  9. 0.7.0 05 May 2025
    Release notes
    • New "application data" api to store arbitrary objects inside Lua
    • New feature flag luajit52 to build/support LuaJIT with partial compatibility with Lua 5.2
    • Added async meta methods for all Lua (except 5.1)
    • Added AnyUserData::take() to take UserData objects from Lua
    • Added set_nth_user_value/get_nth_user_value to AnyUserData for all Lua versions
    • Added set_named_user_value/get_named_user_value to AnyUserData for all Lua versions
    • Added Lua::inspect_stack() to get information about the interpreter runtime stack
    • Added set_warning_function/remove_warning_function/warning functions to Lua for 5.4
    • Added TableExt::call() to call tables with __call metamethod as functions
    • Added Lua::unload() to unload modules
    • ToLua implementation for arrays changed to const generics
    • Added thread (coroutine) cache for async execution (disabled by default and works for Lua 5.4/JIT)
    • LuaOptions and (De)SerializeOptions marked as const
    • Fixed recursive tables serialization when using serde::Serialize for Lua Tables
    • Improved errors reporting. Now source included to fmt::Display implementation for Error::CallbackError
    • Major performance improvements
    Open source →
  10. 0.6.8 24 May 2025

    Nothing published for this version

  11. 0.6.7 27 Jan 2025

    Nothing published for this version

  12. 0.6.6 01 Dec 2024
    Release notes
    • Fixed calculating LUA_REGISTRYINDEX when cross-compiling for lua51/jit (#82)
    • Updated documentation & examples
    Open source →
  13. 0.6.5 09 Nov 2024
    Release notes
    • Fixed bug when polling async futures (#77)
    • Refactor Waker handling in async code (+10% performance gain when calling async functions)
    • Added Location::caller() information to Lua::load() if chunk's name is None (Rust 1.46+)
    • Added serialization of i128/u128 types (serde)
    Open source →
  14. 0.6.4 25 Oct 2024
    Release notes
    • Performance optimizations
    • Fixed table traversal used in recursion detection in deserializer
    Open source →
  15. 0.6.3 07 Sep 2024
    Release notes
    • 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.
    • Added DeserializeOptions struct to control deserializer behavior (from_value_with function).
    Open source →
  16. 0.6.2 26 Jul 2024
    Release notes
    • New functionality: Lua::load_from_function() and Lua::create_c_function()
    • Many optimizations in callbacks/userdata creation and methods execution
    Open source →
  17. 0.6.1 18 Jun 2024
    Release notes
    • Update chunk! documentation (stable Rust limitations)
    • Fixed Lua sequence table conversion to HashSet/BTreeSet
    • once_cell dependency lowered to 1.0
    Open source →
  18. 0.6.0 15 May 2024
    Release notes

    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)
    Open source →
  19. 0.5.2 05 Apr 2024
    Release notes
    • Some performance optimisations (callbacks)
    • ToLua implementation for Cow<str> and Cow<CStr>
    • Fixed bug with Scope destruction of partially polled futures
    Open source →
  20. 0.5.1 25 Jan 2024
    Release notes
    • 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
    Open source →
  21. 0.5.0 09 Jan 2024
    Release notes
    • Serde support under serialize feature flag.
    • Re-export mlua_derive.
    • impl ToLua and FromLua for HashSet and BTreeSet
    Open source →
  22. 0.4.0 22 Nov 2023
    Release notes
    • Lua 5.4 support with MetaMethod::Close.
    • lua53 feature is disabled by default. Now preferred Lua version have to be chosen explicitly.
    • Provide safety guarantees for Lua state, which means that potentially unsafe operations, like loading C modules (using require or package.loadlib) are disabled. Equivalent to 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.
    Open source →
  23. 0.3.2 17 Aug 2023

    Nothing published for this version

  24. 0.3.1 28 Jul 2023

    Nothing published for this version

  25. 0.3.0 28 Jul 2023

    Nothing published for this version

  26. 0.2.1 11 Jul 2023

    Nothing published for this version

  27. 0.2.0 07 Jun 2023

    Nothing published for this version

  28. 0.1.1 27 Apr 2023

    Nothing published for this version

  29. 0.1.0 13 Apr 2023

    Nothing published for this version

  30. 0.0.0 24 Jul 2022

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive