WebAssembly 入门课
于航
PayPal 高级软件工程师
10751 人已学习
新⼈⾸单¥29
登录后,你可以任选4讲全文学习
课程目录
已完结/共 23 讲
结束语 (1讲)
WebAssembly 入门课
15
15
1.0x
00:00/00:00
登录|注册

19 | 如何应用 WASI 及其相关生态?

你好,我是于航。
作为“实践篇”的最后一课,今天我们来一起看看“如何从零构建一个 WASI 应用?”。在实践篇的前三节课里,我花了大量的篇幅来介绍如何基于 Emscripten ,去构建一个可以运行在 Web 浏览器中的 Wasm 应用。而基于 WASI 构建的 Wasm 应用将会被运行在浏览器之外的 Native 环境中,因此其构建和使用方式与基于 Emscripten 的 Wasm 应用有所不同。
但也正如我们在第 07 讲中介绍的那样,WASI 本身作为一种抽象的操作系统调用接口,对上层的应用开发者来说,没有较为直接的影响。
甚至对于同样的一段可以被编译为本地可执行应用程序的代码来说,我们只需要适当调整编译器的相关设置,就可以在不做任何代码更改的情况下,编译出所对应的 WASI 版本代码(也就是 Wasm 字节码)。然后再配合相应的 Wasm 虚拟机,我们就能够以“另一种方式”来执行这些代码了。
总的来说你可以看到,相较于传统的可执行文件,WASI 应用程序的整个“生命周期”基本上只有“编译”与“运行”两个阶段会有所不同。在接下来的内容中,我们将以一段 C/C++ 代码入手,来从编码、编译,再到运行,一步步带你完成这个 WASI 应用。

编码

首先,我们先来编写应用对应的 C/C++ 代码,这部分内容如下所示。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了如何应用WASI及其相关生态,包括构建WASI应用、交叉编译流程、WASI SDK的使用以及Capability-based Security安全模型。通过实际操作演示了如何构建和运行WASI应用,为读者提供了一套完整的操作流程和工具资源。文章强调了构建WASI应用是一个“交叉编译”的过程,需要在各自的宿主机器上构建以Wasm字节码为ISA架构、WASI作为平台类型的应用,并由支持WASI的Wasm运行时负责实际运行。WASI SDK为开发者提供了支持WASI交叉编译的工具资源,包括适用于WASI平台的C标准库和Clang编译器。此外,文章还提到了在执行WASI应用时需要注意WASI本身所基于的Capability-based Security安全模型,需要主动告知运行时引擎当前WASI应用所需要使用到的Capability。整体而言,本文为读者提供了深入了解WASI及其应用的重要信息,对于想要探索WASI技术的读者具有很高的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《WebAssembly 入门课》
新⼈⾸单¥29
立即购买
登录 后留言

全部留言(4)

  • 最新
  • 精选
  • Yarco
    不知道chrome扩展开发是否支持wasm代码的运行...

    作者回复: Google 了一下,看起来是可以的。

    2020-10-18
    2
    2
  • 慌慌张张
    老师之前我在Twitter上看到说如果wasm+wasi早点出来,就没docker什么事情了,具体原因还希望老师多说一下。

    作者回复: 主要就是在于 WASI 本身的这种基于 Capability-based Security 的“沙盒机制”相较于现在的 Docker 要轻量很多,并且 WASI 也标准化了一套系统接口可用于沙盒内的应用使用,这是最主要的两个点。但是不能直接拿 WASI 与 Docker 进行比较,两者并不是一个东西,你就简单按照我上面说的两个点来理解就可以。

    2020-11-04
    1
  • 军秋
    WASI的目的:相对java的优势是在可以把已经存在的C/C++等代码库功能变异成跨平台。不知道我理解是否对?这部分对前端会有什么影响吗?

    作者回复: 是的,“对历史代码的可重用性”也是 Wasm 最重要的几个特征之一。对前端来说最好的例子就是我之前介绍过的 eBay 那个例子。在那个例子中,我们可以直接使用诸如 ZBar 等知名、优秀、稳定的 C++ 库来完成 Web 前端应用需要进行的一些任务,比如二维码扫描。因此,除了 Wasm 带来的性能提升,“代码重用”也是对 Web 前端应用有影响的一个地方。

    2020-10-16
    1
  • Geek_362e38
    请问我想在electron主进程(nodejs环境)调用.wasm文件要怎么做?其中.wasm文件是通过wasi-sdk转化的,其中访问了操作系统功能,会在当前路径创建一个hello.txt并且写入部分内容。
    2023-09-13归属地:福建
收起评论
显示
设置
留言
4
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部