Commit Graph

879 Commits

Author SHA1 Message Date
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 8c333354d3
Update Luau to 0.521 2022-03-31 23:28:37 +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 a7cc7f328a
Increase minimum `lua-src` version to 544 2022-03-31 00:09:52 +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 de1cfa070f
v0.8.0-beta.2 2022-03-25 00:44:02 +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 5089dd73c0
Update luau-src to 0.2.1 to fix performance issues related to longjmp 2022-03-23 01:25:34 +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 952dae1de5
v0.8.0-beta.1 2022-03-22 01:01:18 +00:00
Alex Orlenko c88e5f0c4b
Update README 2022-03-22 00:49:50 +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 f52d106a82
Fix "find_dummy" compile error if no lua feature selected 2022-03-01 19:59:42 +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 6e4033abba
Fix tests for Lua 5.4.4 2022-01-29 12:36:09 +00:00
Alex Orlenko c213a85ef0
v0.7.3 2022-01-19 18:12:45 +00:00
Alex Orlenko 4963cc1b8b
Fix cross compilation (bug introduced in 84a174c) 2022-01-19 17:42:32 +00:00
Alex Orlenko 418e8fba32
v0.7.2 2022-01-17 11:12:46 +00:00
Alex Orlenko 08a7e30820
Update README 2022-01-17 11:11:56 +00:00
Alex Orlenko 19676bda40
Update CHANGELOG 2022-01-16 23:50:26 +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 84a174c94d
Allow `pkg-config` to omit include paths if they equals to standard.
See #114
2021-12-28 12:02:02 +00:00
Alex Orlenko 888b2bbf8d
Refactor `build/find_normal.rs` to include error messages instead of `unwrap()` 2021-12-28 10:26:12 +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 30af045c6f
Lift minimum Rust requirement to 1.53+ 2021-11-29 10:46:09 +00:00
Alex Orlenko e809640b7e
Update CI (switch to ubuntu-20.04 and add luajit52) 2021-11-27 13:44:30 +00:00
Alex Orlenko cb3ef20ffc
Update README (remove ref to benchmarks) 2021-11-27 13:44:09 +00:00
Alex Orlenko 3b6564c02a
Update compile tests (messages) 2021-11-27 13:42:22 +00:00
Alex Orlenko 89580dd863
v0.7.0 2021-11-25 18:18:38 +00:00
Alex Orlenko a0554a56d4
Update dependencies 2021-11-25 18:12:29 +00:00
Alex Orlenko 2fee3e7891
Update docs 2021-11-25 18:01:41 +00:00
Alex Orlenko 9f073ad879
Update README & CHANGELOG 2021-11-25 13:32:13 +00:00
Alex Orlenko 1b74c89509
More performance optimizations 2021-11-25 11:16:12 +00:00
Alex Orlenko 440862de38
Update tests 2021-11-23 19:12:27 +00:00
Alex Orlenko 066d28f5e5
Update `Lua::unload` doc & fix clippy warnings 2021-11-23 19:01:23 +00:00
Alex Orlenko 4528f93345
Merge pull request #103 from polachok/unload
Add `Lua::unload()` to unload modules
2021-11-23 18:11:13 +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 55c8af1e6b
Add minimum Rust requirements to README 2021-11-21 23:42:49 +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 f0f5a8a0af
Update CHANGELOG 2021-11-17 23:41:30 +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