以前、開発者はテトリス ゲームを別の 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 をターゲットとする) を使用して PDF で実行する C コードをコンパイルすると、変更された TinyEMURISC-V シミュレーターを asm.js にコンパイルして、PDF で実行できます。

入力に関しては、開発者はマウスでクリックできる仮想キーボードを追加し、テキスト ボックスも追加しました。テキストボックスに内容を入力すると、画面上の操作に変換されます。たとえば、passwd を押して入力ボックスで Enter を押すと、パスワードを変更できます。

出力コンテンツは、1 行あたりピクセルのテキスト フィールドで構成され、大きな画像を形成する ASCII 文字が含まれます。開発者は PDF 形式を真剣に試してきたと言わざるを得ません。

興味のあるユーザーは、このプロジェクトをチェックしてください: https://github.com/ading2210/linuxpdf

サンプルプロジェクト: https://linux.doompdf.dev/linux.pdf