[READ-ONLY] Mirror of https://github.com/crutchcorn/binarrow. An experimental browser runtime for AArch64 Linux ELF executables
README.md

Icicle feasibility spike #

This isolated workspace reproduces the native AArch64 decode-and-interpret result used by ADR-0001. It is deliberately excluded from the product workspace: the pinned upstream icicle-vm still depends unconditionally on a native Cranelift JIT and cannot compile for wasm32-unknown-unknown.

Pinned inputs #

  • Icicle: 6f53b6016e63ddcff80a105b8e5ad37caf7a6ed3
  • Icicle-supported Ghidra: 50230050fa58bd40d5a96cab9c167fc55bc92a76

The Ghidra checkout is not committed. Its AArch64 language sources are about 2.5 MiB and are fetched sparsely by the included script.

Reproduce the native probe #

From this directory:

./fetch-supported-ghidra.sh .cache/ghidra
cargo run --locked -- .cache/ghidra/Ghidra/Processors

The probe compiles the AArch64 SLEIGH specification, decodes and interprets:

mov x0, #42
add x0, x0, #1

It succeeds only if x0 == 43 and pc == 0x1008 after two interpreted instructions.

Browser portability result #

The exact commands and temporary patch set used for the browser build experiment are recorded in the dependency report. Those patches are evidence only and are not silently applied here.

The exact zero-context diff is preserved as patches/0001-wasm-portability.patch. Apply it with git apply --unidiff-zero only to a clean checkout of the pinned Icicle revision; it intentionally does not attempt to make icicle-vm or icicle-jit browser-portable.