4

我确信在 WebAssembly Post-MVP 之后,asm.js 将被弃用。即使是现在,一些现有的 asm.js 项目已经开始使用 WebAssembly。JS 引擎(V8)也开始将 asm.js 编译为 WebAssembly,因此即使旧项目永远不会迁移,最终用户仍然会从 WebAssembly 中获得部分优势。

我的问题是,那么本地客户端呢?它没有在 JS 引擎中实现,所以这可能是一个问题。即使是现在,本机客户端似乎也已被弃用。在可预见的将来,原生客户端会从 Chrome 中完全删除吗?我希望看到 Chrome 的二进制大小有所减少。

附带问题:

  • 在 WebAssembly 中包含 thread/gc/simd/exception 之后,WebAssembly 中是否还有 native-client 有但缺少的东西(阻止迁移)?
  • WebAssembly 花了大约 2 年才达到 MVP,任何一个 Post-MVP 的预期时间是多少?
  • 看起来 WebAssembly 小组正在一次处理多个 Post-MVP 特性,而不是一个一个地处理,这不会减慢最终确定其中一个特性的速度吗?
4

1 回答 1

4

只回答附带问题,因为我不再在 Native Client 上工作。Google 的计划是它自己的代言人,所以我将把它变成一个 wiki。

截至 2017/05/20 的更新NaCl 不在 glibc 中。这是受支持的原始 libc,并且需要相当长的时间来清理和上游。它只被 NaCl 的 GCC 工具链支持。仍然支持 musl libc,它与更新的基于 LLVM 的 NaCl 和 PNaCl 工具链一起使用。

截至 2017 年 5 月 30 日的更新,Chromium 团队宣布了 PNaCl 的命运WebAssembly 功能的暂定路线图

以下是您未提及的一些 Native Client 功能:

  • 进程外,许多人认为这是一个错误,因为它强制异步通信。它允许有保证的地址空间,这对于 64 位来说并没有太大的优势,并且对于 Native Client 的双沙盒设计至关重要。WebAssembly 还没有进程。
  • 通过postMessageAndAwaitResponse. 也被许多人视为错误。
  • 通过Pepper拥有许多 API 。许多镜像 Web 平台的 API。
  • 可以通过内存保护mprotect(尽管执行页面是有限的)。
  • 可以处理 POSIX 信号。
  • 支持计算goto和其他不可约控制流。
  • 有一些即时代码修补支持。
  • 支持弱于seq_cst原子。
  • 支持内联汇编,只要它遵循 NaCl 验证规则。

不过,并非所有这些都在 Portable Native Client 中。有差异的官方文档

MVP WebAssembly 之后的任何功能都没有时间表。我们不想急于求成,但我们想首先提供最有用的东西。这是一个社区团体,所以优先级实际上是由参与的人决定的。实现将无法同时处理所有功能,但探索可以很好地并行化。

于 2017-04-24T02:48:15.460 回答