14个基于WebAssembly的热门语言项目

从快速的web应用程序到浏览器中的Python数据科学,这些编程语言和编译器项目为WebAssembly的承诺提供了不同的扭曲。

  • 在Facebook上分享
  • 在推特上分享
  • 在LinkedIn上分享
  • 在Reddit上分享
  • 通过电子邮件分享
  • 印刷资源

今天的web应用程序远不及本地桌面应用程序的速度和响应速度,但如果它们能够做到呢?这就是承诺WebAssembly

WebAssembly是一种低级的、类似于程序集的语言,具有紧凑的二进制格式,在web浏览器中以接近本机的性能运行。同时,WebAssembly为C/ c++、c#、Rust、Go、Kotlin、Swift和其他编程语言提供了一个可移植的编译目标。

WebAssembly被誉为一种既可以提高web应用程序性能,又可以在浏览器应用程序开发中使用JavaScript以外的语言的方法,受到谷歌、Mozilla、苹果和微软的支持,这些公司都在其浏览器引擎中支持该技术。

WebAssembly引领了一系列新技术的发展,包括利用其强大功能的全新编程语言。以下是14个在WebAssembly上下了大赌注的语言项目。

Binaryen

Binaryen是WebAssembly的编译器工具链基础架构库。Binaryen是用c++编写的,目的是让编译到WebAssembly变得简单、有效和快速。它在一个头文件中有一个C API,可以从JavaScript中使用。输入以类似webassembly的形式被接受,但对于喜欢它的编译器来说,通用控制图也被接受。

Binaryen的内部IR(中间表示)使用紧凑的数据结构,并利用所有CPU内核进行并行代码生成和优化。IR也很容易编译成WebAssembly,因为它本质上是WebAssembly的一个子集。特定于webassembly的优化提高了代码的大小和速度,使得Binaryen本身作为编译器的后端非常有用。

你可以下载BinaryenGitHub

Blazor WebAssembly

Blazor WebAssembly是一个使用。net构建交互式、客户端、单页web应用程序的框架,并在基于WebAssembly的。net运行时上托管这些应用程序在现代浏览器(包括移动浏览器)中。不需要插件或将代码重新编译为其他语言。运行时允许. net代码通过WebAssembly的JavaScript api访问浏览器功能。

当一个Blazor WebAssembly应用程序在浏览器中运行时,c#代码文件和Razor文件被编译成。net程序集,并与。net运行时一起下载到浏览器中。而且,由于. net代码是在浏览器的JavaScript沙箱中的WebAssembly上执行的,因此可以防止客户端机器上的恶意操作。Blazor WebAssembly应用程序可以独立部署,也可以与服务器端支持一起部署。

关于开始使用Blazor的说明可以在dotnet.microsoft.com

Cheerp

学习技术的Cheerp它的定位是企业级的C/ c++ web编译器,将C和c++(直至c++ 17)编译成WebAssembly、JavaScript或两者的组合。啦啦队是融入LLVM /叮当声的基础设施的自定义优化,旨在提高性能并最小化编译输出的大小。主要用于将现有的C/ c++库和应用程序移植到HTML5, Cheerp也可以用于编写web应用程序和WebAssembly组件。Cheerp是在开源和商业许可下提供的。

您可以从leaningtech.com

CheerpJ

这个基于llvm的编译器被称为“web上的Java编译器”,它将任何Java客户端应用程序转换为WebAssembly、JavaScript和HTML,使Java客户端应用程序能够在现代浏览器中运行。CheerpJ利用了三个组件:AOT(提前)编译器,WebAssembly和JavaScript中的运行时,以及JavaScript DOM互操作性api,从Java访问DOM。使用CheerpJ, JAR档案可以使用AOT编译器编译。CheerpJ不需要任何服务器端支持。

和Cheerp一样,CheerpJ也来自lean Technologies。你可以从leaningtech.com

Emscripten

这个开源编译器工具链将C和c++,或任何其他使用LLVM编译器技术的语言编译成WebAssembly,以便在web、Node.js或Wasm运行时上部署Wasmer.(Emscripten编译器emcc还会发出JavaScript,为编译后的代码提供API支持。Emscripten已被用于将一系列真实世界的代码库转换为WebAssembly,包括商业代码库,如虚幻引擎4游戏引擎和Unity 3D平台。Emscripten支持C和c++标准库、c++异常和OpenGL/WebGL图形命令。的Emscripten SDK用于安装Emscripten工具链(emcc、LLVM等),适用于Linux、MacOS和Windows。

Emscripten可以从emscripten.org

Extism

仍处于早期发展阶段,Extism是一个插件系统,用于在应用程序中运行WebAssembly扩展,其目标是使所有软件可编程。Extism的常见用例包括向命令行工具添加功能、在数据库中创建用户定义函数、进行无代码应用程序扩展以及为内容管理系统创建扩展。通过Extism,开发人员可以为包括Go、Ruby、Python、Rust和c++在内的语言使用惯用的宿主sdk。Extism的开发人员说,它现在可以使用了,但仍有一些粗糙的地方。

安装Extism的说明可以在extism.org

森林

Forest是一种函数式编程语言,可编译为WebAssembly。开发人员Nick Johnstone说,Forest的目标是提供一种语言,使人们更容易创建复杂的、交互式的、功能强大的web应用程序,但没有那种方法的传统开销。

Forest目前被描述为“预alpha、实验性、概念性研究软件”,它的特点是静态类型、模式匹配、不可变数据结构、多种语法和自动代码格式化。开发中的第一个语法受到Elm和Haskell的启发。

Forest语言的设计原则包括易于协作、尽可能轻松的测试以及在结构和语义上达成一致,同时在语法上达成一致。Johnstone致力于让《Forest》能够快速创造出复杂的游戏,从而让普通的网页应用能够“快速运行”。

您可以从GitHub

粮食

该项目网站称,Grain语言为21世纪带来了学术语言和函数式语言的特性。编译到WebAssembly通过Binaryen在工具链和编译器基础设施上,Grain可以运行在浏览器上、服务器上,甚至可能运行在任何地方。没有运行时类型错误,也不需要类型注释。Grain工具链具有CLI、编译器、运行时和标准库,以单个二进制文件的形式发布。开发人员将需要Node.js和Yarn从源代码构建Grain, Linux、MacOS和Windows都有二进制文件可用。

你可以在这里找到如何开始使用Grain的说明grain-lang.org

JWebAssembly

JWebAssembly,来自I-Net Software,是一个Java字节码到WebAssembly编译器,它接受Java类文件作为输入,并生成WebAssembly二进制格式(。Wasm文件)或文本格式(。Wat文件)作为输出。目标是使用WebAssembly在浏览器中本地运行。理论上,JWebAssembly可以编译任何编译成Java字节码的语言,如Clojure、Groovy、JRuby、Kotlin和Scala,这些语言都在等待测试。

JWebAssembly应该很快就可以投入生产了。JWebAssembly 1.0发行版所需的所有里程碑都已经实现,并且已经发布了一个候选发行版。1.0版路线图需要Java字节码解析器、测试框架和Gradle插件等功能。

您可以从GitHub

Pyodide

Pyodide项目,最近从成为Mozilla的一个独立项目,将Python和Python科学堆栈编译到WebAssembly,将Python 3.8运行时、NumPy、SciPy、Matplotlib、Scikit-learn和数十个其他包带到浏览器。pyoide提供了JavaScript和Python之间对象的透明转换,并允许Python访问web api。Pyodide开始于2018年,是在浏览器中进行数据科学的碘项目的一部分。吡啶可以从一个REPL在浏览器中。

你可以在这里找到下载和使用Pyodide的说明pyodide.org

自旋

Spin,来自云计算软件提供商Fermyon技术,是一个WebAssembly框架,用于微服务、web应用程序和其他基于服务器的应用程序。开发人员可以使用Spin为云编写WebAssembly。为编写WebAssembly模块提供了接口,用于响应HTTP请求等功能。通过Spin,开发人员可以使用Rust、Go、Python、Ruby、AssemblyScript、Grain、C/ c++等语言。Spin支持WAGI (WebAssembly Gateway Interface)模块和bind打包系统。现在处于早期预览阶段,Spin被认为是实验性代码,在第一个稳定发布之前预计会有突破性的更改。

Spin托管在GitHub

TeaVM

TeaVM是Java字节码的预先编译器,它会生成WebAssembly和JavaScript在浏览器中运行。但是,请注意WebAssembly支持目前还处于试验阶段。像近亲GWT(谷歌Web Toolkit)一样,TeaVM允许开发人员用Java编写应用程序并将其部署为JavaScript。与GWT不同,TeaVM使用已编译的类文件,而不是源代码。此外,TeaVM依赖于现有的编译器,如javac、kotlinc和scalac,因此可以编译Kotlin和Scala代码以及Java。TeaVM主要是一个web开发工具;它不是为获取Java或Kotlin中的大型代码库并生成JavaScript而设计的。TeaVM的子项目flavor作为编写单页web应用程序的框架。

您可以在上找到下载和使用TeaVM的说明GitHub

Uno平台

Xamarin手机应用平台的另一种选择,Uno平台是一个UI平台,供. net团队使用c#和XAML为WebAssembly、web、Windows、MacOS、Linux、iOS和Android构建单代码库应用程序。Uno利用了Mono-WASM运行时net 5在所有主要的web浏览器中运行c#代码,并作为WinUI和UWP(通用Windows平台)应用程序在WebAssembly上本机运行的桥梁。对于使用Uno构建web应用程序,开发者可以使用Visual Studio或Visual Studio Code。

关于如何开始的指导可以在Uno平台网站

Wasmcloud

从Cosmonic,Wasmcloud是一个应用程序运行时,利用WebAssembly开发可组合的、可移植的应用程序,插入多云、边缘和浏览器环境。该技术被宣传为提供近乎原生的性能,通过WebAssembly沙盒和将业务逻辑与特定底层功能分离的角色模型提供安全性。开发人员可以用自己选择的语言编写一次微服务,然后将它们部署到任何地方。目前支持的语言包括Rust、TinyGo和AssemblyScript。Wasmcloud已被接受为云原生计算基金会(CNCF)沙盒项目。

wasmCloud的安装说明可以在wasmcloud.dev

版权所有©2022 金宝搏体育下载IDG通信有限公司

如何选择低代码开发平台