Una cadena de herramientas de compilación que convierte código C y C++ en WebAssembly para ejecutarlo en navegadores, Node.js y otros runtimes de Wasm.
copy/v86
Un emulador de PC x86 que se ejecuta en el navegador y traduce código máquina a WebAssembly en tiempo de ejecución para iniciar sistemas operativos reales.
- Estrellas
- 23,609
- Forks
- 1,924
- Issues abiertos
- 116
- Último commit
- hace 3 días
¿Qué es?
v86 emula una CPU compatible con x86 junto con varios componentes de hardware de PC, como una tarjeta VGA, teclado y mouse PS/2, controladores IDE y de disquete, un bus PCI, dispositivos de red NE2000 y virtio, y una tarjeta de sonido SoundBlaster 16. El código máquina se traduce a módulos WebAssembly en tiempo de ejecución para ofrecer un rendimiento razonable dentro de una pestaña del navegador.
El proyecto está pensado para ejecutar sistemas operativos antiguos y de aficionados en el navegador. La documentación incluye sistemas invitados que funcionan, entre ellos varias distribuciones de Linux, FreeDOS, MS-DOS, Windows 95 a 2000, ReactOS, Haiku y FreeBSD; algunas versiones de Windows XP y posteriores solo funcionan en determinadas condiciones. Las imágenes de disco se cargan desde URL y el emulador se puede integrar en una página web mediante libv86.js o el paquete de npm v86.
El emulador ofrece una API de JavaScript para controlar la consola serie, guardar y restaurar el estado y configurar la conexión de red entre instancias. También se puede compilar localmente con Rust y Make, tanto en una compilación de depuración como en una optimizada.
Funciones clave
- 01Emula una CPU x86 hasta un nivel aproximadamente equivalente al Pentium 4, con compatibilidad con SSE3
- 02Traduce código máquina a WebAssembly en tiempo de ejecución
- 03Incluye VGA con extensiones SVGA y Bochs VBE, además de teclado y mouse PS/2
- 04Ofrece opciones de conexión de red mediante virtio, NE2000 y módem de acceso telefónico
- 05Permite guardar y restaurar el estado del emulador
- 06Se puede integrar mediante libv86.js o el paquete de npm
Casos de uso
- Ejecutar sistemas operativos retro, como Windows 95 o MS-DOS, en una página web
- Mostrar o enseñar cómo funciona una PC y el proceso de arranque de x86
- Integrar un entorno aislado de Linux o DOS en una herramienta basada en navegador
- Estudiar la emulación de CPU y la traducción dinámica de código binario a WebAssembly
Inicio rápido
- 1
Instala el paquete npm
npm install v86 - 2
Inserta el emulador en una página web usando el constructor V86, como se muestra en el ejemplo de la API del README
Antes de usarlo
- No se admiten sistemas operativos invitados de 64 bits.
- No se admite la emulación multinúcleo.
- Para compilar desde el código fuente se necesitan Rust, clang, Java y Node.js, además de otras herramientas.
- Algunos sistemas operativos, como Plan 9 y OS/2, no funcionan.
Temas
Preguntas frecuentes
- ¿Qué es v86?
- Un emulador de PC x86 que se ejecuta en el navegador y traduce código máquina a WebAssembly en tiempo de ejecución para iniciar sistemas operativos reales. v86 emula una CPU compatible con x86 junto con varios componentes de hardware de PC, como una tarjeta VGA, teclado y mouse PS/2, controladores IDE y de disquete, un bus PCI, dispositivos de red NE2000 y virtio, y una tarjeta de sonido SoundBlaster 16. El código máquina se traduce a módulos WebAssembly en tiempo de ejecución para ofrecer un rendimiento razonable dentro de una pestaña del navegador.
- ¿v86 es gratuito? ¿Qué licencia tiene?
- v86 es open source bajo la licencia BSD-2-Clause. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿v86 sigue mantenido?
- Mantenimiento activo. El último commit de v86 fue el 18 oct 2026.
- ¿Para qué puedo usar v86?
- Ejecutar sistemas operativos retro, como Windows 95 o MS-DOS, en una página web Mostrar o enseñar cómo funciona una PC y el proceso de arranque de x86 Integrar un entorno aislado de Linux o DOS en una herramienta basada en navegador Estudiar la emulación de CPU y la traducción dinámica de código binario a WebAssembly
- ¿Cómo se instala v86?
- Instala el paquete npm: npm install v86 Inserta el emulador en una página web usando el constructor V86, como se muestra en el ejemplo de la API del README
- ¿Dónde consigo v86?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/copy/v86
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Una versión de FFmpeg en WebAssembly y JavaScript que permite grabar, convertir y transmitir video y audio desde el navegador.
Framework de Rust para crear aplicaciones web interactivas del lado del cliente y compilarlas a WebAssembly, con una macro para HTML similar a JSX.
Un runtime de WebAssembly y CLI para ejecutar aplicaciones y código de agentes de IA en entornos rápidos, ligeros y aislados.
Runtime independiente de WebAssembly basado en el generador de código Cranelift, con compatibilidad con WASI e integración en varios lenguajes.
Lenguaje similar a TypeScript y compilador que convierte un subconjunto tipado de TypeScript en módulos WebAssembly.