Alex Orlenko
205989f569
Fix edge case when loading many-in-one module from thread without using its state.
...
If Lua previously been initialized in main thread and then new module was loaded from thread
we reuse old state which confuses Lua loader.
2024-01-10 00:37:02 +00:00
Alex Orlenko
4c0474d573
Fix docsrs attr for Thread::reset
2024-01-06 15:04:18 +00:00
Alex Orlenko
60e859f643
Fix (nightly) warning in doc
2024-01-06 12:55:18 +00:00
Alex Orlenko
a4c919231c
Don't clone function name when calling async userdata method
2023-12-03 19:55:27 +00:00
Alex Orlenko
e4d6e92287
(async) Move "pending" poll value from env to poll_future() results
2023-12-02 15:01:40 +00:00
Alex Orlenko
642201a7e0
Remove locals from __mlua_async_poll helper
2023-12-01 18:11:06 +00:00
Alex Orlenko
c36808b251
Faster Function::call() for lua51/jit/luau
2023-12-01 12:03:46 +00:00
Alex Orlenko
93b505cff9
Integrate Luau package into mlua api.
...
Eg. `Lua::load_from_std_lib` with `StdLib::PACKAGE` is now supported for Luau.
2023-11-20 12:08:08 +00:00
Alex Orlenko
2bee5ed33a
Support binary modules for Luau on cfg(unix)
2023-11-16 15:54:25 +00:00
Alex Orlenko
2d775695ef
Rewrite Luau require function to support module loaders.
...
Also add `package` library with `path`/`loaded`/`loaders`.
2023-11-16 14:39:17 +00:00
Alex Orlenko
34476ebf53
Support LuaJIT cdata type (produced by ffi module)
2023-11-16 13:33:23 +00:00
Alex Orlenko
5043447f23
Support Luau buffer type and and library.
...
Buffer is an object that represents a fixed-size mutable block of memory and added to Luau 0.601.
See https://luau-lang.org/library#buffer-library for more details.
2023-11-16 12:55:58 +00:00
Alex Orlenko
b879abc418
Add lua_newuserdata_t helper to mlua-sys/luau
2023-10-24 23:58:47 +01:00
Alex Orlenko
a1e39a8620
Remove MemoryState from ExtraData and retrieve using lua_getallocf (recently added to Luau)
2023-10-24 00:23:32 +01:00
Alex Orlenko
ec0fb7614e
Optimize Table serialization (faster traversal)
2023-10-12 10:37:52 +01:00
Alex Orlenko
04c0763146
Optimize iterating over array part of table
2023-10-12 09:52:34 +01:00
Alex Orlenko
2a3980ef62
Add Table::for_each method for fast (faster than pairs()) table pairs traversal.
2023-10-10 12:52:26 +01:00
Alex Orlenko
adb979761e
Optimize table traversal (pairs iterator).
2023-10-10 11:25:21 +01:00
Alex Orlenko
6488477bc4
rustfmt 1.72+
2023-08-27 23:26:27 +01:00
Alex Orlenko
53b7b5b70b
Fix setting userdata (static) fields when it has __index metamethod/function.
...
Closes #312
2023-08-27 23:01:37 +01:00
Alex Orlenko
a802276c56
Fix an edge case when using invalidated (relative) userdata index after processing varargs.
...
This causes Lua API correctness check assertion in debug mode.
Fixes #311 .
2023-08-24 00:54:50 +01:00
Alex Orlenko
e2b3464ec9
impl IntoLuaMulti for StdResult<(), E>
2023-08-20 14:17:18 +01:00
Alex Orlenko
89cf5bf362
impl Default for Lua
2023-08-20 12:16:11 +01:00
Alex Orlenko
7662a7e4ff
Update non-static (scoped) userdata:
...
- Use the new stack api
- Support static fields constructor
- Better error messages (on bad arguments)
2023-08-15 01:22:57 +01:00
Alex Orlenko
d769a95fc5
Add Scope::create_any_userdata()
2023-08-14 17:39:51 +01:00
Alex Orlenko
0e4476c2e3
Add Lua::set_vector_metatable() method (unstable)
2023-08-12 22:46:21 +01:00
Alex Orlenko
d48a2b3f6c
Add OwnedThread type (unstable)
2023-08-12 21:18:12 +01:00
Alex Orlenko
b3592bc23e
Update mutable_globals pointer type to const (luau 0.590)
2023-08-12 17:43:25 +01:00
Alex Orlenko
052310e93d
Update doc for deny_unsupported_types option
2023-08-12 17:40:39 +01:00
Alex Orlenko
09eb7f251b
Support options for Value::serialize() implementation
...
To match `lua.from_value_with()` functionality.
2023-08-12 17:24:57 +01:00
Alex Orlenko
c0c6a33f94
Add new option sort_keys to DeserializeOptions (Lua::from_value method)
...
Closes #303
2023-08-07 11:44:52 +01:00
Alex Orlenko
0cb0a345dd
Hide clippy warning converting i32 to i32
2023-08-07 11:44:35 +01:00
Alex Orlenko
3e479be4e5
Cosmetic changes for the Value conversions + add tests
2023-08-06 23:41:27 +01:00
Alex Orlenko
170aa53e29
Change Table::raw_len() output type to usize.
2023-08-06 22:45:06 +01:00
Akase Cho
021ee946fc
Add helper functions to Value ( #299 )
...
Add helper functions to `Value`
2023-08-06 22:44:32 +01:00
Alex Orlenko
0b928fdfee
Faster table ops
2023-08-03 10:37:52 +01:00
Alex Orlenko
c062cddd87
Fastpath IntoLua/FromLua for StdString and &str
...
This includes direct push to Lua stack and getting value from Lua stack.
2023-08-03 10:02:20 +01:00
Alex Orlenko
94a79656ad
Faster Function::call()
2023-08-03 01:16:52 +01:00
Alex Orlenko
cd0c8a4584
Optimize async functionality:
...
Rewrite using the new `push_into_stack()`/`from_stack()` methods.
Also store thread state (pointer) in `Thread` struct to avoid getting it every time.
Async userdata methods still need to have arguments stored in ref thread as stack is empty on every poll().
2023-08-03 00:56:17 +01:00
Alex Orlenko
4fff14a144
impl Drop for MultiValue
...
This action would automatically return container to the pool on drop (instead of doing it manually)
2023-08-01 11:21:26 +01:00
Alex Orlenko
196c09a0d6
New (unsafe and private) methods for IntoLua/FromLua traits: push_into_stack/from_stack.
...
They allow to push Value directly to Lua stack or get Value from Lua stack without creating MultiValue container.
This approach is a big optimization opportunity and already demonstrated great results.
For instance, obtaining `&T` for userdata methods are now work directly from stack value without copying to auxiliary stack.
2023-07-31 22:13:23 +01:00
Alex Orlenko
114f072269
Update module entrypoint function.
...
Return c_int instead of Result (and avoid potential panic on Rust side).
2023-07-31 17:49:07 +01:00
Alex Orlenko
dc94d51d97
Update Luau compiler options
2023-07-28 21:45:19 +01:00
Alex Orlenko
a85e757d4d
Bump luau-src to v0.6.0+luau588
...
This release has better codegen support (and breaking changed unfortunately)
2023-07-28 20:30:46 +01:00
Alex Orlenko
51a2959312
Add v0.9 release notes
...
Prepare v0.9-rc.2 release
2023-07-28 00:07:31 +01:00
Alex Orlenko
28bcc73f2c
Move impl IntoLua for WrappedFunction to the function.rs file
2023-07-27 15:19:34 +01:00
Alex Orlenko
8b71f94141
Fix AsChunk trait to support capturing wrapped Lua types (AnyUserData::wrap() and Function::wrap()).
...
This is a breaking change, the `'lua` lifetime used to in environment moved to the trait declaration.
2023-07-27 13:56:48 +01:00
Alex Orlenko
4daa631178
Set __type metatable field for Luau instead of __name.
...
Other Lua versions continue to use `__name` field.
Also make `MetaMethod` enum non-exhaustive (and add `Type` variant)
Closes #295
2023-07-26 21:43:26 +01:00
Alex Orlenko
9f5325ef2f
Use c-unwind ABI (Rust 1.71+)
2023-07-22 23:54:30 +01:00
Alex Orlenko
fac39a2f46
Drop openresty specific luajit extensions
2023-07-20 01:02:23 +01:00