前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Rust日报】2024-05-28 Wasmi 的新的超快的执行引擎

【Rust日报】2024-05-28 Wasmi 的新的超快的执行引擎

作者头像
MikeLoveRust
发布2024-06-07 20:48:50
3270
发布2024-06-07 20:48:50
举报

Wasmi 的新的超快的执行引擎

经过数月的研究、开发和质量保证,Wasmi 有史以来最重要的更新终于准备好投入生产使用。

Wasmi 是一种高效且多功能的 WebAssembly (Wasm) 解释器,专注于嵌入式环境。它是插件系统、云主机和智能合约执行引擎的绝佳选择。

Wasmi 在最大努力的实现 Wasmtime API,使其成为理想的运行时。

通过 cargo install wasmi_cli 安装 Wasmi 的 CLI 工具,或通过 wasmi crate 将其用作库。

Wasmi v0.32 配备了新的执行引擎,利用基于寄存器的字节码将其执行性能提高了多达 5 倍。此外,由于惰性编译和其他新技术,其启动性能也提高了几个数量级。

文中做了一系列的 benchmark, 结论如下:

到目前为止,Wasmi 和 Wasm3 的表现最好,因为它们具有惰性编译功能。正如预期的那样,优化基于 JIT 的 Wasm 运行时(如 Wasmtime 和 Wasmer)在这种情况下表现较差。专为快速启动而设计的单通道 JIT,例如 Winch 和 Wasmer Singlepass,速度也明显较慢。尽管也使用了懒惰的翻译,但 Stitch 的翻译性能并不理想。然而,需要注意的是,Winch 和 Stitch 仍处于开发的实验阶段,改进是可以预期的。

ReadMore: https://wasmi-labs.github.io/blog/posts/wasmi-v0.32/

Rust 中的类型和 Self-Document

作者在使用 Rust 时发现了一个使用的不便,即类型过于抽象后原始类型变得难以找到和理解。

标准库中有大量方法返回具体类型而不是抽象(即特征)。它们通常与方法本身具有相同的名称,只是大小写不同。这通常会使方法的签名变得不那么直观。

让我们看一个例子。字符串有一个名为 chars() 的方法。此方法具有以下签名:

代码语言:javascript
复制
pub fn chars(&self) -> Chars<'_>

OK,所以 chars() 返回 Chars ,这并没有告诉我太多。听起来我正在获取字符串的字符,但我不知道它是数组、切片、迭代器还是其他东西。

考虑一下,如果这个函数的签名是这样的:

代码语言:javascript
复制
pub fn chars(&self) -> impl Iterator<Item=char>

我们可以说,这比之前的签名更具文档性(Self-Documenting)。只需查看函数即可更轻松地理解该函数的作用。我们仍然需要某些细节的文档,例如,这迭代了 Unicode 标量而不是字形集群,但我认为即使从签名中也可以明显看出这一点。

有什么方法可以改进吗?我不希望 Rust 改变它的特征系统或丢失宏。这些都是强大的功能,即使它们有一些缺点。除了我之前提出的改进命名的建议(我认为这有很长的路要走)之外,IDE 也可以提供很多帮助。他们可以有一种简单的方法来显示给定类型的所有已实现特征,包括一揽子特征。这可以在将鼠标悬停在类型时显示,也可以在签名的文档弹出窗口中显示。也许还有一种方法可以在完成项的签名中显示一些紧凑的特征信息。

最后,也许可以显示宏调用生成的类型和隐含的摘要。甚至可能也适用于派生宏。当一种语言的类型系统如此灵活,并且有如此多的元编程工具时,IDE的帮助就变得非常有价值。RustRover 和 VS Code + Rust Analyzer 已经做了一些有用的事情,但我认为它们仍处于起步阶段。我期待这些 IDE 成熟并改善 Rust 的编码体验。

dnrs 用 rust 实现的轻量 dns server

ReadMore: https://github.com/VeroniDeev/dnrs

From 日报小组 Koalr

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Rust语言学习交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Wasmi 的新的超快的执行引擎
  • Rust 中的类型和 Self-Document
  • dnrs 用 rust 实现的轻量 dns server
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档