trynix: запустите любой Nix-пакет прямо в браузере
Any Nix package, live in the browser

Проект trynix позволяет запускать любой из 310 083 версий пакетов nixpkgs в виртуальной Linux-машине, которая загружается прямо во вкладке браузера. Ничего не нужно устанавливать: достаточно указать пакет, и сайт сам найдёт нужный store path в публичных кэшах, включая cache.nixos.org. Более того, можно поделиться собственным store path — любой человек сможет запустить его у себя, даже если его нет в публичных кэшах. В основе лежат nixpkgs-multiverse для поиска версий, Linux-ядро в WebAssembly и хитрые трюки с предзагрузкой и снапшотами, чтобы ускорить загрузку. Автор видит в этом не просто демо, а новый способ ревьюить код, создавать артефакты для агентов и воспроизводить баги.
«Works on my machine» теперь — это просто URL для воспроизведения.
- yjftsjthsd-h
> мы можем запустить ядро Linux в WebAssembly.
На мгновение я подумал, что кто-то портировал Linux на wasm, но на самом деле это x86_64 Linux в qemu на wasm (с JIT, что, полагаю, размывает границы). Вероятно, это гораздо практичнее.
---
Я в восторге от идеи использования этого для ревью кода / воспроизведения багов / туториалов / демо. Очевидно, что 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, и это занимает время.
Если бинарник работает под настоящим x64 Linux ядром в qemu, не означает ли это, что бинарник никогда не транслируется в wasm?