Skip to content

Commit

Permalink
doc: remove unnecessary space
Browse files Browse the repository at this point in the history
Signed-off-by: ezirmusitua <jferroal@gmail.com>
  • Loading branch information
ezirmusitua committed Nov 19, 2023
1 parent bce676c commit d0b73fb
Show file tree
Hide file tree
Showing 9 changed files with 18 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,12 @@ USAGE
- 默认值为 `2`,即 `O2`
8. 输入的 WASM 文件(`/path/to/wasm/file`)。
9. 输出路径(`/path/to/output/file`)。
- 默认情况下,`wasmedge compile` 命令将输出 [通用的 WASM 格式](#output-format-universal-wasm)
- 如果在输出路径中指定了特定的文件扩展名(在 Linux 上为 `.so`,在 MacOS 上为 `.dylib`,在 Windows 上为 `.dll`),`wasmedge compile` 命令将输出 [共享库格式](#output-format-shared-library)
- 默认情况下,`wasmedge compile` 命令将输出[通用的 WASM 格式](#output-format-universal-wasm)
- 如果在输出路径中指定了特定的文件扩展名(在 Linux 上为 `.so`,在 MacOS 上为 `.dylib`,在 Windows 上为 `.dll`),`wasmedge compile` 命令将输出[共享库格式](#output-format-shared-library)

## 示例

我们建立了一个纯手写的 [fibonacci.wat](https://github.com/WasmEdge/WasmEdge/raw/master/examples/wasm/fibonacci.wat) 并使用 [wat2wasm](https://webassembly.github.io/wabt/demo/wat2wasm/) 工具将其转换为 `fibonacci.wasm` WebAssembly 程序。以此为例,将它导出为一个接收单个 `i32` 整数作为输入参数的 `fib()` 函数。
我们创建了纯手工编写的 [fibonacci.wat](https://github.com/WasmEdge/WasmEdge/raw/master/examples/wasm/fibonacci.wat) 并使用 [wat2wasm](https://webassembly.github.io/wabt/demo/wat2wasm/) 工具将其转换为 `fibonacci.wasm` WebAssembly 程序。以此为例,将它导出为一个接收单个 `i32` 整数作为输入参数的 `fib()` 函数。

你可以执行:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ USAGE

Hello World 示例是一个独立的 Rust 应用程序,可以通过 [WasmEdge 命令行工具](../build-and-run/cli)执行。它的源代码和构建说明可以在[此处](https://github.com/second-state/rust-examples/tree/main/hello)找到。

你需要安装[Rust 编译器](https://github.com/second-state/rust-examples/blob/main/README.md#prerequisites),然后使用以下命令从 Rust 源代码构建 WASM 字节码文件。
你需要安装 [Rust 编译器](https://github.com/second-state/rust-examples/blob/main/README.md#prerequisites),然后使用以下命令从 Rust 源代码构建 WASM 字节码文件。

```bash
cargo build --target wasm32-wasi --release
Expand Down Expand Up @@ -189,7 +189,7 @@ Hello WasmEdge!

[add](https://github.com/second-state/wasm-learning/tree/master/cli/add) 程序是用 Rust 编写的,包含一个导出的 `add()` 函数。你可以将其编译为 WebAssembly,并使用 `wasmedge` 调用 `add()` 函数。在这个示例中,您将看到如何从 CLI 进行此操作。通常在将 WasmEdge 嵌入到另一个主机应用程序中时,需要从主机调用 WASM 函数。

你需要安装[Rust 编译器](https://github.com/second-state/rust-examples/blob/main/README.md#prerequisites),然后使用以下命令从 Rust 源代码构建 WASM 字节码文件。
你需要安装 [Rust 编译器](https://github.com/second-state/rust-examples/blob/main/README.md#prerequisites),然后使用以下命令从 Rust 源代码构建 WASM 字节码文件。

```bash
cargo build --target wasm32-wasi --release
Expand Down Expand Up @@ -256,7 +256,7 @@ wasmedge --dir .:. wasmedge_quickjs.wasm hello.js 1 2 3
Hello 1 2 3
```

[qjs_tf.wasm](https://github.com/WasmEdge/WasmEdge/raw/master/examples/wasm/js/qjs_tf.wasm) 是一个被贬意为 WebAssembly 的包含 [WasmEdge Tensorflow 扩展](https://www.secondstate.io/articles/wasi-tensorflow/) 的 JavaScript 解释器。要运行[qjs_tf.wasm](https://github.com/WasmEdge/WasmEdge/raw/master/examples/wasm/js/qjs_tf.wasm),你必须使用 `wasmedge-tensorflow-lite` CLI 工具,这是一个内置了 Tensorflow-Lite 扩展的 WasmEdge 构建版本。您可以下载一个完整的 [基于 Tensorflow 的 JavaScript 示例](https://github.com/second-state/wasmedge-quickjs/tree/main/example_js/tensorflow_lite_demo) 进行图像分类。
[qjs_tf.wasm](https://github.com/WasmEdge/WasmEdge/raw/master/examples/wasm/js/qjs_tf.wasm) 是一个被贬意为 WebAssembly 的包含 [WasmEdge Tensorflow 扩展](https://www.secondstate.io/articles/wasi-tensorflow/) 的 JavaScript 解释器。要运行 [qjs_tf.wasm](https://github.com/WasmEdge/WasmEdge/raw/master/examples/wasm/js/qjs_tf.wasm),你必须使用 `wasmedge-tensorflow-lite` CLI 工具,这是一个内置了 Tensorflow-Lite 扩展的 WasmEdge 构建版本。您可以下载一个完整的[基于 Tensorflow 的 JavaScript 示例](https://github.com/second-state/wasmedge-quickjs/tree/main/example_js/tensorflow_lite_demo) 进行图像分类。

```bash
# Download the Tensorflow example
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ Hello WasmEdge!

WasmEdge 提供与 Node.js 兼容的 JavaScript 运行时。你可以创建轻量级的 WASM 容器镜像来运行 Node.js 应用程序。与标准的 Node.js Linux 容器镜像相比,WASM 镜像体积仅为其 1/100、完全可移植,并且启动时间是其 1/10。

在本指南中,示例应用是一个用 Node.js 编写的 HTTP Web 服务器。其 [源代码和构建说明在此处](https://github.com/second-state/wasmedge-quickjs/tree/main/example_js/docker_wasm/server)
在本指南中,示例应用是一个用 Node.js 编写的 HTTP Web 服务器。其[源代码和构建说明在此处](https://github.com/second-state/wasmedge-quickjs/tree/main/example_js/docker_wasm/server)

### 构建 Node.js 示例

Expand Down Expand Up @@ -177,7 +177,7 @@ Hello WasmEdge

Docker + WASM 允许我们构建和运行 WASM 容器。然而,在大多数复杂应用中,WASM 容器只是应用的一部分。它需要与系统中的其他 Linux 容器协同工作。[Docker compose](https://docs.docker.com/compose/) 工具广泛用于组合和管理多容器部署,它与 Docker Desktop 一起安装。

在我们的 [示例微服务应用程序](https://github.com/second-state/microservice-rust-mysql) 中,包括一个 Nginx Web 服务器和一个 MySQL 数据库。WASM 容器仅用于 Rust 应用,用于访问数据库和处理 HTTP 请求(即应用服务器)。
在我们的[示例微服务应用程序](https://github.com/second-state/microservice-rust-mysql) 中,包括一个 Nginx Web 服务器和一个 MySQL 数据库。WASM 容器仅用于 Rust 应用,用于访问数据库和处理 HTTP 请求(即应用服务器)。

<!-- prettier-ignore -->
:::note
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,4 +102,4 @@ Hello WasmEdge
## 下一步

- [WasmEdge 的基本 Rust 示例](https://github.com/second-state/rust-examples)
- 用你喜欢的语言编写 WASM 应用,如 [Rust](/category/develop-wasm-apps-in-rust), [C/C++](/category/develop-wasm-apps-in-cc), [JavaScript](/category/develop-wasm-apps-in-javascript), [Go](/category/develop-wasm-apps-in-go) 以及其他许多语言。
- 用你喜欢的语言编写 WASM 应用,如 [Rust](/category/develop-wasm-apps-in-rust)[C/C++](/category/develop-wasm-apps-in-cc)[JavaScript](/category/develop-wasm-apps-in-javascript)[Go](/category/develop-wasm-apps-in-go) 以及其他许多语言。
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@ WasmEdge 运行时为其包含的 WebAssembly 字节码程序提供了良好定
- 介绍 [WasmEdge 运行时](/category/what-is-wasmedge)
- [运行 WasmEdge](/category/running-with-wasmedge)

对于使用 WasmEdge 进行高级编程,请参考 [开发 WASM 应用程序](../develop/overview.md)[在应用中嵌入 WasmEdge](../embed/overview.md),或向 WasmEdge [进行贡献](../contribute/overview.md) 的指南。
对于使用 WasmEdge 进行高级编程,请参考[开发 WASM 应用程序](../develop/overview.md)[在应用中嵌入 WasmEdge](../embed/overview.md),或向 WasmEdge [进行贡献](../contribute/overview.md) 的指南。

如果你有任何问题或有任何反馈,请通过以下方式联系我们:

- [Discord 聊天](https://discord.gg/U4B5sFTkFc)
- [创建 GitHub 问题以获取技术支持](https://github.com/WasmEdge/WasmEdge/issues)
- [提交 GitHub 讨论](https://github.com/WasmEdge/WasmEdge/discussions)
- [在 Twitter 关注 @realwasmedge](https://twitter.com/realwasmedge)
对于使用 WasmEdge 进行高级编程,请参考 [开发 WASM 应用程序](../develop/overview.md)[在应用中嵌入 WasmEdge](../embed/overview.md),或向 WasmEdge [进行贡献](../contribute/overview.md) 的指南。
对于使用 WasmEdge 进行高级编程,请参考[开发 WASM 应用程序](../develop/overview.md)[在应用中嵌入 WasmEdge](../embed/overview.md),或向 WasmEdge [进行贡献](../contribute/overview.md) 的指南。

如果你有任何问题或有任何反馈,请通过以下方式联系我们:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,6 @@ module.exports = (req, res) => {
};
```

现在,你可以 [将你 Fork 的存储库部署到 Netlify](https://www.netlify.com/blog/2016/09/29/a-step-by-step-guide-deploying-on-netlify/),获得一个用于主题分类的 Web 应用程序。
现在,你可以[将你 Fork 的存储库部署到 Netlify](https://www.netlify.com/blog/2016/09/29/a-step-by-step-guide-deploying-on-netlify/),获得一个用于主题分类的 Web 应用程序。

接下来,轮到你使用 [netlify-wasm-runtime 存储库](https://github.com/second-state/netlify-wasm-runtime) 作为模板在 Netlify 中开发 Rust 无服务器函数了。期待着你出色的工作。
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,6 @@ module.exports = (req, res) => {
};
```

现在,你可以 [将你 Fork 的存储库部署到 Vercel](https://vercel.com/docs/git#deploying-a-git-repository),获得一个用于主题分类的 Web 应用。
现在,你可以[将你 Fork 的存储库部署到 Vercel](https://vercel.com/docs/git#deploying-a-git-repository),获得一个用于主题分类的 Web 应用。

接下来,轮到你使用 [vercel-wasm-runtime 存储库](https://github.com/second-state/vercel-wasm-runtime) 作为模板,在 Vercel 中开发你自己的 Rust 无服务器函数了。期待着您出色的工作。
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ WasmEdge([CNCF 旗下的沙盒项目](https://www.cncf.io/projects/wasmedge/)

## 高性能

利用 [基于 LLVM 的 AoT 编译器](../build-and-run/aot),WasmEdge 是市场上速度最快的 WebAssembly 运行时。
利用[基于 LLVM 的 AoT 编译器](../build-and-run/aot),WasmEdge 是市场上速度最快的 WebAssembly 运行时。

- [高性能轻量设计用于无服务器计算](https://arxiv.org/abs/2010.07115),发表于 2021 年 1 月 IEEE 软件。[https://arxiv.org/abs/2010.07115](https://arxiv.org/abs/2010.07115)
- [云端性能分析:Arm 与 x86 CPU 的比较](https://www.infoq.com/articles/arm-vs-x86-cloud-performance/),发表于 2021 年 1 月的 infoQ.com。[https://www.infoq.com/articles/arm-vs-x86-cloud-performance/](https://www.infoq.com/articles/arm-vs-x86-cloud-performance/)
Expand Down Expand Up @@ -43,7 +43,7 @@ WasmEdge 可以与现有的云原生基础设施无缝集成。

要将 WasmEdge 与你现有的云原生基础架构集成,有几种管理 WASM 应用程序作为 Kubernetes 下的“容器”的选项。这些选项使您能够在 Kubernetes 集群中同时运行 Linux 容器和 WASM 容器。

**选项 #1** [使用 OCI 运行时 crun](../../develop/deploy/oci-runtime/crun.md)(runc 的 C 版本,主要由 Red Hat 支持)。crun 根据镜像注释决定 OCI 镜像是 WASM 还是基于 Linux 的。如果镜像被注释为 wasm32,则 crun 将绕过 Linux 容器设置,直接使用 WasmEdge 运行镜像。通过使用 crun,你可以让整个 Kubernetes 栈(包括 CRI-O、containerd、Podman、kind、micro k8s 和 k8s)与 WASM 镜像一起工作。
**选项 #1**[使用 OCI 运行时 crun](../../develop/deploy/oci-runtime/crun.md)(runc 的 C 版本,主要由 Red Hat 支持)。crun 根据镜像注释决定 OCI 镜像是 WASM 还是基于 Linux 的。如果镜像被注释为 wasm32,则 crun 将绕过 Linux 容器设置,直接使用 WasmEdge 运行镜像。通过使用 crun,你可以让整个 Kubernetes 栈(包括 CRI-O、containerd、Podman、kind、micro k8s 和 k8s)与 WASM 镜像一起工作。

选项 #2[使用 containerd-shim 通过 runwasi 启动 WASM“容器”](../../develop/deploy/cri-runtime/containerd.md)。基本上,containerd 可以查看镜像的目标平台。如果镜像是 wasm32,则使用 runwasi;如果是 x86 / arm,则使用 runc。这是 Docker + Wasm 使用的方法。

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ WasmEdge 是云原生和边缘计算应用的“无服务器”运行时。它

WasmEdge 的一个主要用例是从主机应用程序启动虚拟机实例。根据你的主机应用程序编程语言,您可以使用 WasmEdge SDK 来启动和调用 WasmEdge 函数。

- 使用 [WasmEdge C API](/category/c-sdk-for-embedding-wasmedge) 将 WasmEdge 函数嵌入到基于 `C` 的应用程序中。查看 [快速入门指南](../../embed/c/intro.md)
- 使用 [WasmEdge Go API](/category/go-sdk-for-embedding-wasmedge) 将 WasmEdge 函数嵌入到 `Go` 应用程序中。这里有一个 [教程](https://www.secondstate.io/articles/extend-golang-app-with-webassembly-rust/) 和一些 [示例](https://github.com/second-state/WasmEdge-go-examples)
- 使用 [WasmEdge C API](/category/c-sdk-for-embedding-wasmedge) 将 WasmEdge 函数嵌入到基于 `C` 的应用程序中。查看[快速入门指南](../../embed/c/intro.md)
- 使用 [WasmEdge Go API](/category/go-sdk-for-embedding-wasmedge) 将 WasmEdge 函数嵌入到 `Go` 应用程序中。这里有一个[教程](https://www.secondstate.io/articles/extend-golang-app-with-webassembly-rust/) 和一些[示例](https://github.com/second-state/WasmEdge-go-examples)
- 使用 [WasmEdge Rust crate](https://crates.io/crates/wasmedge-sdk) 将 WasmEdge 函数嵌入到 `Rust` 应用程序中。
- 使用 `NAPI` 将 WasmEdge 函数嵌入到 `Node.js` 应用程序中。这里有一个 [教程](https://www.secondstate.io/articles/getting-started-with-rust-function/)
- 使用 `NAPI` 将 WasmEdge 函数嵌入到 `Node.js` 应用程序中。这里有一个[教程](https://www.secondstate.io/articles/getting-started-with-rust-function/)
- 通过生成一个新进程将 WasmEdge 函数嵌入到任何应用程序。查看 [Vercel 无服务器函数](https://www.secondstate.io/articles/vercel-wasmedge-webassembly-rust/)[AWS Lambda](https://www.cncf.io/blog/2021/08/25/webassembly-serverless-functions-in-aws-lambda/) 的示例。

不过,WebAssembly 规范仅支持用于 WebAssembly 字节码函数的非常有限的输入参数和返回值的数据类型。要传递复杂数据类型(例如字符串或数组)作为来自 Rust 编译的 WebAssembly 的调用参数,你应该使用[`wasmedge-bindgen`](https://crates.io/crates/wasmedge-bindgen)提供的 `bindgen` 解决方案。我们目前在 [Rust](../../develop/rust/bindgen.md)[Go](../../embed/go/bindgen.md) 中支持`wasmedge-bindgen`
Expand Down

0 comments on commit d0b73fb

Please sign in to comment.