- 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
Um nível de loucura comparável ao do Doom, Linux kkkkk
Isto é romantismo ou loucura? pqp
uau...
Uau......