Песочница WebAssembly
Работает локально в браузереПо одному экспорту на каждый числовой тип (i32, i64, f32, f64), начиная с add(20, 22).
Редактор WAT
Дополнительные настройки
Допустимо: 1 000–60 000
Допустимо: 1–10 000 000
Допустимо: 100–30 000
- Что такое WebAssembly?
- Компактный двоичный формат, который браузеры выполняют почти с нативной скоростью рядом с JavaScript. Модуль экспортирует функции, которые можно вызвать.
- Что такое WAT?
- Текстовый формат WebAssembly — читаемая форма модуля. Каждая инструкция напрямую соответствует двоичному коду.
- Что происходит при нажатии «Скомпилировать»?
- WABT прямо в браузере превращает WAT в двоичный файл .wasm. Модуль проверяется и анализируется, после чего его экспорты можно запускать в изолированном Worker.
- Покидает ли код браузер?
- Нет. Компиляция, анализ и запуск выполняются локально. При первой компиляции загружается только компилятор WAT.
Анализ, запуск и профилирование WASM
Загрузите модуль .wasm, напишите WAT или откройте пример. Сначала модуль проверяется и анализируется: импорты, экспорты, функции с сигнатурами, память (страницы), таблицы, глобальные переменные и пользовательские секции. Затем поддерживаемые экспорты можно запускать с типизированными аргументами, измерять бенчмарком, останавливать и создавать экземпляр заново.
Числовой ABI и строгие импорты
Раннер вызывает экспорты с параметрами i32, i64, f32 или f64 и не более чем одним результатом. Значения i64 передаются как BigInt на всём пути, поэтому большие целые остаются точными. Строки, указатели, ссылки, SIMD, WASI и множественные результаты видны в инспекторе, но не выполняются. Импорты никогда не подставляются неявно: вы сами включаете числовые заглушки, возвращающие ноль, нулевые глобальные переменные или новые память и таблицы; неразрешённые импорты блокируют создание экземпляра и перечисляются по именам.
Честные бенчмарки и измерение памяти
Запуск и бенчмарк выполняются в отдельном Worker с лимитом итераций, лимитом времени и тайм-аутом; «Стоп» завершает воркер, а «Сбросить экземпляр» начинает с чистого состояния. Показываются время создания экземпляра и выполнения, среднее, медиана, P95 по ближайшему рангу и операции в секунду. Очень быстрые вызовы измеряются пакетами выше разрешения таймера. Линейная память отображается в страницах по 64 KiB: начальный, текущий и пиковый наблюдаемый размер, а также события роста.
Почему нет CPU %, числа GC и FPS
Браузеры не сообщают загрузку CPU по задачам и счётчики сборки мусора, а вызовы функций не рисуют кадры, поэтому эти значения помечаются как неизмеряемые или неприменимые вместо выдуманных. JS-куча страницы и длинные задачи показываются только при поддержке браузером. Каждая находка — долгий вызов, накладные расходы на границе JS ↔ WASM, повторный рост памяти или неразрешённые импорты — сопровождается измерением, на котором она основана.
Конфиденциальность и ограничения
Модули, исходный WAT, аргументы и результаты остаются в этом браузере: ничего не загружается на сервер, а аналитика не получает содержимое модуля. Загрузка ограничена одним core-модулем до 10 MiB, WAT — одним миллионом символов. Компилятор WAT (WABT) скачивается только при компиляции WAT. Тайминги зависят от браузера, устройства и уровня JIT, поэтому сравнивайте запуски на одной машине.
