Posts in 2021

  • 控制台开发日记(1)

    2021-09-08 in 官方博客

    自从几个月前开始制作 Tokio Console 原型以来,我们一直在努力工作,把它变成一个很棒的异步任务调试器。我们想围绕它的进展情况提供一些集中的更新。 控制台是什么? 哇!哇!它就像任务的top(1)! Console 是一个Rust异步调试工具。它的目标是让你在试图更好地理解你的异步任务的行为方式时,成为你所要使用的工具。它利用了 tracing event 和 span,因此旨在实现运行时的无关性。 更新 易于启动和生成器: 我们使向你的应用程序添加仪器变得更加容易。对于大多数人来 …

    更多

  • Axum宣布

    2021-07-30 in 官方博客

    今天,我们很高兴地宣布 axum:一个易于使用,但功能强大的网络框架,旨在充分利用 Tokio 的生态系统。 高级特性 通过一个不使用宏(macro free?)的API将请求路由到处理程序 使用提取器(extractor)对请求进行声明式的解析 简单和可预测的错误处理模式。 用最少的模板生成响应。 充分利用 tower 和 tower-http 的中间件、服务和工具的生态系统 特别是最后一点,是 axum 与现有框架不同的地方。axum 没有自己的中间件系统,而是使 …

    更多

  • 宣布 tokio-uring

    2021-07-19 in 官方博客

    今天,我们发布了 “tokio-uring” crate的第一个版本,为Linux上的 io-uring 系统API提供支持。这个版本提供了异步文件操作,我们将在后续版本中增加对更多操作的支持。 要使用 tokio-uring,首先要在 crate 上添加一个依赖项: tokio-uring = "0.1.0" 然后,启动 tokio-uring 运行时 ,并从文件中读取: usetokio_uring::fs::File;fn main()-> …

    更多

  • 宣布Tonic 0.5版本

    2021-07-09 in 官方博客

    我们很高兴地宣布 Tonic 的0.5版本,它是 Rust 的原生 gRPC 实现。0.5是一个重要的版本,已经酝酿了一段时间。 一些关键的新功能是: gRPC-Web gRPC-Web 是一个协议,允许客户端通过 HTTP/1.1 连接到 gRPC 服务,而不是通常的HTTP/2。gRPC-Web 的一个常见用例是在浏览器中运行的JavaScript客户端。以前,这需要使用一个代理来将 HTTP/2 请求翻译成 HTTP/1.1。 然而,新的 crate tonic-web …

    更多

  • 宣布tower-http

    2021-05-27 in 官方博客

    今天我很高兴地宣布tower-http,它是一个用Tower的 service trait 构建的HTTP特定中间件和实用程序的集合。 Tower本身包含的中间件都是与协议无关的。例如,它的超时中间件与任何服务实现兼容,无论它使用哪种协议。这很好,因为它意味着中间件更可重用,但也意味着你不能使用协议的特定功能。在HTTP的情况下,这意味着Tower中的中间件不知道状态码、头信息或其他HTTP的特定功能。 另一方面,tower-http 包含了针对HTTP的中间件。它使用 http …

    更多

  • 宣布Valuable

    2021-05-24 in 官方博客

    在过去的几周里,我们一直在开发Valuable,一个提供对象安全的值检查的新crate。它几乎已经准备好发布了,所以我想我应该写一篇文章来介绍它。这个 crate 提供了一个对象安全的trait–Valuable,它允许调用者在不知道其类型的情况下检查值的内容,无论是字段、枚举变体,还是基础类型。最初,我们写Valuable是为了支持Tracing;然而,它在几种情况下是有帮助的。对象安全的值检查有点拗口,所以让我们先看看Tracing,以及为什么那里需要它。 Tracing 是一个 …

    更多

  • 发明Service特质

    2021-05-17 in 官方博客

    Tower是一个模块化和可重复使用的组件库,用于构建强大的网络客户端和服务器。其核心是 Service 特性。Service 是一个异步函数,它接受一个请求并产生一个响应。然而,其设计的某些方面可能并不那么明显。与其解释今天存在于Tower中的 Service 特性,不如让我们想象一下如果你从头开始,你会如何发明 Service 背后的动机。 想象一下,你正在用Rust构建一个小小的HTTP框架。这个框架将允许用户通过提供接收请求并回复一些响应的代码来实现一个HTTP服务器。 你可能有一个这样 …

    更多

  • 欢迎Alice Ryhl成为Tokio首位付费贡献者

    2021-04-09 in 官方博客

    感谢 Fly.io、Discord、Embark 等赞助商,我们很高兴地宣布,Tokio将资助 Alice Ryhl 将更多时间投入到Tokio。这是一个支付贡献者为Tokio工作的计划的开始,通过Github赞助的捐款资助。 建立一个像Tokio这样的库是一项不朽的任务。自从2016年发布该项目以来,已经花了很多时间来实验、完善和优化API和运行时间。如果没有数以百计的志愿者和公司,如Mozilla、Dropbox、Buoyant和AWS,资助工程时间来建立Tokio,这项工作是不可能的。然 …

    更多

  • Tokio和Actor

    2021-02-13 in Alice Ryhl博客

    这篇文章是关于直接用Tokio构建 Actor,而不使用任何 Actor 库,如Actix。这被证明是相当容易做到的,但有一些细节你应该注意。 把tokio::spawn的调用放在哪里 带有运行方法的结构体与裸函数 对 Actor 的处理 背压和有界通道 优雅关闭 本文概述的技术应该适用于任何执行器,但为了简单起见,我们将只讨论Tokio。本文与Tokio教程中的 spawning 和通道章节有一些重叠,我建议也阅读这些章节。 在我们讨论如何编写一个行为体之前,我们需要知 …

    更多

Posts in 2020

  • Tokio和Actor

    2020-12-21 in Alice Ryhl博客

    Rust 的 async/await 特性是通过一种称为协作式调度(cooperative scheduling)的机制来实现的,这对于编写异步Rust代码的人来说有一些重要的影响。 这篇博文的目标读者是异步 Rust 的新用户。我将使用 Tokio 运行时作为示例,但这里提出的观点适用于任何异步运行时。 如果你只从这篇文章中记住一件事,那应该是: 切记 异步代码不应该长时间不到达.await。 (注:指的是运行中) Blocking vs. non-blocking code 编写一个可以同 …

    更多