From aeaebf4290320af61000bf8148a29cf3f7991231 Mon Sep 17 00:00:00 2001 From: Filip Tibell Date: Wed, 23 Apr 2025 23:22:35 +0200 Subject: [PATCH] Migrate lune-std-stdio to async-io instead of tokio --- Cargo.lock | 4 +++- crates/lune-std-stdio/Cargo.toml | 9 ++++----- crates/lune-std-stdio/src/lib.rs | 17 +++++++++++------ 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9d7f791..5275eb0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1732,11 +1732,13 @@ dependencies = [ name = "lune-std-stdio" version = "0.1.2" dependencies = [ + "async-io", + "blocking", "dialoguer", + "futures-lite", "lune-utils", "mlua", "mlua-luau-scheduler", - "tokio", ] [[package]] diff --git a/crates/lune-std-stdio/Cargo.toml b/crates/lune-std-stdio/Cargo.toml index 927fdaf..e1ce87a 100644 --- a/crates/lune-std-stdio/Cargo.toml +++ b/crates/lune-std-stdio/Cargo.toml @@ -13,13 +13,12 @@ path = "src/lib.rs" workspace = true [dependencies] -dialoguer = "0.11" mlua = { version = "0.10.3", features = ["luau", "error-send"] } mlua-luau-scheduler = { version = "0.0.2", path = "../mlua-luau-scheduler" } -tokio = { version = "1", default-features = false, features = [ - "io-std", - "io-util", -] } +async-io = "2.4" +blocking = "1.6" +dialoguer = "0.11" +futures-lite = "2.6" lune-utils = { version = "0.1.3", path = "../lune-utils" } diff --git a/crates/lune-std-stdio/src/lib.rs b/crates/lune-std-stdio/src/lib.rs index 48a78ec..3137136 100644 --- a/crates/lune-std-stdio/src/lib.rs +++ b/crates/lune-std-stdio/src/lib.rs @@ -1,12 +1,17 @@ #![allow(clippy::cargo_common_metadata)] -use lune_utils::fmt::{pretty_format_multi_value, ValueFormatConfig}; +use std::io::{stderr, stdin, stdout}; + use mlua::prelude::*; use mlua_luau_scheduler::LuaSpawnExt; -use tokio::io::{stderr, stdin, stdout, AsyncReadExt, AsyncWriteExt}; +use blocking::Unblock; +use futures_lite::prelude::*; -use lune_utils::TableBuilder; +use lune_utils::{ + fmt::{pretty_format_multi_value, ValueFormatConfig}, + TableBuilder, +}; mod prompt; mod style_and_color; @@ -50,14 +55,14 @@ fn stdio_format(_: &Lua, args: LuaMultiValue) -> LuaResult { } async fn stdio_write(_: Lua, s: LuaString) -> LuaResult<()> { - let mut stdout = stdout(); + let mut stdout = Unblock::new(stdout()); stdout.write_all(&s.as_bytes()).await?; stdout.flush().await?; Ok(()) } async fn stdio_ewrite(_: Lua, s: LuaString) -> LuaResult<()> { - let mut stderr = stderr(); + let mut stderr = Unblock::new(stderr()); stderr.write_all(&s.as_bytes()).await?; stderr.flush().await?; Ok(()) @@ -73,7 +78,7 @@ async fn stdio_ewrite(_: Lua, s: LuaString) -> LuaResult<()> { async fn stdio_read_to_end(lua: Lua, (): ()) -> LuaResult { let mut input = Vec::new(); - let mut stdin = stdin(); + let mut stdin = Unblock::new(stdin()); stdin.read_to_end(&mut input).await?; lua.create_string(&input) }