Код
#новости

Вышел WebVM — виртуальная машина на WebAssembly

Она работает без сервера и использует Linux-пространство, чтобы запускать немодифицированные бинарные Debian-файлы в любом браузере.

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, а подробнее изучить возможности виртуальной машины — на официальном блоге авторов.


Проверьте свой английский. Бесплатно ➞
Нескучные задания: small talk, поиск выдуманных слов — и не только. Подробный фидбэк от преподавателя + персональный план по повышению уровня.
Пройти тест
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована