WebAssembly时代 Rust也想成为Web语言

目前 Mozilla 正在基于 WebAssembly 可移植代码格式研发 JavaScript 和 Rust 之间的桥梁——wasm-bindgen,意义是提高 JavaScript 和 Rust 之间的互操作性。Mozilla 这么做是想让 Rust 成为类似 JavaScript 的 Web 语言,让它能够与 Web 应用中的 WebAssembly 和 JavaScript 一起使用。

WebAssembly时代  Rust也想成为Web语言

Wasm-bindgen 提供 WebAssembly(wasm)模块和 JavaScript 之间的高级别交互。使用 wasm-bindgen,JavaScript 和 WebAssembly 之前不仅可以通过整形和浮点型进行通信,还可以使用字符串、JavaScript 对象和类进行。

wasm-bindgen 的高级功能包括:

  • 导入 JavaScript 结构、函数和对象以在 WebAssembly 中调用。开发人员可以调用结构中的方法和访问属性。
  • 将 Rust 结构和函数导出到 JavaScript。可以导出一个 Rust struct,它会变成一个 JavaScript class,之后就可以传递结构而不是整型。

目前,WebAssembly 仅支持四种类型:两种整型和两种浮点型。但 JavaScript 和 Rust 开发人员经常使用更丰富的类型,例如 Rust 开发人员使用 Result 类型进行错误处理,这样,使用 wasm-bindgen 的时候,JavaScript 可以使用字符串或 Rust 函数调用 Rust API 来捕获 JavaScript 异常。通过消除 WebAssembly 和 JavaScript 之间的不匹配问题,JavaScript 可以调用 WebAssembly 函数,而反过来, WebAssembly 可以也对 JavaScript 函数执行相同的操作。

基于 ECMAScript 模块,wasm-bindgen 专注于 Rust,但其目的也是最终用于 C 和 C ++ 等语言。但 Mozilla 称 wasm-bindgen 目前还不够稳定,暂时还无法扩展到其它语言。

Rust 社区的一大目标是让 Rust 成为 Web 语言。通过对标 WebAssembly,Rust 可以像 JavaScript 一样成为一种可以在网络上运行的语言。但 Mozilla 指出,它并没有试图用 Rust 取代 JavaScript。它不希望 Rust WebAssembly 应用程序完全用 Rust 编写,相反,大部分应用程序代码仍然使用 JavaScript。Rust 和 WebAssembly 将分别用于应用程序的特定部分,例如解析源映射或确定对 DOM 做了哪些更改。

可以从 GitHub 下载 wasm-bindgen。

来源:InfoWorld

继续阅读
avatar
  • 本文由 发表于 2018年4月10日
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
AWS 宣布赞助 Rust 语言 综合分类

AWS 宣布赞助 Rust 语言

毫无疑问,Rust 目前发展势头正劲。此前,微软安全响应中心探索采用 Rust 的消息引发大量关注,在连续四年蝉联“最受开发者喜爱的编程语言”后,Rust 可能已经从“想要学习的语言”逐渐转变为许多开...
Rust 1.37.0 稳定版发布 综合分类

Rust 1.37.0 稳定版发布

Rust 1.37.0 stable 有什么?Rust 1.37.0 的亮点包括通过类型别名引用枚举变量、内置 cargo vendor、对宏使用未命名的 const、配置文件引导的优化、Cargo ...
avatar
已有 1 条评论 新浪微博
  1. avatar zengzqlliang

    但是很多用它的目的就是为了替代js

    2018年4月13日 21:27来自iPhone 回复