Alex Orlenko
0215c31a3a
Refactor Lua instance structure.
...
The idea is to keep same Lua instance across all calls and only change context inside callbacks.
This should solve #104 .
2022-04-13 13:44:12 +01:00
Alex Orlenko
5cd82d0f6b
Refactor `main_state` handling
2022-04-13 13:44:11 +01:00
Alex Orlenko
d1c80be033
Don't cast *const to *mut (for pointers comparison)
2022-04-08 22:52:55 +01:00
Alex Orlenko
a8fef51e86
(minor) Fix capturing variables in protect_lua closures
2022-04-08 21:15:57 +01:00
Alex Orlenko
28a063c1e5
Implement Hash for Lua String
2022-04-08 20:02:18 +01:00
Alex Orlenko
55fac90a74
Fix Luau documentation in docs.rs
...
Enable `Lua::gc_inc` for Luau
Mark `debug` module as safe for Luau
2022-04-08 20:02:12 +01:00
Alex Orlenko
70d287cf9f
Don't pass Lua handler to interrupt callback (Luau) as it's not safe.
...
Optimize callback_error_ext to check stack only before allocating a new WrappedFailure.
2022-04-08 10:45:28 +01:00
Alex Orlenko
d607039a31
v0.8.0-beta.3
2022-04-03 23:38:41 +01:00
Alex Orlenko
0ea65a2985
Fix doc test
2022-04-03 22:13:54 +01:00
Alex Orlenko
f63f147265
Add `set_mutable_globals` to Luau compiler
2022-03-31 20:35:52 +01:00
Alex Orlenko
595dc3e95f
Move some Luau functionality to a new module
...
Immplement native "vector" function to construct vectors
2022-03-31 19:31:37 +01:00
Alex Orlenko
ac28c8d8d2
Add vector_lib/vector_ctor options to Luau Compiler (hidden)
2022-03-31 19:05:19 +01:00
Alex Orlenko
d5315da8d1
Fix tests
2022-03-31 12:23:21 +01:00
Alex Orlenko
516f01ed44
Increase internal caches size
2022-03-31 00:07:05 +01:00
Alex Orlenko
4492a20bbc
Make LuaHook as Fn instead of FnMut to remove Mutex and improve performance
2022-03-30 23:55:34 +01:00
Alex Orlenko
595bc3a2b3
Support Luau interrupts ( closes #138 )
2022-03-30 22:01:06 +01:00
Alex Orlenko
87c10ca93d
Sandboxing support
2022-03-28 23:42:35 +01:00
Alex Orlenko
f75b7b7879
Remove Lua::into_static/from_static
2022-03-26 00:30:57 +00:00
Alex Orlenko
ec1fa04085
Update docs
2022-03-25 00:43:54 +00:00
Alex Orlenko
714dd6249f
Enable Thread::reset for Luau
2022-03-23 21:13:48 +00:00
Alex Orlenko
9533f08d3a
Use `lua_xpush` for Luau
2022-03-23 01:24:54 +00:00
Alex Orlenko
0a3b65af88
Support `readonly` table attribute (luau)
2022-03-22 21:33:29 +00:00
Alex Orlenko
3a9c8c2da2
Add Luau vector datatype support
2022-03-22 21:14:06 +00:00
Alex Orlenko
55b778c68b
Fix clippy warnings
2022-03-22 00:47:31 +00:00
Alex Orlenko
c6d3727171
Prepare v0.8.0-beta.1
2022-03-21 01:37:08 +00:00
Alex Orlenko
4e0ba6559e
Add `require` function to Luau
2022-03-21 01:08:48 +00:00
Alex Orlenko
405cff5d49
Move StaticUserData* implementation from `lua` module to the new `userdata_impl`
2022-03-21 01:08:48 +00:00
Alex Orlenko
37cddc6b1c
Replace compat53_countlevels with lua_stackdepth for Luau
2022-03-21 01:08:48 +00:00
Alex Orlenko
2c069f7033
Update to luau 0.519
2022-03-21 01:08:48 +00:00
Alex Orlenko
1e61d1dadc
Return binary chunks support in safe mode.
...
Lua has many ways to load binary bytecode and this restriction was easy to bypass.
2022-03-21 01:08:47 +00:00
Alex Orlenko
32124b31a0
Move chunks structs to a new module.
...
Add Luau Compiler interface to compile sources.
2022-03-21 01:08:47 +00:00
Alex Orlenko
3e5f8e7bb8
Enable `Lua::inspect_stack` for Luau
2022-03-21 01:08:47 +00:00
Alex Orlenko
cab92f4ea2
Update luaL_traceback for Luau
2022-03-21 01:08:47 +00:00
Alex Orlenko
fa99f62a99
Fix __index and __newindex wrappers for Luau
2022-03-21 01:08:40 +00:00
Alex Orlenko
eed7b1f3af
More ffi module refactoring
2022-03-20 20:30:20 +00:00
Alex Orlenko
c322e028e2
Initial Luau support
2022-03-20 20:30:20 +00:00
Alex Orlenko
6dc127f4eb
Refactor ffi module
...
Initial Luau support work
2022-03-20 20:30:18 +00:00
Tarik02
d4f8dce597
Fix async userdata __index, __newindex metamethods
2022-03-20 20:03:47 +00:00
Alex Orlenko
c85616137a
v0.7.4
2022-03-01 19:59:49 +00:00
Alex Orlenko
10826a7e67
Update `create_registry_value` doc
2022-02-15 19:45:37 +00:00
Alex Orlenko
18c3255c90
Optimize `Lua::create_registry_value` by reusing previously expired registry keys.
2022-02-14 21:20:57 +00:00
Alex Orlenko
6190427f37
Add Lua::replace_registry_value
2022-02-14 20:51:24 +00:00
Alex Orlenko
9a5a341e44
Recognize LuaJIT TCDATA type to generate correct panic message.
...
Relates to #127
Should be fixed in a next major release by adding support of TCDATA type.
2022-02-12 18:40:18 +00:00
Alex Orlenko
dd91ebfbe5
Grow/check Lua stack in unpack
2022-02-12 17:10:43 +00:00
Alex Orlenko
f9fe869b76
Optimize async calls:
...
Rewrite "unpack" function using C api rather than high level abstraction.
2022-01-29 12:39:30 +00:00
Alex Orlenko
c213a85ef0
v0.7.3
2022-01-19 18:12:45 +00:00
Alex Orlenko
418e8fba32
v0.7.2
2022-01-17 11:12:46 +00:00
Alex Orlenko
5a06778fbc
Always restore original Lua state after creating Future in async call.
...
Fixes #121
2022-01-16 20:57:43 +00:00
Alex Orlenko
e33bdddc7a
Pass Box wrapped pointer to allocator fn instead of reference
2022-01-08 23:06:01 +00:00
Alex Orlenko
cfb5d3fd45
Fix clippy warnings
2021-12-28 12:23:06 +00:00
Alex Orlenko
386eb7a2b7
v0.7.1
2021-12-23 19:42:52 +00:00
Alex Orlenko
66c9c633b2
Generate traceback from level 0 (instead of 1)
...
Fixes #112
2021-12-23 17:53:20 +00:00
Alex Orlenko
f1e357ce52
Hide (doc) into_static/from_static methods
2021-12-01 00:28:08 +00:00
Alex Orlenko
be09a1fabf
Update lifetimes for few functions in Lua
2021-11-30 23:14:08 +00:00
Alex Orlenko
89580dd863
v0.7.0
2021-11-25 18:18:38 +00:00
Alex Orlenko
2fee3e7891
Update docs
2021-11-25 18:01:41 +00:00
Alex Orlenko
1b74c89509
More performance optimizations
2021-11-25 11:16:12 +00:00
Alex Orlenko
066d28f5e5
Update `Lua::unload` doc & fix clippy warnings
2021-11-23 19:01:23 +00:00
Alexander Polakov
d49757c7db
Add unload() to remove module
2021-11-23 18:36:57 +03:00
Alex Orlenko
170818c469
Add `call()` function to `TableExt` to call tables with `__call` metamethod as functions
2021-11-21 23:47:45 +00:00
Alex Orlenko
e2ebe65306
Add `get_named_user_value` and `set_named_user_value` to `AnyUserData`
2021-11-21 23:42:47 +00:00
Alex Orlenko
0e1be19cbb
Move hook_proc under `Lua::set_hook` to use callback_error_ext
2021-11-16 12:27:56 +00:00
Alex Orlenko
0ef709672d
Add set_warning_function/remove_warning_function/warning functions to Lua for 5.4
...
This utilizes Lua 5.4 warnings system (https://www.lua.org/manual/5.4/manual.html#pdf-warn )
2021-11-16 12:05:34 +00:00
Alex Orlenko
41503b4fb8
Update callback_error_ext (+ fix callback multi states handling)
2021-11-16 11:53:51 +00:00
Alex Orlenko
19bd254e1e
Update comments
2021-11-14 23:27:20 +00:00
Alex Orlenko
50f20e0c2c
Add thread (coroutine) cache to reset and later reuse to execute async functions.
...
It works on Lua 5.4 and LuaJIT (vendored) with `lua_resetthread` function.
2021-11-14 23:19:47 +00:00
Alex Orlenko
7efe807199
Include `StdLib` to prelude
2021-11-14 23:19:47 +00:00
Alex Orlenko
63ea8c7662
Rename wrapped_failures pool to cache
2021-11-14 23:19:47 +00:00
Alex Orlenko
863d36d5a1
Performance optimization: cache and reuse `MultiValue` containers
2021-11-12 15:32:53 +00:00
Alex Orlenko
a8017c10b9
Update callback_error(_ext)
2021-11-12 12:41:03 +00:00
Alex Orlenko
2c7d7117d2
Optimize MultiValue allocations (recycle old container)
2021-11-12 10:55:20 +00:00
Alex Orlenko
6d689c35aa
Update `hook::Debug` struct
2021-11-09 18:20:36 +00:00
Alex Orlenko
8af1304fd0
Add `Lua::inspect_stack` to get information about the interpreter runtime stack.
...
This functionality is provided by `lua_getstack`.
2021-11-09 14:18:14 +00:00
Alex Orlenko
153502ec73
Add `set_nth_user_value` and `get_nth_user_value` to `AnyUserData`
...
with `n` up to 65535 for all Lua versions.
2021-11-08 21:16:31 +00:00
Alex Orlenko
2ea2b1f4fb
Refactor `Error::CallbackError` reporting and include source to
...
fmt::Display implementation.
This fixes #71 .
2021-11-07 22:53:37 +00:00
Alex Orlenko
ef8c1556e6
Add optional Send to Lua::app_data
2021-11-07 15:03:17 +00:00
Alex Orlenko
b0da2fc439
Switch Table::serialize to FxHashSet
2021-11-07 14:49:19 +00:00
Alex Orlenko
204eedde3c
Merge branch 'dev'
2021-11-07 13:07:22 +00:00
Alex Orlenko
fbc2973aff
Fix recursive tables serialization when using `serde::ser::Serialize`
...
implementation for Table.
Fixes #98 .
2021-11-06 21:12:00 +00:00
Alex Orlenko
d0641d812f
Refactor a bit conversion int->number
2021-11-04 13:15:26 +00:00
Alex Orlenko
ad70ba54a5
Publish `AnyUserData::take`
2021-11-04 12:32:19 +00:00
Alex Orlenko
806f0bcef4
Add luajit52 support (LuaJIT with partial compatibility with Lua 5.2)
2021-11-04 12:26:11 +00:00
Alex Orlenko
0741db7565
Make (De)SerializeOptions as const
2021-11-04 01:07:38 +00:00
Alex Orlenko
d88a4282c7
Replace macro-based implementation `ToLua` for arrays to const generics
2021-11-04 00:59:39 +00:00
Alex Orlenko
d7d987fa14
Add async meta methods for all Lua except 51
2021-11-04 00:57:49 +00:00
Alex Orlenko
4d3ac6d8c5
Add new "application data" api
2021-10-19 11:45:39 +01:00
Alex Orlenko
a9ca99349c
Switch to FxHash
2021-10-19 11:45:38 +01:00
Alex Orlenko
f71db80a74
Change definition of `lua_State` to opaque struct
2021-10-19 11:45:38 +01:00
Alex Orlenko
09af3e021a
v0.6.6
2021-10-12 12:22:14 +01:00
Alex Orlenko
cab2e5a48e
Fix clippy warnings
2021-10-12 12:02:42 +01:00
Alex Orlenko
ed48b11e7f
Update documentation references
...
Using rustdoc links (see RFC https://github.com/rust-lang/rfcs/pull/1946 )
2021-10-12 00:49:45 +01:00
Alex Orlenko
259eb09ae1
v0.6.5
2021-10-05 18:11:32 +01:00
Alex Orlenko
a544e41b33
Add (hidden) method `UserData::take()` to take out value from userdata
2021-10-05 15:46:50 +01:00
Alex Orlenko
c8c64a1b5a
Add serializing i128/u128 types.
...
Fixes #81 .
2021-10-04 23:20:11 +01:00
Alex Orlenko
eff0bbb052
Add `Location::caller()` information to `Lua::load()` if chunk's name is None
2021-10-03 23:20:07 +01:00
Alex Orlenko
d098c9ccf6
Refactor Waker handling in async code.
...
Instead of storing `Option<Waker>` in the Lua registry, store it on the reference thread.
It gives approx +10% performance gain when calling async function.
2021-10-03 22:09:19 +01:00
Alex Orlenko
c62b17a5c8
Fixed bug when polling async futures ( #77 )
...
We expect first value returned via coroutine.yield() to be a special Pending type.
But instead we checked second value.
2021-10-02 07:23:24 +01:00
Alex Orlenko
584b377640
v0.6.4
2021-09-28 18:53:47 +01:00
Alex Orlenko
5b1483bd56
Change syntax of `protect_lua` macro
2021-09-28 18:47:08 +01:00
Alex Orlenko
a74b637ed4
Update check_stack requirements
2021-09-28 18:41:25 +01:00
Alex Orlenko
7623016d4a
Fix doc feature labels
2021-09-28 18:15:53 +01:00
Alex Orlenko
bdd3c923ba
Fix table traversal used in recursion detection.
...
This fixes serializing same table multiple times within a parent table.
2021-09-28 16:41:39 +01:00
Alex Orlenko
d586eef0f5
Refactor UserData metatables handling
2021-09-28 16:33:36 +01:00
Alex Orlenko
01154c0616
Minor refacor of wrapped failures cache
2021-09-28 16:27:24 +01:00
Alex Orlenko
e42d67c70d
Make `protect_lua` as a smart macro to choose from C/closure
2021-09-28 16:26:30 +01:00
Alex Orlenko
771a7775c5
Perf optimization: refactor metatable cache
2021-09-28 16:25:08 +01:00
Alex Orlenko
ee1c8a1a3d
Add inline attributes to few hot funcs
2021-09-28 16:19:29 +01:00
Alex Orlenko
3597e34ffb
Fix internal HookCallback type (missing optional Send)
2021-09-28 16:19:12 +01:00
Alex Orlenko
35eedd5a5e
v0.6.3
2021-09-16 00:55:49 +01:00
Alex Orlenko
fc1fe2c15e
Add `DeserializeOptions` struct to control deserializer behavior.
...
This solves #74 and provides a way to deserialize a Lua globals table.
2021-09-15 23:45:08 +01:00
Alex Orlenko
27e7facf9b
Fix clippy warnings
2021-08-22 00:35:31 +01:00
Alex Orlenko
31d32f2dda
Wrap `ExtraData` to `Arc<UnsafeCell>>` instead of raw pointer and attach finalizer.
...
This would allow to properly deallocate memory in module mode when closing lua state.
2021-08-21 23:17:09 +01:00
Alex Orlenko
7d1b322e18
Change `ExtraData::mem_info` to `Box<MemoryInfo>`
2021-08-19 01:42:32 +01:00
Alex Orlenko
d906405818
Simplify interface of `hook::HookTriggers`
2021-08-18 18:49:17 +01:00
Alex Orlenko
60fd060d47
Clarify about calling `Lua::init_from_ptr()` multiple times
2021-08-17 15:34:34 +01:00
Alex Orlenko
9f02a9ca09
Add `Debug::event()` to the hook's Debug structure
2021-08-17 15:17:03 +01:00
Alex Orlenko
1d7f105585
Don't catch Rust panics in userdata finalizer on drop
2021-08-06 11:14:16 +01:00
Alex Orlenko
1020315a9b
Update documentation about `FromLua` for UserData. Closes #64
2021-08-04 12:12:02 +01:00
Alex Orlenko
628b70f561
v0.6.2
2021-07-13 20:29:25 +01:00
Alex Orlenko
8a7e546c66
Shrink unsafe block in `Lua::load_from_function` and update doc
2021-07-13 16:43:00 +01:00
Alex Orlenko
59253410bb
Update trybuild messages
2021-07-13 11:59:33 +01:00
Alex Orlenko
5fb7b96704
Replace custom `UserDataRef(Mut)` with standard `Ref`(Mut)
2021-07-13 10:53:10 +01:00
Alex Orlenko
17162b1e0b
UserData improvements:
...
1) Optimize `make_userdata` call
2) Refactor `UserDataWrapped` and make it enum
2021-07-11 01:30:17 +01:00
Alex Orlenko
934aa3b65f
Forgotten optimization for `box_method_mut`
2021-07-09 23:25:48 +01:00
Alex Orlenko
3bffe1d7c3
Combine WrappedError and WrappedPanic structs to WrappedFailure enum
2021-07-09 00:05:29 +01:00
Alex Orlenko
582b2c585f
Rename init_gc_metatable_for and get_gc_metatable_for
2021-07-08 22:57:54 +01:00
Alex Orlenko
56b6b128b5
Minor fixes/compilation after revert
2021-07-08 22:53:53 +01:00
Alex Orlenko
1731f5d61b
Revert "Make `protect_lua` as a smart macro to choose from C/closure"
...
This reverts commit 84fe5f7f76
.
2021-07-08 18:41:10 +01:00
Alex Orlenko
60822d12d2
Revert "Move away from metatable hashmap cache to direct keys"
...
This reverts commit adbc9ccc9b
.
2021-07-08 18:40:14 +01:00
Alex Orlenko
8ff610529b
Don't wrap ExtraData to Arc<Mutex> and use raw pointer instead.
...
This causes serious performance issues and given that Lua is
single threaded (not Sync) it's safe to use a raw pointer instead.
2021-07-08 17:32:20 +01:00
Alex Orlenko
adbc9ccc9b
Move away from metatable hashmap cache to direct keys
2021-07-08 15:37:18 +01:00
Alex Orlenko
84fe5f7f76
Make `protect_lua` as a smart macro to choose from C/closure
2021-07-07 12:54:19 +01:00
Alex Orlenko
1fe583027b
Add new functions: `lua.load_from_function()` and `lua.create_c_function()`
...
This should be useful to register embedded C modules to Lua state.
Provides a solution for #61
2021-07-05 00:03:18 +01:00
Alex Orlenko
41aae83304
Optimize callback creation
...
Attach only one upvalue to callbacks rather than two.
This leads to less lookup to Lua registry.
2021-06-30 16:50:50 +01:00
Alex Orlenko
fc84e8623e
v0.6.1
2021-06-28 00:10:07 +01:00
Alex Orlenko
8aae9a7c3e
Update chunk! documentation
2021-06-28 00:10:04 +01:00
Alex Orlenko
24bbd62564
Fix converting Lua sequence table to HashSet/BTreeSet
2021-06-25 01:49:09 +01:00
Alex Orlenko
7feabffc37
v0.6.0
2021-06-21 23:19:56 +01:00
Alex Orlenko
f24fdfdb80
Update `AsChunk::env` function prototype
2021-06-21 23:19:33 +01:00
Alex Orlenko
8d474bbf8d
Fix clippy warning
2021-06-21 03:25:21 +01:00
Alex Orlenko
9e3b0ecc1e
Even better optimization after 14d5c2c887
2021-06-20 19:48:33 +01:00
Alex Orlenko
42b396d0d1
Optimize non-wrapped userdata method calls
2021-06-20 12:38:47 +01:00
Alex Orlenko
14d5c2c887
Lua->Rust callback performance improvements
2021-06-20 00:24:53 +01:00
Alex Orlenko
4e92ea341b
Fix userdata memleak in edge case.
...
This can happen if we unable to push metatable with `__gc` metamethod after pushing userdata.
In this case Lua will never execute drop.
Instead, we will push metatable first and then userdata.
2021-06-18 17:45:20 +01:00
Alex Orlenko
bf286751fa
Improve code coverage
2021-06-17 00:47:15 +01:00
Alex Orlenko
3b94b4e86f
Implement Hash for RegistryKey. Closes #57
2021-06-16 12:12:42 +01:00
Alex Orlenko
9f0378b77e
Complitely remove the C shim
2021-06-16 22:21:45 +01:00
Alex Orlenko
d3f44354e0
Revert commit ced808d5ab
...
I think this experiment is unsuccessful and does not work well in a module mode
with dynamic symbols resolution and mixing between different mlua instances.
Overall the Rust bug has been fixed and we can wait for the "C-unwind" feature become stable.
2021-06-16 22:13:01 +01:00
Alex Orlenko
fca21d56d3
Check stack in entrypoint1 before pushing value to a stack
2021-06-13 23:30:56 +01:00
Alex Orlenko
6e52bb7e65
Fix clippy warnings && tests
2021-06-13 23:30:54 +01:00
Alex Orlenko
08ffeb0ca9
Improve module mode:
...
- Don't hide module function inside `luaopen_%` function.
- Raise Lua exception instead of panic if module function returns error.
2021-06-13 22:38:51 +01:00
Alex Orlenko
3b9d8a7b5f
Keep all Lua symbols in unsafe mode to load C modules
2021-06-12 18:00:55 +01:00
Alex Orlenko
0fe898c0dd
v0.6.0-beta.3
2021-06-04 12:38:09 +01:00
Alex Orlenko
821f1125b6
Add `String::to_string_lossy`
2021-06-04 00:16:40 +01:00
Alex Orlenko
abb95c3c56
Remove `T: Clone` requirement from `add_async_function`
2021-06-03 23:21:00 +01:00
Alex Orlenko
64faebf407
Add `__ipairs` metamethod (again) for Lua 5.2 only
2021-06-03 18:43:29 +01:00
Alex Orlenko
a944f4ad6f
Implement `UserData` for Rc<RefCell>/Arc<Mutex>/Arc<RwLock> wrappers
2021-06-03 16:42:55 +01:00
Alex Orlenko
bae424672a
Treat errors as `Send + Sync` to be compatible with `anyhow` crate
2021-05-31 11:05:51 +01:00
Alex Orlenko
e8de2a458a
Allow multiple entrypoints in a single module share the same Lua state.
...
Previously it would initialize different Lua instances.
Fixes #49 .
2021-05-18 20:07:34 +01:00
Alex Orlenko
973b5c3bf5
v0.6.0-beta.2
2021-05-13 23:10:19 +01:00
Alex Orlenko
b610a79d66
Update docs & minor error handling code changes
2021-05-11 14:18:22 +01:00
Alex Orlenko
fe39ae09bf
Try different approach for errors handling.
...
Instead of convering error to CallbackError in error message handler,
do it earlier at callback_error stage.
Better fix for #44 .
2021-05-11 00:53:07 +01:00
Alex Orlenko
0bad4a0ff9
Fix spelling
2021-05-10 19:53:38 +01:00
Alex Orlenko
35b7504076
Improve error reporting in module mode.
...
Attach traceback to a WrappedError.
Fixes #44 .
2021-05-10 17:45:00 +01:00
Alex Orlenko
c9b8eb5418
Re-export UserDataFields/UserDataMetatable
2021-05-09 09:30:33 +01:00
Alex Orlenko
3e03f4201c
Add chunk! macro support
2021-05-05 22:13:51 +01:00
Alex Orlenko
5199b02346
Update lua state when polling futures
2021-05-05 12:37:27 +01:00
Alex Orlenko
5293b8d6d2
Add `Thread::reset()` for luajit/lua54
2021-05-05 11:11:32 +01:00
Alex Orlenko
7541b6f3f3
Remove deprecated `AnyUserData::has_metamethod()`
2021-05-04 23:57:47 +01:00
Alex Orlenko
205510a540
Update sys align code
2021-05-04 23:55:24 +01:00
Alex Orlenko
2250421438
Fix clippy warnings
2021-05-04 23:42:33 +01:00
Alex Orlenko
8e57e6fa5a
v0.6.0-beta.1
2021-05-04 00:43:26 +01:00
Alex Orlenko
3829b72212
Update code docs
2021-05-03 22:33:18 +01:00
Alex Orlenko
af67971e0d
Make `SerializeOptions` non_exhaustive.
...
Add builder implementation similar to `LuaOptions` to set individual options.
2021-05-03 22:33:12 +01:00
Alex Orlenko
0f4bcca7ce
Add `LuaOptions` to customize Lua/Rust behaviour.
...
The only option is `catch_rust_panics` to optionally disable catching Rust panics via pcall/xpcall.
2021-05-03 21:33:49 +01:00
Alex Orlenko
585c0a25d8
Replace 'Thread already finished' error with common `Error::CoroutineInactive`
2021-05-03 13:11:59 +01:00
Alex Orlenko
64346ce56c
Implement/Derive `Debug` for Lua and few other structs
2021-05-03 13:05:43 +01:00
Alex Orlenko
108682cc71
Store `safe` property in Extra state to inherit into Lua structs made from pointers
2021-05-03 12:40:14 +01:00
Alex Orlenko
4af7bcf0d9
Implement ToLua/FromLua for Box<str> and Box<[T]>
2021-05-03 12:22:11 +01:00
Alex Orlenko
a4567cb5f7
Improve growing the auxiliary stack of the ref thread:
...
Try to double size first, if not fulfilled try halving in a loop till 0.
Fix unwinding after panic in ref_stack_pop.
Add test to check the stack exhaustion.
2021-05-02 23:26:02 +01:00
Alex Orlenko
26d8d899f2
Allocate Waker slot in Registry in re-use it (instead of creating new userdata for it)
2021-05-02 13:04:02 +01:00
Alex Orlenko
67bc0b1196
Make AsyncPollPending internal value as LightUserData
2021-05-02 12:06:32 +01:00
Alex Orlenko
e8505b5239
Change signature of Function::dump() to remove Result
2021-05-02 11:48:42 +01:00
Alex Orlenko
3f55958bdd
Stack assertions review
...
Other minor code and documentation updates
2021-05-02 11:42:03 +01:00
Alex Orlenko
463fc646bc
Refactor UserDataCell
2021-04-27 21:55:31 +01:00
Alex Orlenko
b5f1325f2f
Store nonstatic UserData pointer in self userdata (instead of metatable)
2021-04-27 17:06:37 +01:00
Alex Orlenko
269ef9c55d
Fix lua51 scope compilation
2021-04-27 10:11:37 +01:00
Alex Orlenko
f5b88624ce
Hide Deserializer inner fields
...
Improve documentation
2021-04-27 10:04:18 +01:00
Alex Orlenko
2fae94586d
Remove Result from lua.null() and lua.array_metatable(). They never fail.
2021-04-27 00:38:13 +01:00
Alex Orlenko
bc81d1016f
Add SerializeOptions to to change default Lua serializer behaviour
2021-04-27 00:35:53 +01:00
Alex Orlenko
c19f12898d
Replace lazy_static with once_cell
2021-04-27 00:29:38 +01:00
Alex Orlenko
c7541ef7d3
More tests
2021-04-27 00:29:38 +01:00
Alex Orlenko
41a1a0d15a
Add more checks for destructed userdata in AnyUserData
2021-04-27 00:29:38 +01:00
Alex Orlenko
c10169a380
cargo fmt and other minor fixes
2021-04-27 00:29:38 +01:00
Alex Orlenko
ced808d5ab
Don't trigger longjmp in rust.
...
Motivation behind this change is upcoming breaking change in Rust
compiler v1.52.0 to prevent unwinding across FFI boundaries.
https://github.com/rust-lang/rust/pull/76570
The new functionality requires nightly compiler to declare FFI
functions as "C-unwind".
The fundamental solution is to use C shim to wrap "e" and "m"
Lua functions in pcall.
Additionally define Rust calling convention to trigger lua_error
on Rust behalf.
2021-04-27 00:29:38 +01:00
Alex Orlenko
c95ac32741
Add inline(always) to some compat53 functions
2021-04-27 00:29:37 +01:00
Alex Orlenko
5a7ad9f7cd
Fix some clippy warnings & minor changes
2021-04-27 00:29:37 +01:00
Alex Orlenko
decb5b9e37
Make MetaMethod::name() public
...
Tests for UserDataMetatable::pairs()
2021-04-27 00:29:37 +01:00
Alex Orlenko
1635903d3f
Improve/fix scoped UserData drop
2021-04-27 00:29:37 +01:00
Alex Orlenko
2b2df708f9
Add `UserDataFields` API.
...
Provide safe access to UserData metatable and allow to define custom metamethods..
2021-04-27 00:29:37 +01:00
Alex Orlenko
cb1ac28f2a
v0.5.4
2021-04-20 02:05:05 +01:00
Alex Orlenko
0bd36b42e7
Make error::Error non_exhaustive
2021-04-16 22:10:10 +01:00
Alex Orlenko
e0da6ac929
Hide raw_sequence_values_by_len under async/serialize feature flags
2021-04-16 22:09:49 +01:00
Alex Orlenko
0c7db4916c
Serialize only known (registered) userdata.
...
This reverts commit 7332c6a
.
Non-static userdata is a special case and can cause segfault if try to serialize it.
Now it should be safe, plus I added non-static userdata destructor to generate better error messages
in case of accessing destructed userdata.
2021-04-16 22:01:55 +01:00
Alex Orlenko
b9589491e4
Improve panic handling (check for twice resumed panics)
2021-04-15 23:04:36 +01:00
Alex Orlenko
c363fb9288
v0.5.3
2021-03-04 00:01:06 +00:00
Alex Orlenko
726fde7e1f
Optimise async callbacks (polling)
...
call async Rust callback [sum] 3 10
time: [59.338 us 59.729 us 60.097 us]
change: [-10.336% -8.6212% -6.8003%] (p = 0.00 < 0.05)
Performance has improved.
2021-03-03 23:21:56 +00:00
Alex Orlenko
7cb9c4f39c
Fix bug in returning nil-prefixed multi values from async function
2021-03-03 22:32:22 +00:00
Alex Orlenko
b93ace0224
v0.5.2
2021-02-27 19:32:25 +00:00
Alex Orlenko
5f37bf812d
Fix/whitelist some clippy warnings
2021-02-27 19:23:08 +00:00
Alex Orlenko
7775b4a99c
Bump copyright year
2021-02-26 10:35:00 +00:00
Alex Orlenko
1d9cda10eb
Add ToLua implementation for Cow<str> and Cow<CStr>
2021-02-26 10:23:36 +00:00
Alex Orlenko
7332c6a28c
Remove `registered_userdata_mt` check
2021-02-22 20:38:36 +00:00
Alex Orlenko
335f433df4
Optimize callbacks
2021-02-21 23:52:20 +00:00
Alex Orlenko
2aed548747
Fix scoped async destruction of partially polled futures
2021-02-21 23:52:07 +00:00
Alex Orlenko
aeb66115f7
v0.5.1
2021-01-20 11:04:03 +00:00
Alex Orlenko
b6ff501b8c
Fix numeric types conversion for 32bit lua. Fix #27
2021-01-20 10:46:23 +00:00
Alex Orlenko
e62fd400d7
Remove unused exports from glue.{c,rs} && Fix some clippy warnings
2021-01-16 13:31:45 +00:00
Alex Orlenko
618874ef3c
v0.5.0
2020-12-31 13:39:42 +00:00
Alex Orlenko
9f82cbe0c5
Update documentation
2020-12-31 13:39:38 +00:00
Alex Orlenko
bedd430eb5
Re-export mlua_derive
2020-12-29 22:26:15 +00:00
Alex Orlenko
afc41ab23c
Add serialization example & update others
2020-12-29 21:39:34 +00:00
Alex Orlenko
ce8955f5b9
Don't try to disable c modules without `package` loaded. Fix #24
2020-12-22 23:05:08 +00:00
Alex Orlenko
6e2b687cb7
Serde support (serialize feature flag)
2020-12-14 00:51:26 +00:00
Kai Schmidt
c65058a40a
impl `ToLua` and `FromLua` for `HashSet` and `BTreeSet`
2020-09-27 17:54:47 -07:00
Alex Orlenko
a172c021c9
Update `set_memory_limit` doc
2020-07-30 12:16:25 +01:00
Alex Orlenko
de2c5cd9a9
Fix compilation warnings on nightly rust
2020-07-28 21:10:55 +01:00
Alex Orlenko
d201beadc9
Add ChunkMode enum to mark chunks as text or binary
2020-07-28 21:04:21 +01:00
Alex Orlenko
dd58cdad52
Add Function::dump() to dump lua function to a binary chunk
2020-07-27 23:26:33 +01:00
Eidolon
883bf082b9
Make Lua::load load binary chunks when unsafe
2020-07-27 03:37:38 -05:00
Alex Orlenko
4265250cfd
0.4.1 release
...
Fix docs.rs build features
Update Cargo.toml description
2020-06-08 14:08:07 +01:00
Alex Orlenko
efcaef3db7
Enable hooks support for LuaJIT
2020-06-07 20:38:19 +01:00
Alex Orlenko
0a13a9631d
Fix LuaJIT 2.1 libraries loading
2020-06-07 20:38:19 +01:00
Alex Orlenko
3d42bc4ca6
Refactor main_state handling
...
Don't allow to set hook if main_state is not available
Remove Lua 5.1 dirty hack
2020-06-07 20:38:19 +01:00
Alex Orlenko
95b9fe8dac
Fix clippy warnings
2020-06-07 20:38:19 +01:00
Alex Orlenko
5952a1f709
New `module` feature
...
Don't link module with Lua core (see: http://lua-users.org/wiki/BuildingModules )
Example and tests for modules
2020-06-07 20:38:11 +01:00
Alex Orlenko
d5c22d989a
Dirty hack to get lua 5.1 main state
2020-06-06 16:07:16 +01:00
Alex Orlenko
a9a4cf13f1
Add `has_metamethod` to `AnyUserData`
2020-06-06 16:07:16 +01:00
Alex Orlenko
c3822219e0
Add hooks support (based on rlua v0.17 implementation)
...
This feature works on lua54, lua53, lua52 and lua51 only.
LuaJIT is unstable.
2020-06-06 16:07:16 +01:00
Alex Orlenko
f6da437d8b
Update docs
2020-06-06 16:07:16 +01:00
Alex Orlenko
2fd6757f39
Add LuaJIT 2.0.5 stable support
2020-06-06 16:07:16 +01:00
Alex Orlenko
cccec914ca
Remove deprecated Table::call
2020-05-15 01:48:57 +01:00
Alex Orlenko
687ecc9247
Update documentation
2020-05-15 01:48:57 +01:00
Alex Orlenko
79bfb112aa
Remove redundant lifetimes
2020-05-15 01:48:57 +01:00
Alex Orlenko
9f2d598517
Add clippy check and fix clippy warnings
2020-05-15 01:48:56 +01:00
Alex Orlenko
5a9a308790
Provide safe and unsafe Lua modes:
...
- In safe mode Lua would not have ability to load C code via `require` or `package.loadlib`
- Unsafe mode allows everything.
2020-05-12 02:14:48 +01:00
Alex Orlenko
1b2b94c808
Use Rust allocator for new Lua states that allows to set memory limit
2020-05-12 02:14:48 +01:00
Alex Orlenko
526e7418d8
Add MetaMethod::Close to support Lua 5.4 to-be-closed variables
2020-05-12 02:14:47 +01:00
Alex Orlenko
539b569ff4
Add Lua 5.4 (rc2) support
2020-05-11 02:43:34 +01:00
Alex Orlenko
5c226b4915
Lua 5.4 FFI
2020-05-11 02:43:34 +01:00
Alex Orlenko
d366ce0dd4
Scope support (including async)
2020-05-11 02:43:34 +01:00
Alex Orlenko
2bd5c2f6ca
Hide Lua "Send" capability under the optional "send" feature flag
2020-05-11 02:43:34 +01:00
Alex Orlenko
7b0e4b4280
Add Send capability to Lua
2020-05-11 02:43:34 +01:00
Alex Orlenko
6e2bb73cff
Bind Futures lifetimes to 'lua rather than 'static.
...
Fix async examples.
2020-05-11 02:43:34 +01:00
Alex Orlenko
7efcee853d
Don't allow 'callback outlive 'lua
2020-05-11 02:43:33 +01:00
Alex Orlenko
d672e19365
Add ToLua implementation for slices and arrays
2020-04-29 16:12:58 +01:00
Alex Orlenko
bda399a5b4
Get yield function in the moment of async callback creation.
...
This is usefull to temporary override `coroutine.yield` prior to create_async_callback()
and then restore to original value.
2020-04-28 14:29:36 +01:00
Alex Orlenko
fe5e87b0f5
Fix bugs with metatable cache:
...
- Don't use thread_local as Lua can be created in one thread and executed in another (in module mode);
- Make per state storage without luaL_ref;
2020-04-28 14:29:14 +01:00
Alex Orlenko
0efa0fcb6a
Update documentation
2020-04-20 01:52:01 +01:00
Alex Orlenko
c826798a6d
Minor refactor
2020-04-19 16:51:35 +01:00
Alex Orlenko
ee08050c1f
Add TableExt trait with call_method/function methods
2020-04-19 16:15:16 +01:00
Alex Orlenko
222f4df668
Add family of `call_async` function
...
Update documentation
Move async tests to a separate file
2020-04-18 21:26:12 +01:00
Alex Orlenko
47e8a80c1c
v0.3.0-alpha.1 with async support
...
Squashed commit of the async branch.
2020-04-17 22:39:50 +01:00
Alex Orlenko
1a788c48f1
Cherry-pick changes from rlua:
...
- Make Value::type_name() public
- Update CallbackError and ExternalError Display impl
2020-04-15 21:23:00 +01:00
Alex Orlenko
e4dc773aa3
Remove `__ipairs` metamethod deprecated in lua 5.3 and not available by default
2020-01-25 20:47:36 +00:00
Alex Orlenko
27121c779d
Add raw_insert() and raw_remove() for tables (represented as lists)
2020-01-07 20:53:47 +00:00
Alex Orlenko
5eec0ef56b
Implement PartialEq trait for Value (and subtypes)
...
Add equals() method to compare values optionally invoking __eq.
2020-01-07 00:03:03 +00:00
Alex Orlenko
42b33849e1
Add support of loading a specified set of standard libraries
2019-12-26 23:04:21 +00:00
Alex Orlenko
143c3a81a7
Add pair and ipair metamethods support (lua 5.2/5.3 only)
2019-11-30 00:58:42 +00:00
Alex Orlenko
fd17a01456
Add Lua 5.2 support
2019-11-30 00:58:41 +00:00
Alex Orlenko
ae677b0918
Move lua 5.1 support under new "lua51" feature
2019-11-04 22:23:15 +00:00
Alex Orlenko
6874c2e004
Fix examples and docs
2019-11-04 22:23:15 +00:00
Alex Orlenko
29aa25a48b
Dont take wrapped panic in error_tostring()
2019-11-04 22:23:09 +00:00
Alex Orlenko
85607d8bfc
Impl Drop for Lua
2019-10-17 17:05:42 +01:00
Alex Orlenko
ec08a76a41
Don't store extra data in the lua_State extra space
2019-10-17 17:05:42 +01:00
Alex Orlenko
c4fd7a9faf
Lua 5.1 support
2019-10-17 17:05:42 +01:00
Alex Orlenko
b7c578c274
Replace libc with std::os::raw
2019-10-02 22:12:28 +01:00
Alex Orlenko
224ed8ff52
Add mlua_derive proc macro module
2019-10-02 22:12:27 +01:00
Alex Orlenko
cb109f6e36
Rename to mlua
2019-10-01 16:11:12 +01:00
Alex Orlenko
2e5762f6e5
fmt glue.c
2019-09-30 22:34:47 +01:00
Alex Orlenko
2ca4273ffb
Add call method to table
2019-09-30 22:15:27 +01:00
Alex Orlenko
78480b5f31
Use main state to store extra data and auxiliary registries
2019-09-30 22:14:58 +01:00
Alex Orlenko
45159bfda7
Add Table::raw_remove method
2019-09-29 12:56:06 +01:00
Alex Orlenko
0c230a3037
Allow to catch rust panics via pcall
2019-09-29 12:56:06 +01:00
Alex Orlenko
b23ee6a162
cargo fmt
2019-09-29 12:56:03 +01:00
Alex Orlenko
affa85feb0
Backport changes from rlua 0.16 (master branch)
2019-09-29 12:53:13 +01:00
Alex Orlenko
53b352466e
Replace ffi module with implementation from "jcmoyer/rust-lua53" crate
2019-09-29 12:42:07 +01:00
Alex Orlenko
14a68dd6d2
Add dyn to trait objects
2019-09-29 12:42:07 +01:00
Alex Orlenko
47a8ac2b05
Allow only init Lua from an exiting state
2019-09-26 19:17:51 +01:00
kyren
65d8ad2f86
Allow non-utf8 Lua source in load / exec / eval
2018-10-01 06:00:21 -04:00
kyren
51339ecb1d
Some documentation and changelog fixes
2018-10-01 05:14:43 -04:00
kyren
167184ae76
Allow arbitrary [u8] Lua strings
2018-09-30 15:42:04 -04:00
kyren
6d17a383df
Avoid mem::uninitialized in generic context as it is unsound with e.g. bool
2018-09-26 21:07:11 -04:00
kyren
58ce05ff9a
Improve the situation with numerical conversion
...
This is a somewhat involved change with two breaking API changes:
1) Lua::coerce_xxx methods now return Option (this is easier and faster than
dealing with Result)
2) rlua numeric conversions now allow more loss of precision
conversions (e.g. 1.5f32 to 1i32)
The logic for the first breaking change is that mostly the coerce methods are
probably used internally, and they make sense as low-level fallible casts and
are now used as such, and there's no reason to confuse things with a Result with
a large error type and force the user to match on the error which will hopefully
only be FromLuaConversionError anyway.
The logic for the second change is that it matches the behavior of
num_traits::cast, and is more consistent in that *some* loss of precision
conversions were previously allowed (e.g. f64 to f32).
The problem is that now, Lua::coerce_integer and Lua::unpack::<i64> have
different behavior when given, for example, the number 1.5. I still think this
is the best option, though, because the Lua::coerce_xxx methods represent how
Lua works internally and the standard C API cast functions that Lua provides,
and the ToLua / FromLua code represents the most common form of fallible Rust
numeric conversion.
I could revert this change and turn `Lua::eval::<i64>("1.5", None)` back into an
error, but it seems inconsistent to allow f64 -> f32 loss of precision but not
f64 -> i64 loss of precision.
2018-09-26 21:01:54 -04:00
kyren
c3d0110722
Return rlua::Error on out of range numeric conversions using num_traits::cast
2018-09-24 22:14:50 -04:00
kyren
c07abdc03e
Merge pull request #79 from acrisci/system-lua-pkg-config
...
find system lua with pkg-config
2018-09-16 20:57:45 -04:00
kyren
b8da08187d
Move integration tests into top-level tests directory
...
other minor refactors
2018-09-16 20:15:51 -04:00
kyren
7eb71fb1df
Rename Scope::create_userdata to Scope::create_nonstatic_userdata
...
avoids clashing with the previous method name to avoid confusion
2018-09-16 19:54:12 -04:00
kyren
6153ec4b95
basic tests for nonstatic userdata
2018-09-04 19:41:00 -04:00
kyren
add547b356
comment terminology... fix?
2018-09-04 19:09:09 -04:00