使用try.moonbitlang.cn云moonbit-ide做实验时,F5运行速度很快,moonbit代码是在本地浏览器中运行的还是在远端服务器中运行的?

使用try.moonbitlang.cn的云moonbit-ide做实验时,按F5键后运行速度很快,如上图,moonbit代码是在我的本地浏览器中运行的?,还是在远端服务器中运行的?

1 个赞

你好,你的观察是正确的,是在你的本地浏览器运行的 :grinning:

月兔的这个在线 IDE 是基于 vscode 开发的, 月兔语言的支持 (语言服务器 LSP, 以及月兔编译器) 是作为 vscode 的插件来实现的。

在页面上主要有 2 个 WebWorker, 一个 worker 运行 vscode 插件 (LSP), 一个 worker 运行月兔编译器。

当点击 “运行” 的时候, 主页面发送编译请求消息 (postMessage()) 给运行月兔编译器的 worker, 首先将月兔代码编译成 wasm 文本代码 (WAT), 然后再转换成 wasm 二进制 (Uint8Array)。

最后运行 wasm 二进制模块:

// js

// 运行所需的导入函数
let spectest = {
  print_i32: (x) => console.log(String(x)),
  print_f64: (x) => console.log(String(x)),
  print_char: (x) => console.log(String.fromCharCode(x)),
};

// 实例化 wasm 模块
let m = await WebAssembly.instantiate(wasm, { spectest });
// 运行月兔的 `func init()`
m.instance.exports._start();
1 个赞