X

曜彤.手记

随记,关于互联网技术、产品与创业

WebAssembly - JavaScript BigInt to WebAssembly i64 Integration

今天来看的提案是 - “JavaScript BigInt to WebAssembly i64 Integration”,GitHub 链接在这里。该提案支持了 JavaScript 中 BigInt 类型与 Wasm 环境的双向自动转换(bidirectionally-converting)。

提案内容比较简单,写个例子看一下:

(module
  (func (export "inc") (param $param i64) (result i64)
    (i64.add (local.get $param) (i64.const 1))
  )
)

没啥好讲的,JavaScript 宿主环境下的 BigInt 类型可以直接传递到形参为 i64 类型的 Wasm 函数中。相反,Wasm 代码返回的 i64 也自动转换为 JavaScript 的 BigInt 类型。

WebAssembly.instantiate(wasmModule).then(
  (instance) => { 
    const { inc } = instance.exports;
    const result = inc(BigInt(9007199254740991))
    console.log(result);  // 9007199254740992n.
    console.log(typeof result);  // "bigint".
  });     



评论 | Comments


Loading ...