TypeScript & WebAssembly
阅读原文时间:2023年07月08日阅读:2

TypeScript & WebAssembly

WASM

(module
  (func (param $lhs i32) (param $rhs i32) (result i32)
    local.get $lhs
    local.get $rhs
    i32.add))



function computeSum(arr: i32[]): i32 {
  var sum = 0
  arr.forEach(value => {
    sum += value // fails
  })
  return sum
}



var sum: i32 // becomes a WebAssembly Global
function computeSum(arr: i32[]): i32 {
  sum = 0
  arr.forEach(value => {
    sum += value // works
  })
  return sum
}

//..................
function computeSum(arr: i32[]): i32 {
  var sum = 0
  for (let i = 0, k = arr.length; i < k; ++i) {
    sum += arr[i] // works
  }
  return sum
}



$ npm init

$ npm i @assemblyscript/loader
$ npm i -D assemblyscript

$ npx asinit .

$ npm run asbuild 



<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <p class="title">Web Assembly Example</p>

    <script>
      WebAssembly.instantiateStreaming(fetch("./build/optimized.wasm"), {
        main: {
          sayHello() {
            console.log("Hello from WebAssembly!");
          }
        },
        env: {
          abort(_msg, _file, line, column) {
            console.error("abort called at main.ts:" + line + ":" + column);
          }
        },
      }).then(result => {
        const exports = result.instance.exports;
        document.getElementById("container").textContent = "Result: " + exports.add(19, 23);
      }).catch(console.error);

    </script>
<p id="container"></p>
</body>
</html>

https://blog.bitsrc.io/typescript-to-webassembly-the-what-the-how-and-the-why-3916a2561d37

https://webassembly.org/

https://www.assemblyscript.org/

https://bit.dev/

https://github.com/teambit/bit



xgqfrms 2012-2020

www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!


手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章