Tokio 1.0 发布,Rust 异步编程框架

栏目: 软件资讯 · 发布时间: 3年前

内容简介:Tokio 1.0 稳定版本已发布,Tokio 是 Rust 的异步 runtime,可用于编写快速、可靠的网络应用。Tokio 还提供用于 TCP、UDP、计时器、多线程、工作窃取算法(work-stealing)调度等的 API。 Tokio 团队表示,虽然 To...

Tokio 1.0 稳定版本已发布,Tokio 是 Rust 的异步 runtime,可用于编写快速、可靠的网络应用。Tokio 还提供用于 TCP、UDP、计时器、多线程、工作窃取算法(work-stealing)调度等的 API。

Tokio 团队表示,虽然 Tokio 从四年前刚诞生起就一直在不断发展,不过出现真正的显著变化是在一年前,因为 Rust 在当时才正式支持 async/await。

Tokio 1.0 发布,Rust 异步编程框架

示例代码

使用 Tokio 编写的基本 TCP echo 服务器:

use tokio::net::TcpListener;
use tokio::io::{AsyncReadExt, AsyncWriteExt};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut listener = TcpListener::bind("127.0.0.1:8080").await?;

    loop {
        let (mut socket, _) = listener.accept().await?;

        tokio::spawn(async move {
            let mut buf = [0; 1024];

            // In a loop, read data from the socket and write the data back.
            loop {
                let n = match socket.read(&mut buf).await {
                    // socket closed
                    Ok(n) if n == 0 => return,
                    Ok(n) => n,
                    Err(e) => {
                        eprintln!("failed to read from socket; err = {:?}", e);
                        return;
                    }
                };

                // Write the data back
                if let Err(e) = socket.write_all(&buf[0..n]).await {
                    eprintln!("failed to write to socket; err = {:?}", e);
                    return;
                }
            }
        });
    }
}

在发布公告中,Tokio 团队还介绍了 Tokio 的知名用户和案例。例如,Discord 通过使用 Tokio 将长尾延迟 (Tail Latency) 降低了 5 倍;Fly.io 使用 Tokio 后轻易满足了性能要求;AWS 的 Lambda 团队也使用 Tokio 实现了更可靠、更灵活的服务。

1.0 作为重要版本更新,Tokio 团队对其稳定性做出了保证,承诺会为 Rust 生态提供稳定的基础设施。Tokio 团队表示目前没有关于 Tokio 2.0 的计划,并承诺至少在 3 年内不发布 Tokio 2.0。他们计划为 1.0 提供至少 5 年的维护支持。

当然,稳定并不意味着 Tokio 停滞不前,Tokio 团队介绍了他们未来要完成的工作:推动 Stream trait 进入 Rust 标准库、实现 io_uring 接口、集成 tracing 以及完善 Tokio 的整体生态。这里的生态就是 Tokio 团队所说的 Tokio stack。举个例子,Tokio 为标准基元 (standard primitives),如 socket 和定时器提供了 runtime 和异步API,但网络应用通常会使用更高级别的协议,如 HTTP 和 gRPC。因此 Tokio stack 会提供 HTTP 的 Hyper 和 gRPC 的 Tonic 以满足需求。

最后,Tokio 团队表示随着 Tokio 的推出,他们会专注于开发 Tower,这是一套用于构建可靠客户端和服务器的可重用组件。

详情查看 https://tokio.rs/blog/2020-12-tokio-1-0


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Head First Python(中文版)

Head First Python(中文版)

巴里(Barry.P.) / 林琪 等 / 中国电力出版社 / 2012-3-1 / 68.00元

你想过可以通过一本书就学会Python吗?《Head First Python(中文版)》超越枯燥的语法和甩法手册,通过一种独特的方法教你学习这种语言。你会迅速掌握Python的基础知识,然后转向持久存储、异常处理、Web开发、SQLite、数据加工和lGoogle App Engine。你还将学习如何为Android编写移动应用,这都要归功于Python为你赋予的强大能力。本书会提供充分并且完备......一起来看看 《Head First Python(中文版)》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试