GIAC-2022sh 学习笔记 | WebAssembly在前端中的应用与展望

简介: GIAC-2022sh 学习笔记 | WebAssembly在前端中的应用与展望

wasm.png

WebAssembly在前端中的应用与展望

徐君

Intel 软件研发工程师

http://www.thegiac.com/2022sh/schedule


个人简介

徐君

  • 擅长运行时引擎、编译器前端方向
  • WebAssemblyMicroRuntime(WAMR)项目核心成员,主要负责: • 性能优化 • 开发者体验 • 产品应用
  • 项目地址: https://github.com/bytecodealliance/wasm-micro-runtime
    WebAssembly在前端中的应用与展望 徐君 Intel 软件研发工程师


WebAssembly 和 WAMR 简介

什么是WebAssembly?

  • WebAssembly(wasm)是一个可移植、体积小、加载快并且兼容Web的 全新格式
  • 安全
  • 沙箱隔离机制,宿主资源访问可控制
  • 高效
  • 通过JIT/AOT技术加持,可接近原生应用的执行性能
  • 多语言支持
  • C/C++, typescript, python, go, rust, ..

WebAssembly = Sandboxing + Performance + Portability + Capabilities

WAMR发展历史

  • 2019年5月Intel开源WAMR项目
  • 2019年11月以创始项目身份发起并加入Bytecode Alliance(BA)
  • 2021年10月转换为社区开放治理模式
  • 设计目标
    • 广泛的适用性:从嵌入式设备到云端
    • 小尺寸,高性能的轻量级 WASM 运行时
    • 适配多种CPU架构(32bit and 64bit)和操作系统 • Intel SGX/TDX 一等公民支持


WAMR在前端的应用


WAMR针对前端场景的优化设计

WAMR特性介绍

  • 实现语言:C
  • 解释器:
  • Fast interpreter —— 速度优先
  • Classic interpreter —— 内存优先
  • 编译后端:LLVM • 目标文件大小
  • VMCore – 60K for AoT, 90K for interpreter
  • 150K for the whole runtime
  • AoT 支持平台:Linux, SGX, MCU
  • SIMD 支持
  • SGX/TDX 一等公民支持
  • Wasm 多线程特性与 pthread 支持
  • Reference type, Multi-modules
  • CPU Arch support:
  • X86-64, X86-32
  • ARM, THUMB, AARCH64
  • MIPS
  • XTENSA
  • Platform support:
  • Linux,SGX (Linux)
  • Windows
  • MacOS
  • Android
  • Zephyr, AliOS Things • Vxworks
  • Nuttx, RT-thread
  • iOS*

WAMR整体架构

wasm.png

  • 预先编译
  • Fast interpreter
  • Extend new bytecode
  • Builtin-libc


WebAssembly现存问题

  • 应用编程语言欠缺
  • 跨模块交互不便
  • 开发工具不完善


WebAssembly未来展望

WebAssembly 2.0 草案

  • 已包含的主要内容:
  • 固定宽度(128bit)SIMD
  • 批量内存操作、table操作
  • 引用类型
  • 多返回值
  • 讨论中
  • 异常处理
  • 多线程
  • 宽松SIMD
  • 其他

GC proposal

  • 意义
  • 更高效地支持高级语言
  • 更快的执行效率
  • 更小的模块体积
  • 纯静态类型系统
  • 复用任意GC实现
  • GCproposal并不涉及具体GC算法
  • 定义struct,array等基本结构
  • 目前状态
  • 一部分依赖的feature(如reference-types等)已就绪
  • 一些runtime已经提供实验性支持(WAMR,V8)
  • 暂未稳定,偶尔会有大幅调整


Component model


https://github.com/bytecodealliance/wasm-micro-runtime

目录
相关文章
|
23天前
|
移动开发 缓存 前端开发
深入理解前端路由:原理、实现与应用
本书《深入理解前端路由:原理、实现与应用》全面解析了前端路由的核心概念、工作原理及其实现方法,结合实际案例探讨了其在现代Web应用中的广泛应用,适合前端开发者和相关技术人员阅读。
|
1月前
|
前端开发 项目管理
Gitflow分支策略及其在前端工程化中的应用
Gitflow 分支策略也并非适用于所有项目。对于一些小型或简单的前端项目,可能会显得过于复杂。在实际应用中,需要根据项目的具体情况和团队的需求进行适当调整和优化。
|
29天前
|
自然语言处理 前端开发 JavaScript
深入理解前端中的 “this” 指针:从基础概念到复杂应用
本文全面解析前端开发中“this”指针的运用,从基本概念入手,逐步探讨其在不同场景下的表现与应用技巧,帮助开发者深入理解并灵活掌握“this”的使用。
|
29天前
|
存储 前端开发 JavaScript
前端中对象的深度应用与最佳实践
前端对象应用涉及在网页开发中使用JavaScript等技术创建和操作对象,以实现动态交互效果。通过定义属性和方法,对象可以封装数据和功能,提升代码的组织性和复用性,是现代Web开发的核心技术之一。
|
1月前
|
前端开发
结合具体案例分析Gitflow分支策略在大型前端项目中的应用优势
通过这个具体案例可以看出,Gitflow 分支策略在大型前端项目中能够提供有条不紊的开发环境,保障项目的稳定性和持续发展。
|
1月前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
45 5
|
1月前
|
前端开发 开发者
本文将深入探讨 BEM 的概念、原理以及其在前端开发中的应用
BEM(Block-Element-Modifier)是一种前端开发中的命名规范和架构方法,旨在提高代码的可维护性和复用性。通过将界面拆分为独立的模块,BEM 提供了一套清晰的命名规则,增强了代码的结构化和模块化设计,促进了团队协作。本文深入探讨了 BEM 的概念、原理及其在前端开发中的应用,分析了其优势与局限性,为开发者提供了宝贵的参考。
52 8
|
1月前
|
JavaScript 前端开发 测试技术
构建高效可维护的前端应用
构建高效可维护的前端应用
|
1月前
|
编解码 监控 JavaScript
打造高效前端应用
打造高效前端应用
35 1
|
1月前
|
前端开发 JavaScript 开发者
使用React和Redux构建高效的前端应用
使用React和Redux构建高效的前端应用
36 1