当前位置: 首页 > 科技观察

10个基于WebAssembly的热门语言项目_0

时间:2023-03-17 22:03:35 科技观察

【.com快速翻译】今天的Web应用程序的响应速度远不及本地桌面应用程序,但这是WebAssembly的承诺。WebAssembly是一种低级、类似汇编的语言,具有紧凑的二进制格式,可以在Web浏览器中以接近本机的性能运行。同时,WebAssembly为C/C++、C#、Rust、Go、Kotlin和Swift等编程语言提供了可移植的编译目标。作为提高Web应用程序性能并允许在浏览器应用程序开发中使用JavaScript以外的语言的一种方式,WebAssembly得到了Google、Mozilla、Apple和Microsoft的支持,它们都在其浏览器引擎中使用它。技术。WebAssembly开发了一系列新技术,包括利用其强大功能的全新编程语言。这里有10个构建在WebAssembly之上的语言项目。BinaryenBinaryen是WebAssembly的编译器工具链基础设施库。Binaryen是用C++编写的,旨在使汇编语言易于编写、高效和快速。它在头文件中有一个CAPI,可以从JavaScript中使用。输入可以采用类似于WebAssembly的形式,但对于喜欢其编译器的开发人员来说,通用控制图也是可以接受的。Binaryen的内部IR(中间表示)使用紧凑的数据结构,并利用所有CPU内核进行并行编码和优化。IR也可以很容易地编译成WebAssembly,因为它本质上是WebAssembly的一个子集。WebAssembly特定的优化增加了代码大小和效率,使Binaryen本身可用作编译器后端。BlazorWebAssemblyBlazorWebAssembly是一个框架,用于使用.NET构建交互式、客户端、单页Web应用程序,并在基于WebAssembly的.NET运行时在浏览器(包括移动浏览器)中托管这些应用程序。不需要插件或将代码重新编译成其他语言。运行时允许.NET代码通过WebAssembly的JavaScriptAPI访问浏览器功能。当BlazorWebAssembly应用程序在浏览器中运行时,C#代码文件和Razor文件被编译成.NET程序集,这些程序集与.NET运行时一起下载到浏览器。由于.NET代码是在浏览器的JavaScript沙箱中的WebAssembly之上执行的,因此可以保护它免受客户端计算机上的恶意操作。BlazorWebAssembly应用程序可以独立部署或在服务器端支持下部署。CheepLeaningTechnologies的Cheerp定位为Web的企业级C/C++编译器,将C和C++编译为C++17,并将其集成到WebAssembly、JavaScript或两者的组合中。Cheerp通过自定义优化集成到LLVM/Clang基础架构中,以提高性能并最小化编译输出的大小。Cheerp主要用于将现有的C/C++库和应用程序移植到HTML5,Cheerp也可用于编写Web应用程序和WebSasMeLabess组件。Cheerp在开源和商业许可下可用。CheerpJCheerpJ基于被称为“JavaCompilerfortheWeb”的LLVM编译器,它将任何Java客户端应用程序转换为WebAssembly、JavaScript和HTML,使Java客户端应用程序能够在浏览器运行中运行。CheerpJ使用三个组件从Java访问DOM:AOT编译器、WebAssembly和JavaScript运行时以及JavaScriptDOM互操作性API。使用CheerpJ,可以使用AOT编译器编译JAR档案。CheerpJ不需要任何服务器端支持。Emscripten是一个开源编译器工具链,使用LLVM编译器技术将C和C++或任何其他语言编译成WebBaseMalk,以便部署在Web、Node.JS或WASM运行时上。Emscripten编译器emcc也可以具备JavaScript的功能,为编译后的代码提供API支持。Emscripten已用于将一系列代码库转换为WebAssembly,包括商业代码库,例如UnrealEngine4游戏引擎和Unity3D平台。Emscripten支持C和C++标准库、C++异常和OpenGL/WebGL图形命令。用于安装Emscripten工具链(emcc、LLVM等)的EmscriptenSDK在Linux、MacOS和Windows上可用。ForestForest是一种可编译为WebAssembly的函数式编程语言。开发人员NickJohnstone表示,Forest背后的目标是提供一种语言,使创建复杂、交互式和功能性的Web应用程序变得更加容易。目前被描述为“pre-alpha、实验性、概念研究软件”的Forest具有静态类型、模式匹配、不可变数据结构、多种语法和自动代码格式化功能。开发中的第一个语法受到Elm和Haskell的启发。Forest语言的设计原则包括易于协作、测试尽可能简单、在结构和语义上达成一致,同时在句法上达成一致。Johnstone努力使Forest具有足够的响应能力来构建复杂的游戏并使普通的Web应用程序“非常快”。根据Binaryen项目网站,Grain语言为21世纪带来了学术语言和功能语言的特点。通过Binaryen工具链和编译器基础架构编译为WebAssembly,Grain可以在浏览器、服务器甚至任何地方运行。没有运行时类型错误,也不需要类型注释。Grain工具链具有作为单个二进制文件交付的CLI、编译器、运行时和标准库。开发人员只需要从Node.js和Yarn的源代码构建Grains,二进制文件可用于Linux、MacOS和Windows。JWebAssemblyJWebAssembly是一个Java字节码到WebAssembly的编译器,它将Java类文件作为输入并生成WebAssembly二进制格式(.wasm文件)或文本格式(.wat文件)作为输出。目标是使用WebAssembly在浏览器中本地运行。从理论上讲,JWebAssembly可以编译任何可以编译为Java字节码的语言,例如Clojure、Groovy、JRuby、Kotlin和Scala,以供测试。JWebAssembly尚未准备好用于生产。尽管JWebAssembly1.0版所需的一切都已实现,但测试仍有待完成。1.0版路线图需要Java字节码解析器、测试框架和Gradle插件等功能。I-NetSoftware预计将在今年发布JWebAssembly1.0。Pyodide项目最近从Mozilla转变为一个独立的项目,将Python和PythonScientific堆栈编译为WebAssembly、Python3.8运行时、NumPy、SciPy、Matplotlib、Scikit-learn以及数十个其他包架构到浏览器中。Pyodide提供JavaScript和Python之间对象的透明转换,并允许Python访问WebAPI。Pyodide于2018年作为浏览器数据科学研究Iodide项目的一部分启动。可以从浏览器中的REPL试用Pyodide。虚拟机(TeaVM)TeaVM是Java字节码的早期编译器,可以让WebAssembly和JavaScript在浏览器中运行。但是,请注意WebAssembly支持目前处于试验阶段。与GWT(GoogleWebToolkit)一样,TeaVM允许开发人员使用Java编写应用程序并将它们部署为JavaScript。与GWT不同,TeaVM使用编译的类文件,而不是源代码。另外,TeaVM依赖于javac、kotlinc、scalac等已有的编译器,因此可以像Java一样编译Kotlin和Scala代码。TeaVM主要是一个网络开发工具;它不是为了使用Java或Kotlin中的大型代码库并生成JavaScript而设计的。TeaVM子项目Flavor可用作编写单页Web应用程序的框架。【翻译稿件,合作网站转载请注明原译者和出处.com】