可以将哪些语言编译为Web程序集(或wasm)?
我相信现在可以将C,C++和rust(实验)编译成Web程序集,使用llvm编译器后端,目前不支持Java,swift和C#等语言,但可能成为未来开发的候选者.
我不相信javascript可以编译为wasm. https://github.com/WebAssembly/design/issues/219
我最近一直在阅读关于asm.js和WebAssembly:
http://ejohn.org/blog/asmjs-javascript-compile-target/
https://brendaneich.com/2015/06/from-asm-js-to-webassembly/
我仍然对以下几点感到困惑:
我已经读过可以将Python 2.7代码转换为Web程序集,但是我找不到关于如何这样做的明确指南.
到目前为止,我已经使用Emscripten及其所有必要组件为Web程序集编译了一个C程序,因此我知道它正在运行(使用指南:http://webassembly.org/getting-started/developers-guide/)
为了在Ubuntu机器上执行此操作,我必须采取哪些步骤?我是否必须将python代码转换为LLVM bitcode然后使用Emscripten进行编译?如果是这样,我将如何实现这一目标?
我想开始使用blazor,尽管它仍处于alpha级别.据我了解,blazor使用WebAssembly在客户端编译C#.我有一个问题:这个系统的工作速度是否比使用JavaScript编译的React/Vue更快?浏览器每次加载页面时都需要下载Webassembly库吗?在互联网上没有比较流行的JS框架的性能,所以我想知道微软新框架的理论性能.先感谢您
我想知道我可以使用Java并将其编译为WASM(WebAssembly)吗?
列表https://web assembly.org/getting-started/developers-guide/没有 Java、Kotlin
GraalVM WASM 项目https://www.graalvm.org/reference-manual/wasm/用于在 JVM 中运行 wasm,而不是在 WebAssembly 中运行 Java 项目。
如何从WebAssembly函数返回JavaScript字符串?
以下模块可以用C(++)编写吗?
export function foo() {
return 'Hello World!';
}
Run Code Online (Sandbox Code Playgroud)
另外:我可以将它传递给JS引擎进行垃圾回收吗?
LLVM基础结构现在支持从LLVM IR到WebAssembly的编译(至少在实验上).Swift使用LLVM编译器基础结构,可以轻松编译为LLVM IR.所以我认为将一些Swift代码编译为LLVM IR然后编译为WebAssembly会很简单.
然而事实证明并非那么容易.看起来LLVM IR并不完全独立于平台?无论幕后的原因是什么,在将Swift编译为LLVM IR时,必须指定目标体系结构并且WebAssembly不可用.
那我有两个问题:
1)我是否正确当前(截至2017年10月)无法将Swift编译为WebAssembly?
2)如何使WebAssembly成为Swift到LLVM IR编译的受支持目标?
我希望能够从 JavaScript 调用 C# 代码。mono 项目曾经有一个 WASM SDK,您可以从他们的旧 Jenkins 服务器下载它,但不再公开。现有文档倾向于指向这些构建。Azure Devops 版本不包含此 SDK。我在他们的 Github 帐户上看到的一些消息表明他们现在专注于 WASM 的 .NET 6。我不想使用 Blazor 组件。.NET 6 中有没有办法在没有 Blazor UI 的情况下构建最小大小的 WASM 二进制文件?
假设我有一个简单的,独立的C++文件(math.cpp
),如下所示:
int add(int x, int y) {
return x + y;
}
Run Code Online (Sandbox Code Playgroud)
我如何将其编译为WebAssembly(math.wasm
)?
注意:我正在使用Clang工具链.
在BigQuery中可以运行python函数吗?
根据Felipe的这篇博客文章,似乎C可以编译为WebAssembly并在BQ中运行。
当然,可以使用cython或其他工具将Python编译为C或C ++(甚至可以将其编译为javascript)。因此,我的问题是,有没有人有在BigQuery中执行python函数的经验。如果是这样,您正在使用的流程是什么?
这里可能的选项是:
这是使用示例输入:
(1)来源
id product
1 box
2 bottle
Run Code Online (Sandbox Code Playgroud)
(2)要使用的Python函数
def double_id(row):
return row['id'] * 2
def product_code(row):
# B3
return row['product'].upper()[0] + str(len(row['product']))
Run Code Online (Sandbox Code Playgroud)
(3)预期产量
id product double_id product_code
1 box 2 B3
2 bottle 4 B6
Run Code Online (Sandbox Code Playgroud)
我不仅希望使用javascript(可能是最简单的方法)来重写上面的代码,而且我还在寻找一种更通用的解决方案,如果有的话,我可以在其中采用python(标准库)函数,并在BigQuery查询中使用它。
webassembly ×10
javascript ×2
llvm ×2
python ×2
.net ×1
.net-core ×1
asm.js ×1
asp.net ×1
blazor ×1
c# ×1
c++ ×1
emscripten ×1
java ×1
swift ×1
transpiler ×1