- Normalmente es fácil pensar que los archivos PDF son documentos estáticos, pero en realidad incluyen una función con soporte para Javascript
- El estándar PDF tiene su propia biblioteca estándar de Javascript
- Los navegadores modernos como Chromium y Firefox solo implementan APIs extremadamente limitadas por razones de seguridad
- Solo Adobe Acrobat ha soportado la especificación completa de Javascript dentro de PDF, incluyendo capacidades muy amplias como renderizado 3D, solicitudes HTTP y detección de todos los monitores del usuario
- Incluso con la API limitada de los navegadores es posible ejecutar la lógica de cálculo deseada, pero la parte de IO está muy restringida
- El código en C puede compilarse a asm.js y ejecutarse dentro del PDF
- Se usa una versión antigua de Emscripten, como la 1.39.20, que soporta el objetivo asm.js
- Se modifica el emulador RISC-V TinyEMU para compilarlo a asm.js y ejecutarlo dentro del PDF
- El método de salida en pantalla y de entrada es el mismo que se usó en DoomPDF (ejecutar Doom dentro de un PDF)
- La pantalla usa una línea como un campo de texto individual y representa el estado de los píxeles con caracteres ASCII
- La entrada transmite pulsaciones de teclas a la VM mediante un teclado virtual y una caja de texto
- Se presentan problemas importantes de rendimiento
- Por ejemplo, arrancar el kernel de Linux toma entre 30 y 60 segundos, y es más de 100 veces más lento que una ejecución normal
- El V8 del motor PDF de Chrome tiene el JIT desactivado, por lo que el rendimiento cae de forma considerable
- El sistema de archivos raíz puede elegirse para 64 bits o 32 bits
- Por defecto se usa un sistema Buildroot de 32 bits, tomado originalmente del ejemplo de TinyEMU
- También existe una versión de Alpine Linux de 64 bits, pero como es aproximadamente 2 veces más lenta, normalmente no se usa
4 comentarios
Una locura al nivel de Doom, Linux jajaja
¿Esto es romanticismo o locura? Dios mío...
guau...
Guau......