WebAssembly,JavaScript和其他语言

PatrykGołębiowski:

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

WebAssembly高层目标

  1. 定义一种可移植的,节省大小和加载时间的二进制格式作为编译目标,通过利用移动和IoT等多种平台上可用的通用硬件功能,可以将其编译为以本机速度执行

阅读更多...

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

一旦完成,是否可以将任何编程语言编译到WebAssembly?使其成为C#,Java,Python,JavaScript,Ruby。如果是这样的话-Web开发人员可以选择任何语言来完成他现在使用JavaScript可以实现的功能吗?

JF Bastien:

目标确实是支持任何一种语言,但是要支持任何一种语言很难不拖延地完成。

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紧密集成,这意味着将可以从JavaScript(例如,快速图像处理器)中使用WebAssembly模块,而现有的C ++代码库将以Web为目标,但是我认为JavaScript不会很快消失

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

C语言指针和其他语言

JS和其他语言的简短比较

通过javascript或任何其他语言访问相机和照片信息?

HTTP和其他基于Web的交互的语言?

Ruby和指针与其他语言相比?

最佳(scala和其他针对Java vm的语言)优化

Javascript 文件与 C/Java 等其他语言相比

React / JavaScript阻止onKeyDown键入(其他语言)

“?” Dart或其他语言的符号

访问其他语言的网站

显示其他语言问题

除JavaScript外,其他任何语言在花括号开始位置(同一行和下一行)之间是否有区别?

他们用什么语言构建其他语言?

如何在Python和其他语言之间共享内存映射文件?

除英语以外的其他语言的尝试的局限性和替代方法?

Haskell中的现有类型和其他语言中的泛型

是否可以为Xtend和其他Xtext生成的语言设置自动激活触发器?

如何使用bash或其他语言/框架进行整数和浮点计算?

与其他语言相比,Java中的具体类型和抽象类型

将Java字节码翻译成其他表示形式和编程语言

Lua-xpcall和其他语言中的Try ... Catch一样慢吗?

文本索引权重和其他选项不适用于语言

如何使Firefox和Evolution中其他已安装语言的拼写检查有效?

是否有类似于 Vector 和其他语言的 Haskell Repa 切片函数的用法?

使用骨架和其他服务器脚本语言将数据存储在mysql中

将类导入Isabelle中的语言环境和其他相关问题

Haskell和其他编程语言中的I_AMAX-RANGE

如何在flutter中处理不同类型的字符(其他语言的字符和特殊字符)?

如何为其他语言范围复制Magento CMS页面和内容块