Nixパッケージをブラウザで実行——trynixが30万以上のバージョンを起動
Any Nix package, live in the browser

trynixは、Nixパッケージをブラウザタブ内で実行できるツールです。nixpkgsの全履歴(31万以上のパッケージバージョン)から選んだパッケージを、WebAssembly上のLinuxカーネルで起動します。Hydraがビルドしたストアパスを直接取得する「fast-mode」を活用し、評価やビルドを省略。公開キャッシュに加え、CORSヘッダーを許可する任意のキャッシュ(GitHub Pagesなど)からストアパスを取得可能。パッケージの複数バージョンを同時に起動したり、実行中にストアパスを追加することもできます。作者はこれを「Nixのマグナム・オーパス」と呼び、PRレビューやエージェント成果物、再現可能なバグ報告などへの応用を提案しています。
「私のマシンでは動く」が、今や再現のためのURLになりました。
HNでの議論
20- yjftsjthsd-h
> WebAssemblyでLinuxカーネルを実行できる。
一瞬、誰かがLinuxをwasmに移植したのかと思ったが、実際にはwasmのqemu(JIT付き、確かに境界線は曖昧になるが)で動くx86_64 Linuxだ。おそらくその方がずっと実用的だろう。
---
これをコードレビューやバグの再現、チュートリアル、デモに使えるというアイデアに興奮している。もちろんNixはすでに再現性の面を提供しているが、セットアップ不要でどんなホストシステムでも動作し、堅牢なサンドボックスがあることで、実用的な有用性が本当に向上するはずだ。ネイティブのNixでは「リンクをクリックするだけでソフトウェアを試せて、何もインストールせずに動く」という体験は得られないし、「誰かが実行してほしいと渡してきた完全に信頼できないコードが、ブラウザのタブの中にあるから大丈夫」という体験も得られない。
- easterncalculus
とてもクールだ。ここからパフォーマンスをどう改善するのか気になる。提案されているようにPythonを試してみたが、今のところかなり遅い。
~ # time python3 hello.py
Hello World!
real 0m 5.48s
user 0m 4.11s
sys 0m 1.24s
- orangea
> バイナリを初めて実行するとき、x86_64からWebAssemblyに変換されるため時間がかかる。
もしバイナリがqemuで動く実際のx64 Linuxカーネル上で実行されているなら、バイナリがwasmに変換されることは決してないということにならないか?