17 puntos por xguru 2025-02-05 | 4 comentarios | Compartir por WhatsApp
  • 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

 
xcutz 2025-02-06

Una locura al nivel de Doom, Linux jajaja

 
tsboard 2025-02-05

¿Esto es romanticismo o locura? Dios mío...

 
kuthia 2025-02-05

guau...

 
kaydash 2025-02-05

Guau......