Cheep C++ 到 Webassembly 编译器现已开源。
CheepC++到Webassembly编译器现已开源。Cheerp是一个用于Web应用程序的C/C++编译器,可让你将几乎所有C/C++代码编译为WebAssembly和JavaScript。其最新的3.0版本已经开源。Cheerp是一个用于Web应用程序的C/C++编译器,可让您将几乎所有C/C++代码编译为WebAssembly和JavaScript。其最新的3.0版本已经开源。Cheerp主要用于将现有的C/C++库和应用程序移植到HTML5,但也可用于从头开始编写高性能Web应用程序和WebAssembly组件。使用Cheerp,C/C++代码被编译成JavaScript/WebAssembly,并通过公开正确的JavaScript接口进行优化,可以轻松集成到Web应用程序中。Cheerp是Webassembly编译工具系列的一部分,与CheerpJ、CheerpXforFlash和WebVM并列。可用于以下场景:1.将遗留Java应用程序和JavaApplets转换为HTML5,只需很少的努力或无需任何努力,以延长它们的生命,直到弃用,或直到开发出替代的本机HTML应用程序。2.将现有的Java客户端迁移到基于浏览器的Web应用程序,通常通过使用CheerpJ将业务逻辑从Java转换为WebAssembly/JavaScript,并用原生HTML重写UI。3.使用(转换后的)Java库作为本机Web应用程序的一部分。在幕后,CheerpJ需要WebAssembly中的完整JavaSE运行时和存在于浏览器中的JavaScript,以及支持从Java访问和操作DOM的JavaScript/DOM互操作性API。相比之下,C++的Cheerp不需要这样的运行时,而是直接使用LLVM字节码格式作为目标文件和库的中间表示。它的特性如下:解析代码,发出最终的警告和错误,然后生成对输入程序进行编码的等效IR(=内部表示)。IR通过一系列转换优化为更紧凑和更高性能的IR。优化后的IR最终由代码生成为JavaScript和WebAssembly函数和变量的组合。或者简单地说:C++代码库->Cheerp(使用LLVM的优化)->JS+Wasm一旦生成了.js和.wasm文件,接下来就是为这两个静态文件提供服务,将它们嵌入到相关的HTML页面中,在库的API之上构建功能,并测试是否一切正常。主文件到被调用的仍然是一个.js文件,但是一个.wasm文件也被加载并从.js文件运行。虽然CheerpJ不是开源产品,但Cheerp现在是。在这一点上,重要的是要注意,从languageX到WebAssembly的工具现在可以证明更有用,因为WebAssembly最近摆脱了浏览器的限制,现在可以用于运行微服务和无服务函数,甚至可以运行Wasm二进制文件在命令行上,这样甚至可以开发跨平台的CLI应用程序。