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
9e3d495f91
Calculate coverage for Lua 5.4 instead of Lua 5.3
2021-10-12 12:10:04 +01:00
Alex Orlenko
cab2e5a48e
Fix clippy warnings
2021-10-12 12:02:42 +01:00
Alex Orlenko
25a4879cde
Update examples: async_http_client/async_http_server/async_tcp_server
...
Make them following best practices and remove `unsafe` code.
2021-10-12 11:55:25 +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
559f9e6c6b
Add `target.aarch64-apple-darwin` conf to module examples
2021-10-11 18:07:34 +01:00
Alex Orlenko
458b06796c
Fixed LUA_REGISTRYINDEX when generating `glue.rs` on cross-compiling for lua51(jit)
2021-10-08 21:15:22 +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
235fba821e
Update CHANGELOG
2021-10-04 23:28:24 +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
1141073a65
Update CHANGELOG
2021-09-28 18:51:42 +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
53f873a482
Update compile tests error messages
2021-09-16 00:49:17 +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
7e7a44f4cd
Update CHANGELOG
2021-08-22 16:31:14 +01:00
Alex Orlenko
63c4861520
Create FUNDING.yml
2021-08-22 16:22:20 +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
97bd288f56
Add CI tests with enabled address sanitizer
...
Don't use release mode in tests
Try to use cache in CI
2021-07-13 16:17:29 +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
7b5b78fa3d
Add codecov.yml to don't fail on coverage change
2021-06-30 21:52:50 +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
30af919931
Lower once_cell dependency to 1.0
2021-06-25 00:39:10 +01:00
Alex Orlenko
89b5981c59
Fix typos
2021-06-25 00:38:49 +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
c702c5eff2
Add userdata example
2021-06-21 20:28:14 +01:00
Alex Orlenko
e4daff8c16
Add limited recursion test to increase coverage
2021-06-21 12:30:17 +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
b84c10fde6
Update README (include publishing to luarocks section)
2021-06-19 15:00:04 +01:00
Alex Orlenko
b49f9539b6
Update CHANGELOG
2021-06-19 14:59:32 +01:00
Alex Orlenko
a208156ed2
Update examples to include `chunk!` macro
2021-06-19 14:41:48 +01:00
Alex Orlenko
242bdafa75
More tests for arc/rc wrapped userdata
2021-06-19 00:03:09 +01:00
Alex Orlenko
b84d1bd65f
Update test names
2021-06-18 23:13:56 +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