微软开源基于 Rust 的新软件,可在 Kubernetes 上运行 WebAssembly

  来自微软的 DeisLabs 团队最近开源了一款完全基于 Rust 的新软件 Krustlet,该软件可以用来在 Kubernetes 上运行 WebAssembly 模块。

  Kubernetes 是来自谷歌的开源容器集群管理系统,主要用 Go 语言编写。而微软此次选用 Rust 来编写这款 Kubernetes 相关项目,背后有着怎样的原因?

  Azure DeisLabs 的高级软件工程师 Taylor Thomas 解释,主要动机之一是 Rust 与 WebAssembly(缩写为 WASM)的兼容性。WASM 是便携式的抽象语法树,能够让开发者运用自己熟悉的编程语言进行编译,再借由虚拟机引擎在浏览器内运行。经过编译的 WASM 二进制文件(或称模块)可以在任何系统上运行,而 Rust 是为这些二进制文件提供本机构建支持的少数语言之一。

  除了兼容性之外,DeisLabs 团队选择 Rust 的另一大原因是其“强大的安全保障”。Thomas 表示,尽管 Rust 的借用检查器(borrow checker)在项目初期带来一些麻烦,可一旦学习并熟练使用后,用 Rust 编写的效率就非常高了。该团队大约用了一周时间来学习运作方式,两周后效率就提升了 50%,到一个月时,所有人都能够轻松编写代码,并达到最高效率。

  最重要的是,由于 Rust 编译器的严格规则,它能够从源头遏制一些错误的产生。与后期再费心维护和调试相比,Rust 能够节省不少时间,提高生产效率。

  针对新开发的项目 Krustlet 来讲,Kubernetes 中存在大量自定义数据,并且云计算具有分布式特性。该团队认为,Rust 的采用“在编译器级别拥有这些保护和安全保证,使我们对正在编写的代码充满信心”。

  Krustlet 这个项目被标记为“高度实验性”,目前还不建议在生产环境中使用。Thomas 也指出了 Rust 的异步运行时问题和学习曲线问题。“在学习曲线趋于平稳之前,需要花费数周的努力学习如何在 Rust 中正确编码。但是,由于上述的安全功能,这种前期的努力可以带来丰厚的回报。一旦开发人员超越了这一初始曲线,他们就可以像使用任何其他语言一样轻松地为代码做出贡献。”

  上周发布的 Rust 语言年度调查报告中,“学习曲线”也被认为是阻碍开发者采用 Rust 的一大因素。Rust 目前备受关注,但由于种种阻碍,仍不流行。尽管如此,微软 DeisLabs 团队在博客文章中表示,他们看到了 Rust 在云软件中的光明前景,并将继续尝试在各种合适的项目中采用 Rust。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注