Hexana (Wasm plugin for JetBrains IDEs) — changelog 0.5 → 0.8.2 in six weeks
Hexana is a JetBrains IntelliJ plugin that treats .wasm binaries (and .wit definitions) as first-class IDE artifacts: explorer tree, hex view, WAT view, navigation, MCP API for AI assistants. Free on the JetBrains Marketplace. Below is a consolidated changelog from 0.5 → 0.8.2 — six weeks, five releases.
Major features added since 0.5
- Component Model + WIT support. Component sections, instances, type definitions, imports, exports, interfaces, and worlds all show up in the explorer tree. WIT files get full language support — go-to-definition, find usages, hover docs, keyword completion, formatting — and cross-navigate from WIT into the corresponding
.wasmdefinitions. - DWARF source mapping. Hexana detects and parses DWARF in
.wasmand maps functions back to source files and lines. Click a function in the binary, land in the source. - Code-Size Profiler for WebAssembly. See exactly which functions, sections, and data segments are eating bytes in your
.wasm, right in the IDE. - JS interop with Wasm awareness. Real code completion and type inference for
instance.exports.*, import namespaces, and property names — derived from the actual.wasmmodule, not a stale.d.ts. - Run configurations. Pick Wasmtime or GraalVM, hit Run.
- WAT view that's actually usable. Offset-based line numbers matching byte positions, IDE zoom, line numbers, text selection, search, smooth scrolling.
- Hex view polish. Text selection across hex and text columns, arrow keys behave.
- Search across imports / exports / functions in any table view (filter-as-you-type).
- Broader opcode coverage in WAT and MCP.
reference-typesandbulk-memoryinstruction families, plus Legacy Exception Handling parsing/rendering. - MCP improvements. Tool descriptions tightened for cleaner AI-assisted binary analysis.
Stability picked up alongside this — Go-compiled .wasm modules load, KDoc rendering doesn't break with Hexana enabled, shared-memory limits handled correctly, big WAT files don't lag, run configs work on Windows, and a long-running data race on the shared byte buffer that caused sporadic UnParsedOpcodeExceptions on larger modules is gone.
Chronological breakdown
0.6 — Component Model + WIT (2026-03-18)
Added
- Component Model binary support: component sections, instances, type definitions, imports, exports, interfaces, worlds — all parsed and shown in the explorer tree
- WIT language support: code model, go-to-definition, find usages, hover documentation
- Cross-navigation from WIT to Wasm: click an export in
.wit, jump to its definition in.wasm
Fixed
- Several MCP-side issues affecting AI-assisted analysis
0.7 — WAT usability + search (2026-03-31)
Added
- WAT files now show offset-based line numbers that match byte positions in the binary — finally makes WAT ↔ hex correlation trivial
- Search across imports, exports, and functions in any table view (filter-as-you-type, no shortcut)
- Arrow-key navigation, scrolling, layout fixes across all table views
- WIT basic editing: keyword completion, code formatting
Fixed
- KDoc rendering no longer breaks when Hexana is enabled
- Go-compiled
.wasmmodules load without crashing - Shared memory limits handled correctly
0.7.1 — UX polish (2026-04-09)
Added / improved
- IDE zoom now works in the WAT tab (presentations, screenshots, blog posts — readable at last)
- Big WAT files: line numbers, text selection, search, smooth scrolling — proper editor instead of a flat dump
- Hex view: text selection works across hex and text columns, arrow keys behave
Fixed
- Unbalanced tree parsing in WAT no longer trips the plugin
.wasm/.watserved over HTTP (local debug scenarios) handled correctly- WIT folding with empty ranges
0.8 — DWARF + profiler + JS interop + run configs (2026-04-21)
Added
- DWARF support. Detects and parses DWARF in
.wasm, maps functions back to source files and lines. Click a function in the binary, land in the source. - Code-Size Profiler. See exactly which functions, sections, and data segments are consuming bytes in your
.wasm. - JS interop with Wasm awareness. Real code completion and type inference for
instance.exports.*, import namespaces, and property names — derived from the actual.wasmmodule, not a stale.d.ts. - Run configurations for Wasmtime and GraalVM. Pick a runtime, hit Run.
- Explorer integration: Hexana views slot into the Project tool window
- MCP tool descriptions optimized for cleaner AI-assisted analysis
Fixed
- IJPL-242167 (Project tool window crash on certain configurations)
- WIT ClassCastException
0.8.2 — patch (2026-04-30)
Added
- Legacy EH (exception handling) parsing/rendering — for modules built against the older proposal
- WAT/MCP rendering of
reference-typesandbulk-memoryinstruction families
Fixed
- Run configurations now work on Windows (Wasmtime / GraalVM run configs in 0.8 didn't actually launch on Windows — they do now)
- Wasm parser fixes (vector, table)
- Element segment type 6 now reads the reference-type per WebAssembly 3.0 spec §5.5.12
- Data race on shared
CommonByteBuffercausing sporadicUnParsedOpcodeExceptions on larger modules — fixed
(0.8.1 didn't ship publicly — the Windows fix needed an extra revision before going out.)
Where this is going
Short list of what's actively in progress, in case anyone has opinions to share before it's frozen:
- WASM debugging via DWARF — read-only inspection works; stepping through wasm in the IntelliJ debugger is next
- Cross-navigation from Wasm imports back to WIT (the inverse of what shipped in 0.6)
- More opcodes / proposals coverage in WAT and MCP (threads, tail-call, GC types are the obvious gaps)
Plugin: https://plugins.jetbrains.com/plugin/29090-hexana
Issues / feature requests: https://github.com/JetBrains/hexana/issues
If you've hit something that should be here and isn't — ideally with a .wasm reproducer — file it. The "doesn't load" / "crashes on" tickets get prioritized over feature work.
Posted May 2, 2026, 4:25 AM UTC