17 pontos por xguru 2025-02-05 | 4 comentários | Compartilhar no WhatsApp
  • Em geral, é fácil pensar que arquivos PDF são documentos estáticos, mas na verdade eles incluem suporte a Javascript
    • O padrão PDF tem sua própria biblioteca padrão de Javascript
    • Navegadores modernos como Chromium e Firefox implementam apenas APIs extremamente limitadas por razões de segurança
  • Apenas o Adobe Acrobat oferecia suporte à especificação completa de Javascript dentro de PDFs, incluindo recursos muito amplos como renderização 3D, requisições HTTP e detecção de todos os monitores do usuário
  • Mesmo com APIs limitadas de navegador, ainda é possível executar a lógica de computação desejada, mas a parte de I/O é muito restrita
  • É possível compilar código C para asm.js e executá-lo dentro do PDF
    • Usa uma versão antiga do Emscripten (como a 1.39.20, que oferece suporte ao alvo asm.js)
    • A estrutura consiste em modificar o emulador RISC-V TinyEMU, compilá-lo para asm.js e executá-lo no PDF
  • A forma de saída de tela e entrada é a mesma usada em DoomPDF (executando Doom dentro de um PDF)
    • A tela usa uma linha por campo de texto, representando o estado dos pixels com caracteres ASCII
    • A entrada envia teclas para a VM por meio de um teclado virtual e uma caixa de texto
  • Há grandes problemas de desempenho
    • Ex.: a inicialização do kernel Linux leva cerca de 30 a 60 segundos, ficando mais de 100 vezes mais lenta que a execução normal
    • No mecanismo de PDF do Chrome, o JIT do V8 fica desativado, o que reduz bastante o desempenho
  • O sistema de arquivos raiz pode ser escolhido para 64 bits ou 32 bits
    • O padrão usa um sistema Buildroot de 32 bits (originalmente trazido do exemplo do TinyEMU)
    • Também existe uma versão de 64 bits com Alpine Linux, mas ela é cerca de 2 vezes mais lenta e normalmente não é usada

4 comentários

 
xcutz 2025-02-06

Um nível de loucura comparável ao do Doom, Linux kkkkk

 
tsboard 2025-02-05

Isto é romantismo ou loucura? pqp

 
kuthia 2025-02-05

uau...

 
kaydash 2025-02-05

Uau......