前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Wasm 玩出花?在浏览器中运行虚拟机!

Wasm 玩出花?在浏览器中运行虚拟机!

作者头像
ConardLi
发布2022-02-18 13:35:34
1.6K0
发布2022-02-18 13:35:34
举报
文章被收录于专栏:code秘密花园code秘密花园

大家好,我是 ConardLi

最近在 Github 上看到了一个挺有意思的项目:运行在浏览器环境中的虚拟机:WebVM

传统意义上的虚拟机(VM)是一种创建于物理硬件系统(位于外部或内部)、充当虚拟计算机系统的虚拟环境,它模拟出了自己的整套硬件,包括 CPU、内存、网络接口和存储器,它依然需要运行在一个服务器上。

WebVM 和我们平时看到的传统的 WebShell 是完全不一样的,这个 WebVM 是没有服务器的,它单纯依赖于 HTML5/WebAssembly 就可以独自在浏览器客户端中运行一个基于 Debian 的完整虚拟机。

WebVM 是基于 CheerpX 实现的,CheerpX 是基于 Cheerp 编译器实现的... 别着急,我们先从 Cheerp 开始看, ~

Cheerp

WebAssembly 我们都知道,是一种二进制指令格式,简称为 Wsam,它可以运行在适用于堆栈的虚拟机上。WebAssembly 存在的意义就是成为编程语言的可移植编译目标,让在 Web 上部署客户端和服务端应用成为可能。简单来说,它可以让我们在 Web 环境中运行服务端代码。

Cheerp 就是一个可以生成 WebAssemblyC/C++ 编译器。

CheerpX

CheerpX 是一种 x86WebAssembly 的虚拟化技术,声称可以完全在客户端运行任意的 x86 应用程序。

CheerpX 构建了一个基于 WebAssembly 的虚拟机来在浏览器中运行 X86 二进制文件。您可以使用它运行任何 REPL 环境。示例:https://repl.leaningtech.com/?python3

WebVM

WebVM,是一个在浏览器中运行的基于 Debian 的完整虚拟机,由 CheerpX 提供支持,由以下几部分组成:

  • CheerpX 作为 JavaScript API 执行引擎,特别是 cx.run(…) 这样的代码,用于启动 bash 进程。然后 bash 可以在用户键入命令时启动其他进程。
  • Xterm.js 作为主要的 UI 组件:Xterm.js 负责解释 vim 等应用程序使用的终端转义,并将用户输入发送回 CheerpX。输入通过应用程序的标准输入文件描述符提供给应用程序。
  • 一个 Debian buster 磁盘映像,采用 ext2 格式并安装了一堆软件包。它们被放在 CDN 上,这可以最大限度地提高可扩展性。

WebVM 的使命和愿景是让程序运行:

  • 无需修改;
  • 无需重新编译;
  • 完全客户端模式。

你可以在 WebVM 上尝试下面这些操作:

代码语言:javascript
复制
# 运行一个简单的 python 程序
python3 examples/python3/fibonacci.py
代码语言:javascript
复制
# 使用 gcc 编译一个简单的 C 示例
gcc -o helloworld examples/c/helloworld.c
代码语言:javascript
复制
# 运行!
./helloworld
代码语言:javascript
复制
# 转储代码,验证这实际上是一个 x86 二进制
objdump -d ./helloworld
代码语言:javascript
复制
# 编辑 helloworld.c 文件,然后再试一次
vim examples/c/helloworld.c

目录中提供了各种语言的示例文件 examples

最后

这个应用虽然离生产还有很大一段距离,但它确实让我看到了 Web 的无限可能。

Web 平台正在成为应用程序分发的主导平台。特别是自从 WebAssembly 标准化以来,这样的确实趋势已经越来越明显了,想象一下:一种新的编程语言一旦被开发出来,就会被所有现代浏览器支持,这可以持续满足大型 Web 应用程序的性能需求。

WebAssembly 为浏览器世界带来了真正的创新,以及视角和责任的转变。

对此,你怎么看?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-02-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 code秘密花园 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Cheerp
  • CheerpX
  • WebVM
  • 最后
相关产品与服务
内容分发网络 CDN
内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档