이전에 개발자는 테트리스 게임을 별도의 PDF 파일로 캡슐화했습니다. 실제로 기존 게임을 PDF 파일로 캡슐화한 것이 아니라 PDF를 통해 테트리스 규칙에 따라 게임을 개발했기 때문에 캡슐화했다고 하기에는 사실 매우 부정확합니다.
이제 Linux 시스템을 PDF 파일로 캡슐화하고 실행하는 새로운 방법이 있습니다. 개발자 vk6_가 RISC-V 시뮬레이터를 JavaScript로 성공적으로 컴파일했습니다. PDF 파일 형식은 JavaScript를 지원하고 자체 표준 라이브러리를 가지고 있으므로 Linux 시스템을 실행하는 데 이 엔진이 사용됩니다.
개발자 vk6_는 Reddit 포럼 게시물에서 다음과 같이 말했습니다.
PDF 파일은 정적 파일로만 구성되어 있다고 생각할 수도 있지만 놀랍게도 PDF 파일 형식은 JavaScript를 지원하고 Chromium 및 Firefox와 같은 최신 브라우저가 PDF 엔진의 일부로 구현하는 자체 독립 표준 라이브러리를 가지고 있습니다.
그러나 브라우저에서 사용할 수 있는 API는 매우 제한적이지만 PDF 내에서 모든 종류의 계산을 수행하려면 매우 제한된 IO만 필요합니다.
이전 버전의 Emscripten(WebAssembly 대신 asm.js를 대상으로 함)을 사용하여 C 코드를 컴파일하여 PDF에서 실행하면 수정된 TinyEMURISC-V 시뮬레이터를 asm.js로 컴파일한 다음 PDF에서 실행할 수 있습니다.
입력 측면에서는 개발자가 마우스로 클릭할 수 있는 가상 키보드를 추가했고, 텍스트 상자도 추가했습니다. 텍스트 상자에 내용을 입력하면 화면상의 작업으로 변환됩니다. 예를 들어, passwd를 누르고 입력 상자에서 Enter를 누르면 비밀번호를 변경할 수 있습니다.
출력 콘텐츠는 큰 이미지를 형성하는 ASCII 문자를 포함하는 한 줄당 픽셀의 텍스트 필드로 구성됩니다. 개발자들이 실제로 PDF 형식을 가지고 놀았다고 말해야 합니다.
관심 있는 사용자는 이 프로젝트를 확인할 수 있습니다: https://github.com/ading2210/linuxpdf
샘플 프로젝트: https://linux.doompdf.dev/linux.pdf