WebVM не имеет активных серверных компонентов. Всем пользователям доступен один и тот же образ диска через CDN, который они могут менять локально прямо в браузере.
WebVM управляется движком CheerpX — виртуальной машиной для x86-систем, которая написана на C++ и скомпилирована комбинацией JavaScript и WebAssembly через Cheerp-компилятор.
CheerpX разрабатывался около трёх лет и уже использовался в продакшене как часть CheerpX for Flash — энтерпрайз-решения для Adobe Flash.
На высоком уровне CheerpX состоит из:
- эффективного интерпретатора для x86-систем;
- JIT-компилятора для x86-Wasm;
- эмулятора системных вызовов для Linux;
- блочного файлового бэкенда на основе Ext2;
- приватного хранилища для модифицируемых блоков на основе IndexedDB.
CheerpX — это сложная система с большим количеством движущихся частей. При этом она корректно справляется с каверзными ситуациями — например, с самоизменяющимся кодом, мультипоточностью, мультипроцессорностью и межпроцессорной коммуникацией. Несмотря на такую сложность, CheerpX работает очень стабильно.
WebVM построен на трёх компонентах. Это:
- исполнительный движок CheerpX — позволяет запускать bash-процессы;
- UI-компонент Xterm.js — позволяет работать с такими приложениями, как Vim, а также отправляет входные данные в CheerpX;
- Debian-образ диска в формате ext2 с кучей других установленных пакетов.
Сейчас доступна демоверсия WebVM, которая может запускать программы для разных языков программирования, а также системные скрипты и установленные приложения:
Этот релиз — первая версия большой экосистемы, которую планируют создать разработчики. В ближайшее время они собираются добавить больше полезных и важных функций:
- HTTP-серверы и микросервисы;
- графические Linux-приложения;
- Windows-приложения и игры.
Запустить демо можно на любом десктопном или мобильном браузере на сайте WebVM, а подробнее изучить возможности виртуальной машины — на официальном блоге авторов.