Rust 使用Neon和Wasm编写Node.js模块的技术区别是什么?

Rust 使用Neon和Wasm编写Node.js模块的技术区别是什么?,rust,webassembly,Rust,Webassembly,我希望使用Rust为node.js编写一个npm模块。经过快速研究,我找到了两种方法: :“用于编写安全快速的本机Node.js模块的生锈绑定” :“基于堆栈的虚拟机的二进制指令格式。” 使用一个或另一个的技术区别是什么?Neon提供了绑定,可以轻松地用Rust编写本机节点模块。顾名思义,本机节点模块编译为本机代码(通常在安装时) Wasm(WebAssembly)是浏览器和节点的新运行时,旨在成为更广泛语言的快速高效编译目标。它与JavaScript运行时一起执行,共享线程/内存。Rust

我希望使用Rust为node.js编写一个npm模块。经过快速研究,我找到了两种方法:

  • :“用于编写安全快速的本机Node.js模块的生锈绑定”
  • :“基于堆栈的虚拟机的二进制指令格式。”

使用一个或另一个的技术区别是什么?

Neon提供了绑定,可以轻松地用Rust编写本机节点模块。顾名思义,本机节点模块编译为本机代码(通常在安装时)

Wasm(WebAssembly)是浏览器和节点的新运行时,旨在成为更广泛语言的快速高效编译目标。它与JavaScript运行时一起执行,共享线程/内存。Rust具有非常好的WebAssembly支持和绑定

因此,主要区别在于Neon编译为本机,而使用wasm则编译为新的运行时(具有接近本机的性能)


WebAssembly可能会减少使用本机节点模块时所涉及的一些摩擦。

您知道性能方面是否存在差异吗?@slorenzo这取决于您的用例,但我预计本机会比wasm快一些,但两者都比JSVM快很多倍。有研究表明,在某些情况下,SSVM的性能优于本机: