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
Alex Orlenko
0e030d21b0
Add #[derive(FromLua)] macro to opt-in into FromLua<T> where T: 'static + Clone (userdata type).
...
Future macro implementations will allow making T from Lua tables/other values.
Relates to #291 .
2023-07-16 01:57:28 +01:00
Alex Orlenko
2277ee4860
Rename UserDataRegistrar to LuaUserDataRegistry
2023-07-11 22:15:15 +01:00
Alex Orlenko
128c357e07
Use __tostring if __name is not available when pretty printing userdata values
2023-07-11 21:36:02 +01:00
Alex Orlenko
9f0fc27c52
Make Lua::push_value() and Lua::pop_value() public (but hidden from the docs).
...
Can be useful for low-level intergration with mlua values.
Also closes #215 .
2023-07-11 20:03:41 +01:00
Alex Orlenko
bfd1c29c0a
Add back Table::raw_sequence_values() with deprecation notice
2023-07-11 16:02:28 +01:00
Alex Orlenko
5fca2db6d3
Revert Add error-send feature
2023-07-11 15:50:15 +01:00
Alex Orlenko
389526bb80
Some doc improvements
2023-07-11 00:28:24 +01:00
Alex Orlenko
4adc3116f9
Add error-send feature
2023-07-11 00:20:52 +01:00
Alex Orlenko
8e0bdc9934
Remove clippy::let_and_return ignore
2023-07-10 22:58:15 +01:00
Alex Orlenko
7dc6e4c132
Add Error::runtime() helper
2023-07-10 22:41:03 +01:00
Alex Orlenko
44b8c8b7a6
Add AnyUserData::wrap() to more easy way of creating _any_ userdata in Lua.
...
This is similar to `Function::wrap()`.
2023-07-10 16:36:38 +01:00
Alex Orlenko
6b8b79266f
Drop futures-timer dev-dependency
2023-07-10 01:16:27 +01:00
Alex Orlenko
44533d2c9d
Add new module attribule skip_memory_check to improve performance
...
in module mode (by skipping memory allocations check) with extra risks.
2023-07-10 00:43:19 +01:00
Alex Orlenko
c38a1f060b
Various cosmetic changes
2023-07-10 00:04:40 +01:00
Alex Orlenko
5dca743b0c
Improve performance AnyUserData::{is_serializable/inspect/serialize}
2023-07-10 00:01:26 +01:00
Alex Orlenko
01c1952c9f
Rename AnyUserData::get_*_user_value to AnyUserData::*_user_value.
...
To be more consistent with function like `Lua::named_registry_value`, `Lua::add_data_ref` and os on.
2023-07-09 23:50:44 +01:00
Alex Orlenko
dbc3dd95d4
Fix Luau vector4 formatting when throwing it in exception
2023-07-09 23:14:49 +01:00
Alex Orlenko
a9b0cdfc03
Take &str as function name in TableExt and AnyUserDataExt traits
2023-07-09 22:49:16 +01:00
Alex Orlenko
1c20494158
Use usize instead of c_int for table capacity (Lua::create_table_with_capacity)
2023-07-09 22:11:26 +01:00
Alex Orlenko
c9294ad642
Add #[must_use] hint and const to some Luau Compiler functions
2023-07-09 14:13:06 +01:00