C/C++コードをWebAssemblyに変換し、ブラウザーやNode.jsなどのWasmランタイムで実行できるコンパイラツールチェーン。
copy/v86
実機のOSを起動できる、実行時にマシンコードをWebAssemblyへ変換してブラウザー上で動作するx86 PCエミュレーター。
- スター
- 23,609
- フォーク
- 1,924
- 未解決の Issue
- 116
- 最終コミット
- 3 日前
これは何?
v86は、x86互換CPUと、VGAカード、PS/2キーボードおよびマウス、IDE・フロッピーコントローラー、PCIバス、NE2000・virtioネットワークデバイス、SoundBlaster 16サウンドカードなどのPCハードウェアをエミュレートします。ブラウザーのタブ内で実用的な性能を得るため、マシンコードを実行時にWebAssemblyモジュールへ変換します。
このプロジェクトは、古いOSやホビー向けOSをブラウザー上で動かすことを目的としています。動作が確認されているゲストOSとして、各種Linuxディストリビューション、FreeDOS、MS-DOS、Windows 95から2000、ReactOS、Haiku、FreeBSDがドキュメントに記載されています。Windows XP以降の一部バージョンも、特定の条件下でのみ動作します。ディスクイメージはURLから読み込めます。また、libv86.jsまたはv86 npm packageを使ってWebページに埋め込めます。
エミュレーターには、シリアルコンソールの操作、状態の保存・復元、複数インスタンス間のネットワーク接続を行うJavaScript APIがあります。RustとMakeを使ってローカルでビルドすることもでき、デバッグビルドと最適化ビルドを用意しています。
主な機能
- 01おおむねPentium 4相当までのx86 CPUをSSE3対応でエミュレート
- 02マシンコードを実行時にWebAssemblyへ変換
- 03SVGAおよびBochs VBE拡張に対応したVGAと、PS/2キーボード・マウスを搭載
- 04virtio、NE2000、ダイヤルアップモデムのネットワーク接続に対応
- 05エミュレーターの状態を保存・復元
- 06libv86.jsまたはnpm packageを使って埋め込み可能
ユースケース
- Webページ上でWindows 95やMS-DOSなどのレトロOSを動かす
- PCの仕組みやx86のブートプロセスを実演・解説する
- ブラウザーベースのツールに、サンドボックス化されたLinuxまたはDOS環境を埋め込む
- CPUエミュレーションや、WebAssemblyへの動的バイナリー変換を学ぶ
クイックスタート
- 1
npm パッケージをインストールする
npm install v86 - 2
README の API の例に従い、V86 コンストラクターを使ってエミュレーターを Web ページに埋め込む
使う前に知っておきたいこと
- 64 ビットのゲスト OS はサポートされていません。
- マルチコアエミュレーションはサポートされていません。
- ソースからビルドするには、Rust、clang、Java、Node.js などのツールが必要です。
- Plan 9 や OS/2 など、一部の OS は動作しません。
トピック
よくある質問
- v86 とは?
- 実機のOSを起動できる、実行時にマシンコードをWebAssemblyへ変換してブラウザー上で動作するx86 PCエミュレーター。 v86は、x86互換CPUと、VGAカード、PS/2キーボードおよびマウス、IDE・フロッピーコントローラー、PCIバス、NE2000・virtioネットワークデバイス、SoundBlaster 16サウンドカードなどのPCハードウェアをエミュレートします。ブラウザーのタブ内で実用的な性能を得るため、マシンコードを実行時にWebAssemblyモジュールへ変換します。
- v86 は無料で使えますか?ライセンスは?
- v86 は BSD-2-Clause ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- v86 は今もメンテナンスされていますか?
- 活発にメンテナンス中。v86 の最終コミットは 2026年10月18日 です。
- v86 は何に使えますか?
- Webページ上でWindows 95やMS-DOSなどのレトロOSを動かす PCの仕組みやx86のブートプロセスを実演・解説する ブラウザーベースのツールに、サンドボックス化されたLinuxまたはDOS環境を埋め込む CPUエミュレーションや、WebAssemblyへの動的バイナリー変換を学ぶ
- v86 のインストール方法は?
- npm パッケージをインストールする: npm install v86 README の API の例に従い、V86 コンストラクターを使ってエミュレーターを Web ページに埋め込む
- v86 はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/copy/v86
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
FFmpegをWebAssemblyとJavaScriptに移植し、ブラウザーで動画や音声の録画、変換、ストリーミングを可能にします。
WebAssemblyにコンパイルしてインタラクティブなクライアントサイドWebアプリを構築するRustフレームワーク。HTML向けのJSX風マクロを備えています。
アプリやAIエージェントのコードを、高速で軽量なサンドボックス環境で実行するWebAssemblyランタイムとCLI。
Craneliftコードジェネレーターを基盤とするスタンドアロンのWebAssemblyランタイム。WASIに対応し、複数言語から組み込めます。
型付きTypeScriptのサブセットをWebAssemblyモジュールに変換する、TypeScript風の言語とコンパイラ。