Набор инструментов компиляции, который преобразует код на C и C++ в WebAssembly для запуска в браузерах, Node.js и других Wasm-средах.
copy/v86
Эмулятор x86-ПК, работающий в браузере: он преобразует машинный код в WebAssembly на лету и загружает настоящие операционные системы.
- Звёзды
- 23,609
- Форки
- 1,924
- Открытые issues
- 116
- Последний коммит
- 3 дня назад
Что это?
v86 эмулирует совместимый с x86 процессор и набор компонентов ПК: видеокарту VGA, клавиатуру и мышь PS/2, контроллеры IDE и дискет, шину PCI, сетевые устройства NE2000 и virtio, а также звуковую карту SoundBlaster 16. Машинный код преобразуется в модули WebAssembly на лету, что обеспечивает приемлемую производительность в браузере.
Проект предназначен для запуска в браузере старых и любительских операционных систем. В документации перечислены работающие гостевые системы: различные дистрибутивы Linux, FreeDOS, MS-DOS, Windows 95–2000, ReactOS, Haiku и FreeBSD. Некоторые версии Windows XP и новее работают только при определённых условиях. Образы дисков загружаются по URL, а эмулятор можно встроить в веб-страницу с помощью libv86.js или npm-пакета v86.
У эмулятора есть JavaScript API для управления последовательной консолью, сохранения и восстановления состояния, а также настройки сетевого взаимодействия между экземплярами. Его также можно собрать локально с помощью Rust и Make — в отладочном или оптимизированном варианте.
Ключевые возможности
- 01Эмулирует процессор x86 примерно на уровне Pentium 4 с поддержкой SSE3
- 02Преобразует машинный код в WebAssembly на лету
- 03Поддерживает VGA с расширениями SVGA и Bochs VBE, а также клавиатуру и мышь PS/2
- 04Предлагает варианты сетевого подключения через virtio, NE2000 и модемное соединение
- 05Поддерживает сохранение и восстановление состояния эмулятора
- 06Позволяет встраивать эмулятор с помощью libv86.js или npm-пакета
Сценарии использования
- Запускать ретро-операционные системы, например Windows 95 или MS-DOS, на веб-странице
- Демонстрировать или изучать устройство ПК и процесс загрузки x86
- Встраивать изолированную среду Linux или DOS в браузерный инструмент
- Изучать эмуляцию процессоров и динамическую трансляцию двоичного кода в WebAssembly
Быстрый старт
- 1
Установите npm-пакет
npm install v86 - 2
Встройте эмулятор в веб-страницу с помощью конструктора V86, как показано в примере API в README
Что важно знать
- Гостевые операционные системы с 64-разрядной архитектурой не поддерживаются.
- Многоядерная эмуляция не поддерживается.
- Для сборки из исходного кода нужны Rust, clang, Java, Node.js и другие инструменты.
- Некоторые операционные системы, например Plan 9 и OS/2, не работают.
Темы
Частые вопросы
- Что такое v86?
- Эмулятор x86-ПК, работающий в браузере: он преобразует машинный код в WebAssembly на лету и загружает настоящие операционные системы. v86 эмулирует совместимый с x86 процессор и набор компонентов ПК: видеокарту VGA, клавиатуру и мышь PS/2, контроллеры IDE и дискет, шину PCI, сетевые устройства NE2000 и virtio, а также звуковую карту SoundBlaster 16. Машинный код преобразуется в модули WebAssembly на лету, что обеспечивает приемлемую производительность в браузере.
- v86 можно использовать бесплатно? Какая у него лицензия?
- v86 распространяется с открытым исходным кодом под лицензией BSD-2-Clause. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- v86 всё ещё поддерживается?
- Активно поддерживается. Последний коммит в v86 — 18 окт. 2026 г..
- Для чего можно использовать v86?
- Запускать ретро-операционные системы, например Windows 95 или MS-DOS, на веб-странице Демонстрировать или изучать устройство ПК и процесс загрузки x86 Встраивать изолированную среду Linux или DOS в браузерный инструмент Изучать эмуляцию процессоров и динамическую трансляцию двоичного кода в WebAssembly
- Как установить v86?
- Установите npm-пакет: npm install v86 Встройте эмулятор в веб-страницу с помощью конструктора V86, как показано в примере API в README
- Где скачать v86?
- Исходный код и инструкции по установке — на GitHub: https://github.com/copy/v86
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Порт FFmpeg на WebAssembly и JavaScript для записи, конвертации и потоковой передачи видео и аудио в браузере.
Фреймворк на Rust для создания интерактивных клиентских веб-приложений, компилируемых в WebAssembly, с макросом для HTML в стиле JSX.
Среда выполнения WebAssembly и CLI для запуска приложений и кода AI-агентов в быстрых, лёгких и изолированных средах.
Автономная среда выполнения WebAssembly на базе генератора кода Cranelift, с поддержкой WASI и встраиванием в приложения на разных языках.
Язык и компилятор в духе TypeScript, преобразующие типизированное подмножество TypeScript в модули WebAssembly.