From b3a6fcdadd4ed341b6dcc764deda57220f6cf480 Mon Sep 17 00:00:00 2001 From: zihang Date: Fri, 1 Dec 2023 13:35:08 +0800 Subject: [PATCH] Update FFI explanation --- ffi-and-wasm-host.md | 257 ++++++++++++++++++++++----- imgs/smile_face_with_log.png | Bin 0 -> 78769 bytes zh-docs/ffi-and-wasm-host.md | 253 +++++++++++++++++++++----- zh-docs/imgs/smile_face_with_log.png | Bin 0 -> 78769 bytes 4 files changed, 418 insertions(+), 92 deletions(-) create mode 100644 imgs/smile_face_with_log.png create mode 100644 zh-docs/imgs/smile_face_with_log.png diff --git a/ffi-and-wasm-host.md b/ffi-and-wasm-host.md index 678f6f9c..616b2e93 100644 --- a/ffi-and-wasm-host.md +++ b/ffi-and-wasm-host.md @@ -1,15 +1,27 @@ # Foreign Function Interface(FFI) -You can use foreign function in MoonBit through FFI +You can use foreign function in MoonBit through FFI to interact with the hosting runtime when embedded inside the browser or command line applications through [Wasmtime](https://wasmtime.dev/) or similar projects. + +⚠ Warning: MoonBit is still in early stage, so the content may be outdated. ## FFI +### Declare Foreign Reference + +You can declare a foreign reference type like this: + +```rust +type Canvas_ctx +``` + +This will be a type that represents a reference to a foreign object, a `CanvasRenderingContext2D` object held by the hosting JavaScript runtime in this example. + ### Declare Foreign Function You can declare a foreign function like this: ```rust -fn get_pi() -> Double = "math" "get_pi" +fn get_pi() -> Double = "math" "PI" ``` It's similar to a normal function definition except that the function body is replaced with two strings. @@ -18,8 +30,20 @@ These two strings are used to identify the specific function from a Wasm import After declaration, you can use foreign functions like regular functions. +You may also declare a foreign function that will be invoked upon a foreign object by using the foreign reference type like this: + +```rust +fn begin_path(self: Canvas_ctx) = "canvas" "begin_path" +``` + +and apply it to a previously owned reference normally such as `context.begin_path()`. + ### Use compiled Wasm +To use the compiled Wasm, you need to initialize the Wasm module with the host functions so as to meet the needs of the foreign functions, and then use the exported functions provided by the Wasm module. + +#### Provide host functions + To use the compiled Wasm, you must provide **All** declared foreign functions in Wasm import object. For example, to use wasm compiled from above code snippet in JavaScript: @@ -27,47 +51,66 @@ For example, to use wasm compiled from above code snippet in JavaScript: ```js WebAssembly.instantiateStreaming(fetch("xxx.wasm"), { math: { - get_pi: () => Math.PI, + PI: () => Math.PI, }, }); ``` -### Full example +Check out the documentation such as [MDN](https://developer.mozilla.org/en-US/docs/WebAssembly) or the manual of runtime that you're using to embed the Wasm. + +#### Use exported functions + +Functions should be declared as `pub` so that they can be exported. Functions in MoonBit are exported with a name generated according to the package, the function name, and whether it is a method. -Let's walk through a full example to draw a simle face using canvas API in MoonBit. +The name starts with the module name and the package name, separated by the `/`, such as `module1/lib`. If it is a normal function, then it is followed by `::` as declared. Otherwise, it is followed by `::`. If it is polymorphism, then the type parameter is also added, as `::||`. If the rule is unclear, you can always convert the Wasm to text format and search for `export` statement. + +The `_start` function should always be called to initialize all the global instances defined in MoonBit program. + +## Example: Smiling face + +Let's walk through a full example to draw a smiling face using Canvas API in MoonBit. ```moonbit title="./draw.mbt" +// We first declare a type representing the context of canvas type Canvas_ctx -fn begin_path(self: Canvas_ctx) = "canvas" "begin_path" -fn arc(self: Canvas_ctx, x: Int, y: Int, radius: Int, start_angle: Double, end_angle: Double, counterclockwise: Bool) = "canvas" "arc" -fn move_to(self: Canvas_ctx, x: Int, y: Int) = "canvas" "move_to" -fn stroke(self: Canvas_ctx) = "canvas" "stroke" -fn get_pi() -> Double = "canvas" "get_pi" - -let pi: Double = get_pi() - -pub fn draw(self: Canvas_ctx) { - self.begin_path(); - self.arc(75, 75, 50, 0.0, pi * 2.0, true); // Outer circle - self.move_to(110, 75); - self.arc(75, 75, 35, 0.0, pi, false); // Mouth (clockwise) - self.move_to(65, 65); - self.arc(60, 65, 5, 0.0, pi * 2.0, true); // Left eye - self.move_to(95, 65); - self.arc(90, 65, 5, 0.0, pi * 2.0, true); // Right eye - self.stroke(); +// We then declare the foreign function interfaces +fn begin_path(self : Canvas_ctx) = "canvas" "beginPath" +fn arc(self : Canvas_ctx, x : Int, y : Int, radius : Int, start_angle : Double, + end_angle : Double, counterclockwise : Bool) = "canvas" "arc" +fn move_to(self : Canvas_ctx, x : Int, y : Int) = "canvas" "moveTo" +fn stroke(self : Canvas_ctx) = "canvas" "stroke" + +fn get_pi() -> Double = "math" "PI" +let pi : Double = get_pi() + +// We then apply these functions to define the drawing function upon the context +pub fn draw(self : Canvas_ctx) { + self.begin_path() + self.arc(75, 75, 50, 0.0, pi * 2.0, true) // Outer circle + self.move_to(110, 75) + self.arc(75, 75, 35, 0.0, pi, false) // Mouth (clockwise) + self.move_to(65, 65) + self.arc(60, 65, 5, 0.0, pi * 2.0, true) // Left eye + self.move_to(95, 65) + self.arc(90, 65, 5, 0.0, pi * 2.0, true) // Right eye + self.stroke() +} + +// We also demonstrate the `println` functionality here +pub fn display_pi() { + println("PI: \(pi)") } + ``` -Compile the file using `moonc` to get `draw.mbt.wasm`. +Compile the file using `moonc` to get `draw.wasm`. We recommend using the wasm-gc feature whenever possible. If the environment does not support wasm-gc feature, simply omit the `-wasm-gc` option. ```bash -moonc compile draw.mbt -wat2wasm draw.mbt.wat +moonc compile draw.mbt -wasm-gc -o draw.wasm ``` -Use it from JavaScript: +We now can use it from JavaScript. ```html title="./index.html" @@ -75,45 +118,165 @@ Use it from JavaScript: + +``` + +For import object, we need to provide all the FFI used in the previously defined program: the canvas rendering API, the math API and finally, an API for printing to the console used by the `println` or `print` function. + +As of the canvas rendering API and the math API, we can use the following code to convert the methods of objects into function calls that accept the object as the first parameter, and convert the constant properties of objects into functions that returns the value: + +```javascript +function prototype_to_ffi(prototype) { + return Object.fromEntries( + Object.entries(Object.getOwnPropertyDescriptors(prototype)) + .filter(([_key, value]) => value.value) + .map(([key, value]) => { + if (typeof value.value == 'function') + return [key, Function.prototype.call.bind(value.value)] + // TODO: it is also possible to convert properties into getters and setters + else + return [key, () => value.value] + }) + ); +} + +const importObject = { + canvas: prototype_to_ffi(CanvasRenderingContext2D.prototype), + math: prototype_to_ffi(Math), + // ... +} +``` + +As of the printing service, we can provide the following closure so that it buffers the bytes of string until it needs to be logged to the console: + +```javascript +const [log, flush] = (() => { + var buffer = []; + function flush() { + if (buffer.length > 0) { + console.log(new TextDecoder().decode(new Uint8Array(buffer).valueOf())); + buffer = []; + } + } + function log(ch) { + if (ch == '\n'.charCodeAt(0)) { flush(); } + else if (ch == '\r'.charCodeAt(0)) { /* noop */ } + else { buffer.push(ch); } + } + return [log, flush] +})(); + +const importObject = { + // ... + spectest: { + print_char: log + }, +} + +// ... +WebAssembly.instantiateStreaming(fetch("draw.wasm"), importObject).then( + (obj) => { + obj.instance.exports._start(); + // ... + flush() + } +); +``` + +Now, we put them together, so this is our final complete `index.html`: + +```html title="./index.html + + + + + + + + + + ``` -Make sure that `draw.mbt.wasm` and `index.html` are in the same folder, then start a http server at this folder. For example, using Python: +Make sure that `draw.wasm` and `index.html` are in the same folder, then start a http server at this folder. For example, using Python: ```bash python3 -m http.server 8080 ``` -Goto http://localhost:8080 in your browser, there should be a smile face like this: +Goto http://localhost:8080 in your browser, there should be a smile face on the screen and an output on the console: -![](./imgs/smile-face.png) +![](./imgs/smile_face_with_log.png) diff --git a/imgs/smile_face_with_log.png b/imgs/smile_face_with_log.png new file mode 100644 index 0000000000000000000000000000000000000000..9cc3941418c2d15280055659c0df251a9d8d8912 GIT binary patch literal 78769 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 {owAtM2q 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 Iu3^&u0EF*OlK=n! literal 0 HcmV?d00001 diff --git a/zh-docs/ffi-and-wasm-host.md b/zh-docs/ffi-and-wasm-host.md index cc014e11..89bfac12 100644 --- a/zh-docs/ffi-and-wasm-host.md +++ b/zh-docs/ffi-and-wasm-host.md @@ -1,15 +1,27 @@ # 外部函数接口 (FFI) -你可以在月兔中通过外部函数接口来使用外部的函数 +你可以在月兔中通过外部函数接口来使用外部的函数,与宿主环境交互。一般在嵌入浏览器环境或命令行环境(通过[Wasmtime](https://wasmtime.dev/)等项目)时使用。 -## FFI +⚠ 警告:月兔还在初期开发阶段,内容可能会过时。 + +## 外部函数接口 + +### 声明外部引用 + +你可以定义一个这样的外部引用类型: + +```rust +type Canvas_ctx +``` + +这将会定义一个外部对象的引用。在我们的例子中,它代表了宿主JavaScript环境中的一个`CanvasRenderingContext2D`对象。 ### 声明外部函数 你可以像这样定义一个外部函数: ```rust -fn get_pi() -> Double = "math" "get_pi" +fn get_pi() -> Double = "math" "PI" ``` 它和正常的函数定义十分相像,除了函数体被替换为两个字符串。 @@ -18,8 +30,20 @@ fn get_pi() -> Double = "math" "get_pi" 在声明之后,你可以像普通的函数那样使用外部函数。 +你也可以定义一个使用外部引用类型的外部函数,就像这样: + +```rust +fn begin_path(self: Canvas_ctx) = "canvas" "begin_path" +``` + +之后可以将它应用到拥有的外部对象的引用上,如:`context.begin_path()`。 + ### 使用编译的Wasm +使用编译后的Wasm,你需要首先在宿主环境中初始化Wasm模块。这一步需要满足Wasm模块对外部函数的依赖。之后可以使用Wasm模块提供的函数。 + +#### 提供宿主函数 + 使用编译后的Wasm,你需要在Wasm导入对象中提供**所有**声明过的外部函数。 例如,在JavaScript中使用包含上述代码片段编译的Wasm: @@ -32,39 +56,58 @@ WebAssembly.instantiateStreaming(fetch("xxx.wasm"), { }); ``` -### 完整例子 +具体信息可以查阅嵌入Wasm的宿主环境的文档,例如[MDN](https://developer.mozilla.org/en-US/docs/WebAssembly)。 + +#### 使用导出的函数 + +想要导出的函数应当被声明为`pub`。月兔的函数在导出时将根据包名、函数名、是否是方法来生成一个名称。 + +名称以模块名和包名起始,由`/`分割,例如`module1/lib`。如果它是一个普通函数,那么将会直接跟着`::<定义的函数名>`。否则,它会跟着`<类型>::<方法名>`。如果是泛型函数,那么类型也会被添加,如`<类型>::<方法名>|<类型参数>|`。如果不确定具体规则,可以将Wasm文件转换为文本格式并且搜索`export`命令。 + +`_start`函数总是应当被使用,以初始化月兔程序中定义的全局实例。 + +## 例子:笑脸 让我们来看一个使用月兔利用画布(Canvas)API画一个简单笑脸的例子。 ```moonbit title="./draw.mbt" +// 我们首先定义一个类型,代表着绘画的上下文 type Canvas_ctx -fn begin_path(self: Canvas_ctx) = "canvas" "begin_path" -fn arc(self: Canvas_ctx, x: Int, y: Int, radius: Int, start_angle: Double, end_angle: Double, counterclockwise: Bool) = "canvas" "arc" -fn move_to(self: Canvas_ctx, x: Int, y: Int) = "canvas" "move_to" -fn stroke(self: Canvas_ctx) = "canvas" "stroke" -fn get_pi() -> Double = "canvas" "get_pi" - -let pi: Double = get_pi() - -pub fn draw(self: Canvas_ctx) { - self.begin_path(); - self.arc(75, 75, 50, 0.0, pi * 2.0, true); // Outer circle - self.move_to(110, 75); - self.arc(75, 75, 35, 0.0, pi, false); // Mouth (clockwise) - self.move_to(65, 65); - self.arc(60, 65, 5, 0.0, pi * 2.0, true); // Left eye - self.move_to(95, 65); - self.arc(90, 65, 5, 0.0, pi * 2.0, true); // Right eye - self.stroke(); +// 我们再定义外部函数接口 +fn begin_path(self : Canvas_ctx) = "canvas" "beginPath" +fn arc(self : Canvas_ctx, x : Int, y : Int, radius : Int, start_angle : Double, + end_angle : Double, counterclockwise : Bool) = "canvas" "arc" +fn move_to(self : Canvas_ctx, x : Int, y : Int) = "canvas" "moveTo" +fn stroke(self : Canvas_ctx) = "canvas" "stroke" + +fn get_pi() -> Double = "math" "PI" +let pi : Double = get_pi() + +// 我们使用这些函数来定义一个在绘画上下文中绘制的函数 +pub fn draw(self : Canvas_ctx) { + self.begin_path() + self.arc(75, 75, 50, 0.0, pi * 2.0, true) // Outer circle + self.move_to(110, 75) + self.arc(75, 75, 35, 0.0, pi, false) // Mouth (clockwise) + self.move_to(65, 65) + self.arc(60, 65, 5, 0.0, pi * 2.0, true) // Left eye + self.move_to(95, 65) + self.arc(90, 65, 5, 0.0, pi * 2.0, true) // Right eye + self.stroke() +} + +// 我们在这里也演示`println`的功能 +pub fn display_pi() { + println("PI: \(pi)") } + ``` -使用`moonc`来编译文件,以获得`draw.mbt.wasm`。 +使用`moonc`来编译文件,以获得`draw.wasm`。我们推荐尽可能地使用wasm-gc特性。如果宿主环境不支持,那么可以省略`-wasm-gc`选项。 ```bash -moonc compile draw.mbt -wat2wasm draw.mbt.wat +moonc compile draw.mbt -wasm-gc -o draw.wasm ``` 在JavaScript中使用它: @@ -75,45 +118,165 @@ wat2wasm draw.mbt.wat + +``` + +对于导入对象,我们需要提供先前定义的程序中用到的外部函数接口:画布的绘制接口、数学接口以及`println`和`print`使用的往控制台输出的接口。 + +对于画布的接口和数学接口,我们可以用以下代码,把对象的方法转化为一个函数,使得第一个参数是对象;并且将对象的常值转化为一个获得该值的函数: + +```javascript +function prototype_to_ffi(prototype) { + return Object.fromEntries( + Object.entries(Object.getOwnPropertyDescriptors(prototype)) + .filter(([_key, value]) => value.value) + .map(([key, value]) => { + if (typeof value.value == 'function') + return [key, Function.prototype.call.bind(value.value)] + // TODO: 我们也可以将属性转化为getter和setter + else + return [key, () => value.value] + }) + ); +} + +const importObject = { + canvas: prototype_to_ffi(CanvasRenderingContext2D.prototype), + math: prototype_to_ffi(Math), + // ... +} +``` + +至于我们的输出功能,我们可以定义如下的闭包:它提供了一个缓存来存储字符串的字节,直到需要被输出到控制台为止: + +```javascript +const [log, flush] = (() => { + var buffer = []; + function flush() { + if (buffer.length > 0) { + console.log(new TextDecoder().decode(new Uint8Array(buffer).valueOf())); + buffer = []; + } + } + function log(ch) { + if (ch == '\n'.charCodeAt(0)) { flush(); } + else if (ch == '\r'.charCodeAt(0)) { /* noop */ } + else { buffer.push(ch); } + } + return [log, flush] +})(); + +const importObject = { + // ... + spectest: { + print_char: log + }, +} + +// ... +WebAssembly.instantiateStreaming(fetch("draw.wasm"), importObject).then( + (obj) => { + obj.instance.exports._start(); + // ... + flush() + } +); +``` + +现在我们可以把之前的内容结合起来,获得我们最终的`index.html`: + +```html title="./index.html + + + + + + + + + + ``` -确保`draw.mbt.wasm`以及`index.html`在同一个文件夹下,之后在文件夹中启动HTTP服务器,例如使用Python: +确保`draw.wasm`以及`index.html`在同一个文件夹下,之后在文件夹中启动HTTP服务器,例如使用Python: ```bash python3 -m http.server 8080 ``` -在浏览器中打开 http://localhost:8080 后,应该可以看到如下的笑脸: +在浏览器中打开 http://localhost:8080 后,应该可以看到屏幕上的一个笑脸以及控制台的输出: -![](./imgs/smile-face.png) +![](./imgs/smile_face_with_log.png) diff --git a/zh-docs/imgs/smile_face_with_log.png b/zh-docs/imgs/smile_face_with_log.png new file mode 100644 index 0000000000000000000000000000000000000000..9cc3941418c2d15280055659c0df251a9d8d8912 GIT binary patch literal 78769 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 {owAtM2q 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 Iu3^&u0EF*OlK=n! literal 0 HcmV?d00001