Skip to content

Latest commit

 

History

History
34 lines (27 loc) · 2.57 KB

Tooling.md

File metadata and controls

34 lines (27 loc) · 2.57 KB

工具支持

用于浏览器内执行的工具通常质量参差不齐。WebAssembly 旨在通过公开low-level capabilities而不是规定应该构建哪些工具来支持真正强大的工具。这使得:

  • 将现有的和熟悉的工具移植到 WebAssembly;
  • 构建特别适合 WebAssembly 的新工具。

WebAssembly 开发应该是自我托管的,不仅仅是一个可爱的黑客,而是一个令人愉快的平台,开发人员积极寻找他们想要和需要只是工作的工具。开发人员有很高的期望,满足这些对工具的期望意味着 WebAssembly 具有为非开发人员构建丰富应用程序所需的功能。

我们希望支持的工具包括:

  • 编辑:
    • 像 Vim 和 Emacs 这样的编辑器应该只是工作
  • 编译器和语言虚拟机:
    • 针对 WebAssembly(C/C++,Rust,Go,C#)的语言编译器应该能够在 WebAssembly 本身中运行,发出一个 WebAssembly 模块,然后可以执行。
    • Bash、Python、Ruby 等语言的虚拟机应该可以工作。
    • 使用即时编译器(JavaScript VMS、LuaJit、PyPy)的虚拟机应该能够支持 WebAssembly 的新即时后端。
  • 调试器:
    • 基本的浏览器集成可以通过源映射支持来完成。
    • 像 C++ 这样的语言的完全集成需要在调试信息格式以及中断程序、检查其状态、修改其状态的权限方面进行更多的标准化工作。
    • 调试信息最好按需交付,而不是内置到 WebAssembly 模块中。
  • 针对非内存安全语言的杀毒软件:Asan,Tsan,Msan,Ubsan.消毒剂的有效支持可能需要改进:
    • 诱捕支架;
    • 阴影堆栈技术(通常通过 mmap S MAP_FIXED 实现)。
  • 针对开发人员自己的代码的选择加入security增强:针对 WebAssembly 的开发人员可能希望他们自己的代码比 WebAssembly 实现所需的代码进一步沙箱化,以保护用户。
  • 探查器:
    • 基于样本;
    • 基于仪器。
  • 进程转储:局部变量,调用栈,堆,全局变量,线程列表。
  • JavaScript+WebAssembly 大小优化工具:庞大的 WebAssembly+JavaScript 混合应用程序,WebAssembly 调用与 Web 平台的其余部分通信的 JavaScript 库,需要工具来跨 API 边界执行死代码剥离和全局优化。

在许多情况下,该工具将是纯粹的 WebAssembly,没有来自 WebAssembly 的任何特定于工具的支持。这对于调试来说是不可能的,但对于消毒剂来说应该是完全可能的。