Hexana (Wasm plugin for JetBrains IDEs) — changelog 0.5 → 0.8.2 in six weeks

https://preview.redd.it/w2x0ka2iinyg1.png?width=2048&format=png&auto=webp&s=1923e39f182efc80179a0f66ffd186269d4ea741

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 .wasm and 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 .wasm module, 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-types and bulk-memory instruction 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 .wasm modules 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/.wat served 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 .wasm module, 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-types and bulk-memory instruction 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 CommonByteBuffer causing sporadic UnParsedOpcodeExceptions 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

80
Loading comments…