Migrate lune-std-stdio to async-io instead of tokio

This commit is contained in:
Filip Tibell 2025-04-23 23:22:35 +02:00
parent 54115430f5
commit aeaebf4290
No known key found for this signature in database
3 changed files with 18 additions and 12 deletions

4
Cargo.lock generated
View file

@ -1732,11 +1732,13 @@ dependencies = [
name = "lune-std-stdio" name = "lune-std-stdio"
version = "0.1.2" version = "0.1.2"
dependencies = [ dependencies = [
"async-io",
"blocking",
"dialoguer", "dialoguer",
"futures-lite",
"lune-utils", "lune-utils",
"mlua", "mlua",
"mlua-luau-scheduler", "mlua-luau-scheduler",
"tokio",
] ]
[[package]] [[package]]

View file

@ -13,13 +13,12 @@ path = "src/lib.rs"
workspace = true workspace = true
[dependencies] [dependencies]
dialoguer = "0.11"
mlua = { version = "0.10.3", features = ["luau", "error-send"] } mlua = { version = "0.10.3", features = ["luau", "error-send"] }
mlua-luau-scheduler = { version = "0.0.2", path = "../mlua-luau-scheduler" } mlua-luau-scheduler = { version = "0.0.2", path = "../mlua-luau-scheduler" }
tokio = { version = "1", default-features = false, features = [ async-io = "2.4"
"io-std", blocking = "1.6"
"io-util", dialoguer = "0.11"
] } futures-lite = "2.6"
lune-utils = { version = "0.1.3", path = "../lune-utils" } lune-utils = { version = "0.1.3", path = "../lune-utils" }

View file

@ -1,12 +1,17 @@
#![allow(clippy::cargo_common_metadata)] #![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::prelude::*;
use mlua_luau_scheduler::LuaSpawnExt; 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 prompt;
mod style_and_color; mod style_and_color;
@ -50,14 +55,14 @@ fn stdio_format(_: &Lua, args: LuaMultiValue) -> LuaResult<String> {
} }
async fn stdio_write(_: Lua, s: LuaString) -> 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.write_all(&s.as_bytes()).await?;
stdout.flush().await?; stdout.flush().await?;
Ok(()) Ok(())
} }
async fn stdio_ewrite(_: Lua, s: LuaString) -> LuaResult<()> { 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.write_all(&s.as_bytes()).await?;
stderr.flush().await?; stderr.flush().await?;
Ok(()) Ok(())
@ -73,7 +78,7 @@ async fn stdio_ewrite(_: Lua, s: LuaString) -> LuaResult<()> {
async fn stdio_read_to_end(lua: Lua, (): ()) -> LuaResult<LuaString> { async fn stdio_read_to_end(lua: Lua, (): ()) -> LuaResult<LuaString> {
let mut input = Vec::new(); let mut input = Vec::new();
let mut stdin = stdin(); let mut stdin = Unblock::new(stdin());
stdin.read_to_end(&mut input).await?; stdin.read_to_end(&mut input).await?;
lua.create_string(&input) lua.create_string(&input)
} }