WebAssembly、JavaScript和其他语言

2024-05-12 21:20:58 发布

您现在位置:Python中文网/ 问答频道 /正文

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

WebAssembly High-Level Goals

  1. Define a portable, size- and load-time-efficient binary format to serve as a compilation target which can be compiled to execute at native speed by taking advantage of common hardware capabilities available on a wide range of platforms, including mobile and IoT

read more...

我想问问那些已经掌握这方面知识的人:

有可能任何编程语言都可以编译成WebAssembly吗?让它成为C#,Java,Python,JavaScript,Ruby。如果是这样的话,web开发人员可以选择任何语言来完成他现在用JavaScript实现的事情吗?在


Tags: andoftowebmozillaapplegooglejavascript
2条回答

我认为在这种情况下,用javascript编写的代码会逐渐转换成一种更受欢迎的编程语言。在

我们的目标确实是支持任何语言,但是支持任何语言都很难在没有巨大延迟的情况下实现。在

WebAssembly目前主要关注那些传统上提前编译、在线性内存堆上工作良好、不需要动态重新编译、运行时代码加载或垃圾回收的语言。其中一些约束是为了尽早得到一个最小可行的产品(这发生在February 2017)中,并考虑到现有的浏览器编译器可以做什么。在

注意MVP不支持线程。之后不久将添加线程。在

通过编译一个用C/C++编写的解释器,可以很容易地支持Python、JavaScript和Ruby。更高版本的WebAssembly将支持JIT编译,但是像V8这样的引擎必须将WebAssembly当作一个新的ISA(例如,与x86-64/ARM/…)一样瞄准WebAssembly。在

C和Java需要类似的GC和堆栈操作原语。这也在路线图上,但在MVP、线程和动态链接之后。在

请注意,这些语言可能工作得很好,但是支持它们的所有库也很困难!我们(浏览器工程师)可以很好地支持语言,但我们需要围绕强大的库支持建立社区。在

WebAssembly会取代JavaScript吗?在

最后一句话:是的,WebAssembly应该能够做很多JavaScript可以做的事情,因为它可以访问相同的webapi。它的目标不是要替换JavaScript:它是为了补充JavaScript,避免为JavaScript添加特性,以便不自然地支持其他语言,并为低级别语言(如C++ + RIST)提供可预测的近本地性能。在

为那些以JavaScript为目标或编译与JavaScript相似语言(例如TypeScript)的人保留JavaScript的进化,并将WebAssembly发展成JavaScript喜欢其他语言的酷助手。在

最终,WebAssembly将支持even more low-level features。其中一些对于JavaScript的采纳是没有意义的,但是现有的代码(例如大型C++代码库)假定这些特性存在正确性和/或性能。在

人们应该停止编写JavaScript,转而使用WebAssembly吗?不,我希望JavaScript的紧密集成意味着WebSimMeleMax模块将被用于JavaScript(比如,一个快速图像处理器),而现有的C++代码库将针对Web,但我看不到{a3}。在

相关问题 更多 >