Skip to content

Commit 1a74d9b

Browse files
committed
upgrade mlua
1 parent 427ede4 commit 1a74d9b

File tree

8 files changed

+32
-31
lines changed

8 files changed

+32
-31
lines changed

Cargo.toml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,9 @@ libc = "0.2"
1313
crossbeam-utils = "0.8"
1414
serde = "1.0"
1515

16-
luajit-src = "=210.5.12"
17-
1816
[dependencies.mlua]
19-
version = "=0.8.0-beta.3"
20-
features = ["luajit", "serialize", "vendored"]
17+
version = "0.11.3"
18+
features = ["luajit"]
2119

2220
[dependencies.tokio]
2321
version = "1"

examples/bench/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ hdrhistogram = "7.5"
1111
tokio = "1"
1212

1313
[dependencies.mlua]
14-
version = "=0.8.0-beta.3"
15-
features = ["luajit", "module", "serialize", "vendored"]
14+
version = "0.11.3"
15+
features = ["luajit", "serialize", "module"]
1616

1717
[dependencies.xtm_rust]
1818
path = "../.."

examples/bench/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ async fn module_main(dispatcher: Dispatcher<Lua>) {
5050
}
5151

5252
#[mlua::lua_module]
53-
fn bench(lua: &Lua) -> LuaResult<LuaTable<'_>> {
53+
fn bench(lua: &Lua) -> LuaResult<LuaTable> {
5454
let exports = lua.create_table()?;
5555

5656
exports.set(

examples/grpc/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ tarantool = { version = "8.0.0", default-features = false }
1212
uuid = { version = "1.18", features = ["serde", "v4"] }
1313

1414
[dependencies.mlua]
15-
version = "=0.8.0-beta.3"
16-
features = ["luajit", "module", "serialize", "vendored"]
15+
version = "0.11.3"
16+
features = ["luajit", "serialize", "module"]
1717

1818
[dependencies.xtm_rust]
1919
path = "../.."

examples/grpc/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use mlua::prelude::*;
44
use xtm_rust::{ModuleConfig, run_module_with_mlua};
55

66
#[mlua::lua_module]
7-
fn grpc(lua: &Lua) -> LuaResult<LuaTable<'_>> {
7+
fn grpc(lua: &Lua) -> LuaResult<LuaTable> {
88
let exports = lua.create_table()?;
99

1010
exports.set(

examples/simple/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ tarantool = { version = "8.0.0", default-features = false }
1010
serde = "1.0"
1111

1212
[dependencies.mlua]
13-
version = "=0.8.0-beta.3"
14-
features = ["luajit", "module", "serialize", "vendored"]
13+
version = "0.11.3"
14+
features = ["luajit", "serialize", "module"]
1515

1616
[dependencies.xtm_rust]
1717
path = "../.."

examples/simple/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ async fn module_main(dispatcher: Dispatcher<Lua>) {
4848
}
4949

5050
#[mlua::lua_module]
51-
fn simple(lua: &Lua) -> LuaResult<LuaTable<'_>> {
51+
fn simple(lua: &Lua) -> LuaResult<LuaTable> {
5252
let exports = lua.create_table()?;
5353

5454
exports.set(

src/lib.rs

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ where
3939
Func: Send + FnOnce(Dispatcher<T>) -> Fut,
4040
Fut: Future,
4141
Fut::Output: Send,
42-
CreateFiber: Fn(Executor<T>) -> tarantool::fiber::JoinHandle<'a, Result<i32, mlua::Error>>,
42+
CreateFiber: Fn(Executor<T>) -> tarantool::fiber::JoinHandle<'a, ()>,
4343
{
4444
let (dispatcher, executor) = channel(config.buffer)?;
4545

@@ -61,37 +61,40 @@ where
6161
Ok(rt.block_on(module_main(dispatcher)))
6262
},
6363
)?;
64+
// yield to start fibers
6465
tarantool::fiber::sleep(std::time::Duration::ZERO);
6566

6667
for fiber in fibers {
67-
let _result = fiber.join().unwrap();
68+
fiber.join();
6869
}
6970
module_thread.join().unwrap()
7071
})
7172
.unwrap()
7273
}
7374

75+
unsafe extern "C" {
76+
unsafe fn luaT_state() -> *mut mlua::lua_State;
77+
}
78+
79+
unsafe fn mlua_state<'a>() -> &'a mlua::Lua {
80+
unsafe { mlua::Lua::get_or_init_from_ptr(luaT_state().cast()) }
81+
}
82+
7483
fn create_fiber(
75-
lua: &Lua,
84+
_lua: &Lua,
7685
max_recv_retries: usize,
7786
coio_timeout: f64,
7887
executor: Executor<Lua>,
79-
) -> tarantool::fiber::JoinHandle<'_, Result<i32, mlua::Error>> {
80-
let thread_func = move |lua, ()| loop {
81-
match executor.exec(lua, max_recv_retries, coio_timeout) {
82-
Ok(()) | Err(ExecError::ResultChannelSendError) => continue,
83-
Err(ExecError::TaskChannelRecvError) => break Ok(0),
88+
) -> tarantool::fiber::JoinHandle<'static, ()> {
89+
let func = move || {
90+
let lua = unsafe { mlua_state() };
91+
loop {
92+
match executor.exec(lua, max_recv_retries, coio_timeout) {
93+
Ok(()) | Err(ExecError::ResultChannelSendError) => continue,
94+
Err(ExecError::TaskChannelRecvError) => break,
95+
}
8496
}
8597
};
86-
let thread_func = lua.create_function(thread_func).unwrap();
87-
let thread = lua.create_thread(thread_func).unwrap();
8898

89-
Fyber::spawn_deferred(
90-
"xtm".to_owned(),
91-
move || -> std::result::Result<i32, mlua::Error> { thread.resume(()) },
92-
true,
93-
None,
94-
)
95-
.unwrap()
96-
.unwrap()
99+
Fyber::spawn_lua("xtm".to_owned(), func, None).unwrap()
97100
}

0 commit comments

Comments
 (0)