Firefox внутри браузера: Gecko скомпилировали в WebAssembly
Команда Puter запустила полноценный Firefox прямо в браузерной вкладке — движок Gecko скомпилирован в WebAssembly. Рассказываем, как это работает и зачем.
Firefox запустили прямо в браузере — без установки, без плагинов
Команда Puter опубликовала на Hacker News эксперимент, который сложно не заметить: движок Gecko скомпилирован в WebAssembly и запускает настоящий интерфейс Firefox прямо внутри браузерной вкладки. Никакой виртуальной машины, никакого отдельного процесса — браузер внутри браузера работает силами самого веба. Авторы называют это «весёлым экспериментом для исследования границ возможностей WebAssembly».
Как это устроено
Gecko → WASM: компиляция «честного» движка
Gecko — это движок рендеринга Firefox, написанный на C++ и Rust. Именно он отвечает за отображение веб-страниц, выполнение JavaScript и всё остальное, что делает браузер браузером. Чтобы запустить его в браузере, авторы воспользовались возможностями WebAssembly (WASM) — низкоуровневого бинарного формата, который позволяет запускать код на C/C++, C# и Rust в браузере с почти нативной производительностью.
В итоге получилась вот такая архитектура:
graph TD
A[Исходный код Gecko C++/Rust] -->|Компиляция Emscripten| B[WebAssembly модуль .wasm]
B --> C[Браузер-хост: Chrome / Firefox / Safari]
C --> D[Вкладка с Firefox-интерфейсом]
D --> E[WebGL рендеринг GPU]
D --> F[Wisp WebSocket-прокси]
F --> G[Интернет]
Что внутри
Проект включает: сам движок Gecko, скомпилированный в WASM; полноценный интерфейс Firefox, который рендерится внутри вкладки; GPU-ускорение через WebGL; экспериментальный JIT (Just-In-Time компилятор) для JS → WASM; а также Wisp — WebSocket-прокси, через который вкладки загружают веб-контент.
Browser.js — более лёгкая альтернатива
Для более практичного использования Puter также разработал browser.js — решение «браузер в браузере», которое потребляет значительно меньше RAM. Это решение доступно на GitHub по адресу github.com/HeyPuter/browser.js и ориентировано на реальные сценарии применения.
| Параметр | Firefox-WASM | browser.js |
|---|---|---|
| Движок | Gecko (полный) | Облегчённый |
| Потребление RAM | Высокое | Низкое |
| Тип | Эксперимент | Практичное решение |
| Аутентичность | Настоящий Firefox | Браузероподобная среда |
| Статус | Labs / прототип | GitHub-проект |
Почему это важно: WebAssembly взрослеет
Этот эксперимент — яркая демонстрация того, как далеко зашёл WebAssembly. WebAssembly разработан для совместной работы с JavaScript — с помощью WebAssembly JavaScript API можно загружать WASM-модули в JS-приложения и обмениваться функциональностью.
WebAssembly 3.0 был выпущен в сентябре 2025 года. Среди новых возможностей — 64-битное адресное пространство, несколько адресных пространств, обработка исключений и сборка мусора для структур и массивов.
Technology стала мейнстримом: за последний год использование WebAssembly на сайтах, которые посещают пользователи Chrome, выросло ещё на 1% и теперь составляет 5,5% по метрикам Chrome Platform Status.
Когда-то WASM казался академической игрушкой. Сегодня в нём работают Figma, Unity, Adobe Photoshop для веба, а теперь ещё и сам Firefox.
Где ещё используют WASM подобным образом
Browser-in-browser — не единственный экзотический вариант применения. Figma перестроила движок рендеринга на C++ и поставляет его в каждый браузер через WASM; AutoCAD Web, Photopea и Adobe Photoshop для веба идут тем же путём.
Mozilla сама использует WebAssembly как инструмент безопасности внутри Firefox: через технологию RLBox сторонние библиотеки C/C++ для работы со шрифтами, изображениями и аудио изолируются путём компиляции в WASM и выполняются в жёсткой WASM-песочнице.
- Figma — C++ рендеринг → WASM, 3× ускорение загрузки
- Unity / Unreal Engine 5 — экспорт игр в WASM для браузера
- Adobe Photoshop Web — полноценный графический редактор в браузере
- Firefox RLBox — изоляция небезопасных библиотек через WASM-песочницу
- Firefox-WASM — весь браузер целиком внутри вкладки
Что дальше
Эксперимент Puter ставит интересные вопросы: если браузер можно скомпилировать в WASM и запустить в браузере, что ещё возможно? Изолированные среды тестирования без виртуальных машин? Переносимые браузерные профили в облаке? Безопасные песочницы для запуска недоверенного веб-контента?
Пока это лабораторный эксперимент. Но история WebAssembly показывает, что то, что сегодня выглядит как трюк, завтра становится стандартом индустрии.