APL Run — Free Online APL & mAPL Interpreter in WebAssembly
Write, execute, and visualize APL and mAPL array programs directly in your browser with zero installation. Built from scratch in Rust with a custom bytecode VM, element-wise loop fusion, runtime WebAssembly AOT compilation, and APL-to-WebGPU shader generation.
Quick APL & mAPL Showcase
⍝ Sieve primes ≤ 50 using outer-product membership (∘.×)
Primes ← { (~R∊R∘.×R)/R←1↓⍳⍵ }
Primes 50
⍝ Tacit 3-train (fork): Arithmetic mean = Sum ÷ Tally
(+/ ÷ ≢) ⍳10
⍝ Modern mAPL: Typed contracts (::), dicts, and ▷ pipelines
Scale ← { :: int[] → int[] ⋄ (⍵ × 2) + 1 }
10 20 30 40 ▷ (⍵ ≥ 20)/⍵ ▷ Scale
Key Capabilities
- Dyalog & GNU APL Compatibility — Defaults to Dyalog APL (
⎕IO←1) with Rank (⍤), Key (⌸), Stencil (⌺), At (@), dfns, tacit trains, and control structures, plus strict GNU APL mode. - High-Throughput Compiler Pipeline — Wins or ties 15 of 17 compute benchmarks against native Dyalog APL v20.0 and GNU APL v2.0.
- mAPL Software Engineering Extensions — Gradual runtime type contracts (
::), dictionary literals ([ k: v ]), left-to-right pipelines (▷), and native ES-styleimport/exportmodules. - Interactive Reactive Notebooks & 10-Chapter Tutorial — Live cells with automatic heatmaps, boolean pixelmaps, and SVG charts.