问题标签 [webassembly]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
31920 浏览

javascript - asm.js 和 WebAssembly 有什么区别?

我最近一直在阅读有关 asm.js 和 WebAssembly 的信息:

http://ejohn.org/blog/asmjs-javascript-compile-target/

https://brendaneich.com/2015/06/from-asm-js-to-webassembly/

我仍然对一些事情感到困惑:

  1. asm.js 代码是否及时编译并运行?编译成什么?
  2. 除了 asm.js 是文本和 wasm(Web 程序集)是二进制之外,两者之间有什么区别?
  3. 这对于在浏览器中运行的其他脚本语言意味着什么?以python为例,会不会
    • python代码编译成wasm?或者
    • python解释器(Cpython)编译成wasm并解释python?
0 投票
2 回答
5127 浏览

javascript - WebAssembly、JavaScript 和其他语言

随着 Web 新时代的到来,将由 Google、Microsoft、Apple 和 Mozilla 合作设计的 WebAssembly:

WebAssembly 高级目标

  1. 定义一个可移植的、大小和加载时间效率高的二进制格式作为编译目标,通过利用包括移动和物联网在内的各种平台上可用的通用硬件功能,可以编译为以本机速度执行

阅读更多...

我想问那些已经拥有这方面知识的人:

任何编程语言一旦制作完成,是否可以编译为 WebAssembly?让它成为 C#、Java、Python、JavaScript、Ruby。如果是这种情况 - Web 开发人员可以选择任何语言来完成他现在使用 JavaScript 可以实现的事情吗?

0 投票
1 回答
2192 浏览

javascript - 让 WebAssembly 运行

我正在尝试让 WebAssembly 的 polyfill-prototype-1 运行:

我有一个 localhost 运行一个 .html 文件,其中只有基础知识 ( ) 和对https://github.com/WebAssembly/polyfill-prototype-1/blob/master/README.md中指定的 loadWebAssembly() 的调用。

但是,当我转到该页面时,出现错误:“ http://localhost/-username-/polyfill-prototype-1/undefined 404 (Not Found)”,因为 load-wasm.js 中的 packedURL 未定义,即在前面引用的链接中看到,似乎意味着“它(当前)如何工作”中的第 2 步(即“polyfill 库启动一个包含从 unpack.cpp 编译的 asm.js 代码与加载中的胶水代码连接的工作程序-wasm-worker.js.") 没有被调用/运行/某事

我推测我没有给它提供要转换的代码或其他东西的路径,但我不知道该怎么做。

我在做什么错/如何让它将我的 c++ 代码转换为 asm.js,以便它可以继续执行第 3 步?

0 投票
2 回答
2354 浏览

c++ - Web 程序集 (wasm) 会有自己的语法吗?

听说 W3 正在研究 web 的字节码,web assembly (wasm) 会像 nasm 和 masm 一样有自己的语法吗?例如输入类似的东西,

在 Windows 的 nasm 中

还是只能通过从 C/C++ 和其他语言编译来创建?

0 投票
2 回答
758 浏览

v8 - 有没有办法向 V8 Turbofan 提供 asm.js 或 WebAssembly 代码?

在查看了最近宣布的对 WebAssembly 的支持后,我突然想到,如果有一些方法可以显着提高它的效用:

  1. 让 TurboFan(V8 JIT Crankshaft 优化器的继任者)输出它生成的所有汇编代码以及静态类型签名和生成代码的执行配置文件。

  2. 允许程序员为覆盖优化器的特定静态类型签名提供自己的 asm.js/WebAssembly 代码。

有没有办法做到这一点?

有一些迹象表明它可能来自本文的以下段落:

在底层,V8 中的 WebAssembly 实现旨在重用大部分现有的 JavaScript 虚拟机基础设施,特别是 TurboFan 编译器。一个专门的 WebAssembly 解码器通过一次检查类型、局部变量索引、函数引用、返回值和控制流结构来验证模块。解码器生成一个 TurboFan 图,该图经过各种优化处理,最终由同一后端转换为机器码,该后端为优化的 JavaScript 和 asm.js 生成机器码。在接下来的几个月里,团队将专注于通过编译器调优、并行性和编译策略改进来改善 V8 实现的启动时间。

为更广泛的受众扩展这个想法:

典型的自上而下优化涉及高级编程,然后执行分析以确定哪些代码需要更多的努力。无论优化是自动代码生成还是优化代码的手动编码,都是如此。在动态类型语言的情况下,您经常希望超越仅仅优化动态类型算法并提供专门用于特定静态类型的代码。事实上,这就是 V8 JIT 优化器自动执行的操作。如果人们想手动提供一些特别“热门”的专门案例,他们需要以某种方式通知自动优化器他们已经完成了工作,以便自动优化器可以合并手动优化的代码,而不是自动生成次优代码。

0 投票
1 回答
108 浏览

javascript - 我可以使用 emscripten 在 i386 模式下编译应用程序吗?

我有一个在 64 位环境中编译时无法运行的遗留 C 应用程序,因为它取决于指针的大小和其他 32 位数据类型。

是否有一个 emscripten 标志可以用来在 32 位模式下编译程序,还是我需要先移植它?

0 投票
1 回答
519 浏览

webassembly - 浏览器中 WebAssembly MVP 的现状

https://webassembly.github.io/demo/说:“实现了完整的执行语义。” 听起来 MVP 已经完成了,但究竟缺少什么或者我做错了什么?

浪费:

JS代码:

Chrome Canary 加载了 WASM 文件,但 grow_memory 似乎没有实现:

Firefox Nightly 加载失败:

此外,页面大小似乎是 0x10000 而不是 0x1000。但我在设计或规格中找不到它。

0 投票
1 回答
509 浏览

javascript - 了解 Wasm (WebAssembly) 原型

在 Chrome 中,Wasm 原型有四个功能:
1) instantiateModule
2) instantiateModuleFromAsm
3) verifyFunction
4)verifyModule

我在哪里可以找到关于他们做什么以及我应该如何称呼他们的适当文档?

PS:
我已经能够从这里的测试中得到一些东西:https ://github.com/WebAssembly/v8-native-prototype/blob/master/test/mjsunit/wasm/asm-wasm.js

PPS:
也在这里问:https ://github.com/WebAssembly/v8-native-prototype/issues/111

0 投票
2 回答
1232 浏览

javascript - 如何使用 Webassembly (wasm) 访问和修改文档对象模型 (DOM)?

我知道webassembly (wasm) 仍处于起步阶段,但我想知道是否以及如何使用它来更改 DOM(就像我使用 Javascript 更改 DOM 一样)。

这是官方页面:

Wasm MVP

0 投票
3 回答
10310 浏览

memory - WebAssembly 中的内存限制

WebAssembly 程序的内存分配限制策略是什么?

当前的(硬)javascript引擎内存限制会被继承吗?例如,是否可以编写需要数百兆内存的实际应用程序?

当前关于 javascript 内存分配的浏览器策略对浏览器中实际可用的内容提出了严格的限制。速度不再是 emscripten/asm.js 和 jit 编译的问题,但是内存限制使得在浏览器中构建任何严肃的应用程序变得困难或不可能。

例如,参见http://www.meshlabjs.net,MeshLab网格处理系统的浏览器运行版本。对于桌面应用程序,主要限制是,在基于 javascript 的版本中,由于浏览器的 js 引擎对分配的内在限制,无法加载大型 3D 模型。