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

wasm玩的好吗?在浏览器中运行虚拟机!

时间:2023-03-13 13:56:48 科技观察

最近在Github上看到一个很有意思的项目:一个运行在浏览器环境下的虚拟机:WebVM。传统意义上的虚拟机(VM)是在物理硬件系统(位于外部或内部)上创建的虚拟环境,充当虚拟计算机系统,模拟自身的整套硬件,包括CPU、内存、网络接口和存储,它仍然需要在服务器上运行。WebVM与我们通常看到的传统WebShell完全不同。此WebVM没有服务器。它完全依赖于HTML5/WebAssembly在浏览器客户端运行一个完整的基于Debian的虚拟机。WebVM是基于CheerpX实现的,而CheerpX是基于Cheerp编译器实现的。堆栈的虚拟机。WebAssembly的意义在于成为编程语言的可移植编译目标,使得在Web上部署客户端和服务器应用程序成为可能。简单地说,它允许我们在web环境中运行服务器端代码。而Cheerp是一个可以生成WebAssembly的C/C++编译器。CheerpXCheerpX是一种x86-to-WebAssembly虚拟化技术,号称能够完全在客户端运行任意x86应用程序。CheerpX构建了一个基于WebAssembly的虚拟机来在浏览器中运行X86二进制文件。您可以使用它运行任何REPL环境。示例:https://repl.leaningtech.com/?python3WebVM和WebVM,一个完整的基于Debian的虚拟机,在浏览器中运行,由CheerpX提供支持,由以下部分组成:CheerpX作为JavaScriptAPI执行引擎,特别是,像cx.run(…)这样的代码用于启动bash进程。bash然后可以在用户键入命令时启动其他进程。Xterm.js作为主要的UI组件:Xterm.js负责解释vim等应用程序使用的终端转义,并将用户输入发送回CheerpX。通过应用程序的标准输入文件描述符向应用程序提供输入。ext2格式的Debianbuster磁盘映像,安装了一堆软件包。它们放置在CDN上,最大限度地提高了可扩展性。WebVM的使命和愿景是让程序运行:无需修改;没有重新编译;完整的客户端模式。您可以在WebVM上尝试以下操作:#运行一个简单的python程序python3examples/python3/fibonacci.py#使用gcc编译一个简单的C示例gcc-ohelloworldexamples/c/helloworld.c#运行!./helloworld#dump代码,验证这实际上是一个x86二进制文件objdump-d./helloworld#编辑helloworld.c文件,再试一次vimexamples/c/helloworld.c目录提供了各种语言的示例文件示例。虽然最后一个应用离生产还有很长的路要走,但确实让我大开眼界,看到了Web的无限可能。Web平台正在成为应用程序分发的主要平台。尤其是WebAssembly标准化之后,这种真实的趋势越来越明显。想象一下:一种新的编程语言,一旦开发出来,将得到所有现代浏览器的支持,能够继续满足大型网络应用的需求。性能要求。WebAssembly为浏览器世界带来了真正的创新,以及视角和责任的转变。