В рамках проекту Browsix розвивається фреймворк для забезпечення роботи Unix-додатків в web-браузері. Це дозволяє фактично відмовитися від віртуальних машин. Як зазначається, немодифіковані програми запускаються процеси в спеціальному Unix-подібному оточенні, транслирующем засоби для роботи з процесами, файовой системою, сигналами і сокетами в браузерне Web API. Проект поширюється під ліцензією MIT.

Оточення підтримує запуск програм, написаних на C, C++, Go і Node.js. Зокрема, були запущені LaTeX, GNU Make, HTTP-сервера на мові Go і shell-скрипти. Оточення написано на мові TypeScript.

Низькорівневі примітиви Unix дзеркалюються в існуючі браузерні API, що дозволяє організувати виконання в ізольованому браузерном оточенні немодифікованих додатків, пересобранных подання на JavaScript зі спеціальним runtime. Для компіляції програм C/C++ застосовується модифікований Emscripten, а для Go – GopherJS. Управління роботою програм проводиться за аналогією з процесами в Unix – спочатку завантажуються базові компоненти Browsix, ініціалізується дерево ФС і запускаються процеси. Користувачі можуть підключитися до наданому Browsix TCP-порту і створювати обробники подій, таких як запис у стандартний вихідний потік або завершення процесу. Реалізація файлової системи заснована на напрацюваннях проекту BrowserFS.

Процеси працюють на базі API Web Workers, яке емулює системні виклики fork, spawn, exec, і wait. Також програмами надаються сигнали, обробник сигналів, спільно використовувана декількома процесами файлова система, неіменовані і іменовані канали (pipe), сокети (можна створювати серверні і клієнтські TCP-з’єднання). В якості демонстрації можливостей Browsix підготовлено POSIX-подібне оточення командного рядка, що пропонує shell і типові утиліти, такі як cat, tee, echo, sha1sum і так далі. Воно доступне за посилання.

Якщо ви знайшли помилку, будь ласка, виділіть фрагмент тексту і натисніть Ctrl + Enter .