Вышел WebVM — виртуальная машина на WebAssembly
2026-02-21 13:09 Diff

Любитель научной фантастики и технологического прогресса. Хорошо сочетает в себе заумного технаря и утончённого гуманитария. Пишет про IT и радуется этому.

WebVM не имеет активных серверных компонентов. Всем пользователям доступен один и тот же образ диска через CDN, который они могут менять локально прямо в браузере.

WebVM в работе. Источник: блог автора

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, которая может запускать программы для разных языков программирования, а также системные скрипты и установленные приложения:

# Запускайте небольшие программы на Python python3 examples/python3/fibonacci.py # Компилируйте C-код через gcc gcc -o helloworld examples/c/helloworld.c # Запускайте его! ./helloworld # Делайте dump-кода и проверяйте, что это по-настоящему x86-бинарники objdump -d ./helloworld # Изменяйте файлы через Vim vim examples/c/helloworld.c

Этот релиз — первая версия большой экосистемы, которую планируют создать разработчики. В ближайшее время они собираются добавить больше полезных и важных функций:

  • HTTP-серверы и микросервисы;
  • графические Linux-приложения;
  • Windows-приложения и игры.

Запустить демо можно на любом десктопном или мобильном браузере на сайте WebVM, а подробнее изучить возможности виртуальной машины — на официальном блоге авторов.


Бесплатный курс по Python ➞
Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу