WebAssembly,JavaScript和其他语言

Pat*_*ski 19 javascript c# python webassembly

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

WebAssembly高级目标

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

阅读更多...

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

可能有任何编程语言一旦编译成WebAssembly吗?让它成为C#,Java,Python,JavaScript,Ruby.如果是这种情况 - 网络开发人员是否可以选择任何语言来完成他现在使用JavaScript实现的目标?

JF *_*ien 25

目标确实是支持任何语言,但支持任何语言都很难在没有大幅延迟的情况下完成.

WebAssembly目前专注于传统上提前编译的语言,在线性内存堆上运行良好,并且不需要动态重新编译,运行时代码加载或垃圾收集.其中一些限制是尽早获得最小可行产品(这发生在20172月),并考虑到现有的浏览器内编译器可以做什么.

请注意,MVP不支持线程.不久之后将添加主题.

通过将用C/C++编写的解释器编译为WebAssembly,可以轻松地支持Python,JavaScript和Ruby.更高版本的WebAssembly将支持JIT编译,但像V8这样的引擎必须将WebAssembly定位为新的ISA(例如与x86-64/ARM/...相同).

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

请注意,语言可以正常工作,但支持所有库也很困难!我们(浏览器工程师)可以很好地支持语言,但我们需要社区围绕优秀的图书馆支持.

WebAssembly会取代JavaScript吗?

在你的最后一句话:是的,WebAssembly应该能够做许多JavaScript可以做的事情,因为它可以访问相同的Web API.它的目标不是取代JavaScript:它是为了补充JavaScript,避免为了不自然地支持其他语言而向JavaScript添加功能,并为低级语言(如C++/Rust)提供可预测的近原生性能.

为那些以JavaScript为目标或将类似语言编译为JavaScript(例如TypeScript)的人们保持JavaScript演变,并将WebAssembly演变为JavaScript喜欢其他语言的酷酷搭档.

最终,WebAssembly将支持更多低级功能.其中一些对于采用JavaScript没有意义,但现有代码(例如大型C++代码库)假定这些功能存在正确性和/或性能.

人们应该停止编写JavaScript并切换到WebAssembly吗?不.我希望与JavaScript的紧密集成意味着WebAssembly模块将用于JavaScript(比如快速图像处理器),而现有的C++代码库将以网络为目标,但我不认为JavaScript会很快消失.

  • JavaScript是网络的通用语言.WebAssembly或JavaScript#1并不是真正的目标,至少不适合我.我们希望改进Web平台可以在不增加JavaScript负担的情况下完成的任务,并且不必因为JavaScript的设计而牺牲WebAssembly.由于速度,可移植性和安全性方面的原因,我们希望此平台在浏览器之外也很有用.这些指标的成功与IMO息息相关. (5认同)
  • @JF巴斯蒂安很好的答案!所有人都说WebAssembly不是JavaScript的替代品,但WebAssembly会取代JavaScript,为什么我这么认为,想象一下情况 - 我是C/C++/Java Developer,我需要从头开始编写一些Web应用程序 - 你怎么看待什么语言我会用吗?答案将是我最熟悉的语言,我将选择C/C++/Java而不是JavaScript.对于许多C/C++/Java开发人员而言,JavaScript是一场噩梦.这是一个原因. (2认同)