Anteriormente, um desenvolvedor encapsulou o jogo Tetris em um arquivo PDF separado. Na verdade, é muito impreciso dizer que está encapsulado, porque o jogo foi desenvolvido de acordo com as regras do Tetris por meio de PDF, em vez de encapsular o jogo existente em um arquivo PDF.

Agora existe uma nova maneira de encapsular o sistema Linux em um arquivo PDF e executá-lo. O desenvolvedor vk6_ compilou com sucesso o simulador RISC-V em JavaScript. O formato de arquivo PDF suporta JavaScript e possui sua própria biblioteca padrão, portanto, este mecanismo é usado para executar o sistema Linux.

O desenvolvedor vk6_ disse em uma postagem no fórum do Reddit:

Você pode pensar que os arquivos PDF consistem apenas em arquivos estáticos, mas surpreendentemente o formato de arquivo PDF suporta JavaScript e tem sua própria biblioteca padrão independente, que navegadores modernos como Chromium e Firefox implementam como parte do mecanismo PDF.

Mas a API disponível no navegador é muito limitada, mas ser capaz de fazer qualquer tipo de cálculo dentro do PDF requer apenas IO muito limitado.

Usando a versão antiga do Emscripten (que tem como alvo asm.js em vez de WebAssembly) para compilar o código C para rodar em PDF, podemos compilar o simulador TinyEMURISC-V modificado para asm.js e depois executá-lo em PDF.

Em termos de entrada, o desenvolvedor adicionou um teclado virtual que pode ser clicado com o mouse, e também adicionou uma caixa de texto. Ao inserir conteúdo na caixa de texto, ele será convertido em operações na tela. Por exemplo, você pode alterar a senha pressionando passwd e pressionando Enter na caixa de entrada.

O conteúdo de saída é composto por um campo de texto de pixels por linha, que contém caracteres ASCII que formam uma imagem grande. É preciso dizer que os desenvolvedores realmente brincaram com o formato PDF.

Usuários interessados ​​podem conferir este projeto: https://github.com/ading2210/linuxpdf

Projeto de amostra: https://linux.doompdf.dev/linux.pdf