热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

可以将哪些语言编译为Web程序集(或wasm)?

如何解决《可以将哪些语言编译为Web程序集(或wasm)?》经验,为你挑选了4个好方法。

可以将哪些语言编译为Web程序集(或wasm)?

我相信现在可以将C,C++和rust(实验)编译成Web程序集,使用llvm编译器后端,目前不支持Java,swift和C#等语言,但可能成为未来开发的候选者.

我不相信Javascript可以编译为wasm. https://github.com/WebAssembly/design/issues/219



1> ColinE..:

WebAssembly支持不断发展.现在它受以下语言支持:

C/C++ - 通过EmScripten或其他基于LLVM的最小工具链提供非常好的(生产就绪)支持

Rust - WebAssembly是官方支持的目标,其周围有一个高度活跃的社区.

Go - 现在支持WebAssembly作为官方但实验性的目标

C# - 通过Blazor获得实验支持,但是这需要将.NET运行时嵌入到Wasm中.Blazor被微软正式采用为实验技术,最近发布了预览版.

TypeScript - 通过AssemblyScript,高度实验性,但获得动力.

Java - 通过TeaVM或Bytecoder

Haxe - 刚刚宣布支持

Kotlin - Kotlin/Native 0.4 获得了WebAssembly和TeaVM的实验支持

Python - Pyodide是WebAssembly的Python端口,包括科学Python堆栈的核心包(Numpy,Pandas,matplotlib).

PHP - 实验,但有一个工作原型

Perl - WebPerl是WebAssembly的Perl二进制文件的一个端口,允许您在Web上运行Perl脚本.

Scala - 使用Emscripten编译器

Ruby - 通过run.rb项目

还有商业解决方案:

RemObjects - 已宣布支持C#,Java,Swift和Oxygene

关于Javascript,它不太可能获得支持,因为WebAssembly是一种静态类型的汇编语言.

还有各种更加模糊/爱好的语言支持WebAssembly.更详细的可以在更详尽的Awesome WebAssembly语言列表中找到.



2> nzeemin..:

请参阅https://github.com/mbasso/awesome-wasm#compilers - 目前它只是C/C++,其他是实验性的,但"实验"部分的数量增长了.

目前,WebAssembly仅支持扁平线性内存.这适用于C/C++/Rust和许多其他语言,但大多数流行的现代语言需要垃圾收集器才能运行.这是WebAssembly的"后MVP功能"(参见https://github.com/WebAssembly/design/issues/1079).目前唯一的选择是使用一些自定义代码在wasm中实现垃圾收集器.


值得补充的是,asm.js可以很容易地编译为wasm和asm.js _is_Javascript.也就是说,编译Javascript会更加困难,因为它通常缺少尽可能多的即时可用的上下文信息.

3> Mirko Sertic..:

TeaVM可用于将JVM字节码转换为WebAssembly.您可以访问https://github.com/konsoletyper/teavm查看项目主页.

TeaVM的核心可以将JVM字节码转换为JS和WebAssembly.WebAssembly支持处于早期阶段,但有一些演示可用于比较简单的JBox2D仿真与GWT,TeaVM(JS输出)和TeaVM(WASM输出)的性能,这些都非常令人印象深刻.

请注意,WebAssembly目前无法直接访问DOM或其​​他Javascript API.同样在当前的MVP中,不支持opaque数据类型甚至GC.但是,可以从JS到WASM进行向上/向下调用,然后使用一些JS技巧再次返回,如上述演示中所示.



4> jasonleonhar..:
这个回购

包含当前可在WebAssembly(wasm)中编译或在其VM中拥有其VM的语言列表

特征:

使用表情符号显示每种语言当前的成熟程度

提供每种语言项目名称和选项的链接


推荐阅读
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • position属性absolute与relative的区别和用法详解
    本文详细解读了CSS中的position属性absolute和relative的区别和用法。通过解释绝对定位和相对定位的含义,以及配合TOP、RIGHT、BOTTOM、LEFT进行定位的方式,说明了它们的特性和能够实现的效果。同时指出了在网页居中时使用Absolute可能会出错的原因,即以浏览器左上角为原始点进行定位,不会随着分辨率的变化而变化位置。最后总结了一些使用这两个属性的技巧。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
author-avatar
手机用户2602916737
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有