ETA lang a Journey from Haskell via STG and Bytecode to Assembly Part 3
summary
ETA compiles Haskell to STG then to JVM bytecode, demonstrates tail-call elimination working on the JVM, and measures performance with JMH benchmarks and runtime tools like jconsole and VisualVM. Evidence includes using javap and opcode codec to find a bad checkcast and a 20‑minute cold compile time; Twitter-like users report ~1.5% CPU savings from Graal-style AOT. A concrete fix is implemented: added Maybe unbox guard so Java sees null for Haskell Nothing, and the test case then succeeds.
AI-written summary · about
chapters (16)
- 0:00Intro
- 3:00Garbage collectors
- 14:09JConsole
- 16:49JVM
- 20:09Compile Java
- 26:19Github
- 29:39Haskell
- 30:04Haskell compiler
- 30:34Haskell phases
- 32:06Core
- 33:11STG
- 41:17SDG
- 43:42Closure
- 46:37Delay
- 49:57Java Interface
- 53:32Fixing the problem
related talks
01h 28mA Tour of Julia
48mGetting Started with Frege
25mThe Unreasonable Performance Of The Julia Language
43mHow Julia Goes Fast
13mType Stability in Julia: Avoiding Performance Pathologies in JIT Compilation
24mHow two undergrads from the other side of the planet are speeding up...
41mHow to write a JIT compiler in 30 minutes
01h 56mIntro to Julia
