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

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

我不相信javascript可以编译成wasm。 https://github.com/WebAssembly/design/issues/219

最佳答案

WebAssembly支持不断发展。目前,以下语言支持它:

  • C / C ++-通过EmScripten或其他基于LLVM的最小工具链提供了很好的支持(可用于生产环境)
  • Rust-WebAssembly是受官方支持的目标,周围有非常活跃的社区。
  • Go-现在已将WebAssembly作为正式但实验性的目标来支持
  • C#-通过Blazor具有实验支持,但是当前需要将.NET运行时嵌入Wasm。最近发布了预览版,Blazor被Microsoft正式用作实验技术。
  • D-D的“ betterC”子集可以通过LDC(LLVM编译器)编译为WebAssembly。
  • TypeScript-通过AssemblyScript,实验性强,但势头强劲。
  • Java-通过TeaVM或Bytecoder
  • Haxe-刚刚宣布支持
  • Kotlin-Kotlin / Native 0.4通过WebAssembly和TeaVM获得了实验支持
  • Python-Pyodide是WebAssembly的Python移植,其中包括科学Python堆栈的核心软件包(Numpy,Pandas,matplotlib)。
  • PHP-实验性的,但具有有效的原型
  • Perl-WebPerl是Perl二进制文件到WebAssembly的端口,允许您在Web上运行Perl脚本。
  • Scala-使用Emscripten编译器
  • Ruby-通过run.rb项目
  • Swift-使用SwiftWasm,目前正在开发中

也有商业解决方案:

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

关于JavaScript,由于WebAssembly是一种静态类型的汇编语言,因此不太可能获得支持。

还有多种支持WebAssembly的模糊/业余语言。可以在更详尽的Awesome Web汇编语言列表中找到更多详细信息。