【Rust日报】 2019-09-05

in #rust5 years ago

hyper 0.13 alpha 版本发布,支持 async/await

hyper 0.13 alpha 版本发布,它是一个使用 Rust 编写的成熟 HTTP 库,并且是速度最快的 HTTP 库之一,同时因其正确性得到了许多人的认可。

这个 alpha 版本为 std::future::Future 提供了支持。让人兴奋的是,这意味着可以使用即将在 Rust 1.39 版本中稳定的 async/await 语法。

如下是一个使用示例:

#[tokio::main]
async fn main() -> Result<(), Error> {
    let client = Client::new();

    let resp = client.get("http://httpbin.org/ip".parse()?).await?;
    println!("Status: {}", resp.status());
    println!("Headers: {:#?}\n", resp.headers());

    while let Some(chunk) = resp.body_mut().next().await {
        stdout().write_all(&chunk?)?;
    }

    Ok(())
}

Read more

在浏览器之外调试WebAssembly

WebAssembly 很有前景也很有吸引力,但它也带来了新的挑战,例如:如何调试 .wasm 二进制文件。

在 Mozilla,我们一直使用传统工具(如 GDB 和 LLDB )对 .wasm 文件进行源级调试的方法进行原型设计。

如下视频(

演示了使用 Wasmtime 和 LLDB 来调试使用 Rust 编写并最终编译为 WebAssembly 的程序:

<video src="https://youtu.be/PevI_Mn-UUE" controls="controls">
Your browser does not support the video tag.
</video>

Read more

Fluvio

Fluvio 是一个云端原生动态数据平台,可在 Kubernetes 上运行。它带来了集中控制,可以在整个组织内连接,转换和分发实时数据。

它具备一下特性:

  • 声明式管理 - 独特的数据管理方法。
  • Cloud Native - 为 Kubernetes 而建。
  • 实时架构 - 完全异步设计,适用于低延迟和高吞吐量环境。
  • 灵活部署 - 控制器可以同时管理云和内部部署服务。
  • 功能强大的 CLI - 用户友好且易于使用的命令行界面。
  • 用 Rust 编写 - 安全,快速,小尺寸:专为高性能分布式系统而构建。
  • 与 Kafka 兼容 - 与 Kafka 客户端和服务器 API一起使用。
    Fluvio CLI 用于管理 Kafka 主题,以及生成和使用 Kafka 日志。

了解更多

Rust 如何优化 async/await(二):程序分析

第1部分中,我们介绍了如何将 Rust 中的异步 fns 编译为状态机。 我们看到内部编译器实现使用 generatoryield 语句来促进这种转换。 我们还看到在内存中布置其中一个状态机的最佳方法是使用类似枚举的表示,类似于以下内容:

enum SumGenerator {
    Unresumed { xs: Vec<i32> },
    Suspend0 { xs: Vec<i32>, iter0: Iter<'self, i32>, sum: i32 },
    Suspend1 { xs: Vec<i32>, iter1: Iter<'self, i32>, sum: i32 },
    Returned
}

存储在此枚举中的每个变量都是我们原始函数的局部变量,用于跟踪状态机的内部状态。 这里,关键点是 iter0iter1 不会同时使用,因此我们可以回收 iter0 的字节,当我们的状态机转换到下一阶段时,将它们用于 iter1

Read more


From 日报小组 @Jancd

日报订阅地址:

独立日报订阅地址:

社区学习交流平台订阅:

Coin Marketplace

STEEM 0.19
TRX 0.18
JST 0.031
BTC 89622.97
ETH 3161.40
USDT 1.00
SBD 2.86