Песочница WebAssembly

Работает локально в браузере

По одному экспорту на каждый числовой тип (i32, i64, f32, f64), начиная с add(20, 22).

Редактор WAT

Исходный код WATКомпилятор WAT (WABT) скачивается только при компиляции. Ошибки показывают строку и столбец.
Дополнительные настройки

Допустимо: 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, поэтому сравнивайте запуски на одной машине.

CodingTool официально запущен на

Launched on StartupBaseCodingTool.dev - Free, Fast & Easy Developer Tools in One Place | Product HuntCodingTool - Featured on Startup FameFazier badgeListed on Turbo0Featured on Twelve ToolsFeatured on Findly.tools