admin 发表于 2018-4-12 10:12:12

通过WebAssembly提供的Rust和JavaScript互操作性

Mozilla的目标是使Rust成为JavaScript等Web语言,与Web应用中的WebAssembly和JavaScript一起使用

Mozilla正在研究JavaScript和Rust语言之间的桥梁,称为wasm-bindgen,它建立在WebAssembly可移植代码格式上。

wasm-bindgen努力旨在提高JavaScript和Rust之间的互操作性,并通过WebAssembly使Rust成为像JavaScript这样的Web语言。 Wasm-bindgen提供WebAssembly(wasm)模块和JavaScript之间的高级别交互。使用wasm-bindgen,JavaScript和WebAssembly可以与字符串,JavaScript对象和类进行通信,而不仅仅是整数和浮点数。

wasm-bindgen的高级功能包括:

导入JavaScript结构,函数和对象以在WebAssembly中调用。开发人员可以调用结构和访问属性的JavaScript方法,一旦注释被连接,就可以为Rust代码提供原生的感觉。
将Rust结构和函数导出为JavaScript。一个Rust结构体可以被导出,变成一个JavaScript类。然后可以传递结构而不是整数。
目前,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社区的一大目标是让该语言成为网络语言。通过锁定WebAssembly,Rust可以像JavaScript一样成为一种可以在网络上运行的语言。但Mozilla指出,它并没有试图用Rust取代JavaScript。该公司不希望Rust WebAssembly应用程序完全用Rust编写;相反,大部分应用程序代码仍然在JavaScript中。 Rust和WebAssembly将用于应用程序的特定部分,例如解析源映射或确定对DOM做了哪些更改。


页: [1]
查看完整版本: 通过WebAssembly提供的Rust和JavaScript互操作性