Gleam v1.19.0 ships an entirely rewritten Erlang code generator. Instead of producing Erlang source text that the Erlang compiler must tokenize and parse, Gleam now emits Erlang abstract forms — the intermediate representation the compiler uses internally — serialized in Erlang's external term format. The front half of the Erlang compilation pipeline is simply skipped. The performance gains are substantial. On José Valim's langcompilebench (100 modules × 100 functions each), Gleam v1.19 compiles in roughly half the time of v1.17, placing it among the fastest in a field that includes Go, Erlang, Java, Elixir, Elm, Rust, C#, and TypeScript. Gleam's compilation is also incremental, so real-world development cycles see even shorter waits. The benchmark is contrived — the project acknowledges this directly — but the directional signal is clear. Beyond speed, the move fixes a longstanding quality-of-life problem: source location metadata. Previously, BEAM crash reports and stacktraces pointed to lines in generated Erlang source, not the original Gleam code, with accuracy limited to the nearest function boundary. Now line numbers map precisely back to Gleam source, which also opens the door for debugger integration with tools like edb. The team explicitly considered and rejected compiling directly to BEAM bytecode. BEAM bytecode is not a stable target — it evolves with each virtual machine release, and reproducing decades of Erlang compiler optimizations would be a resource sink. For a community-funded project without corporate backing, abstract forms hit the cost-benefit sweet spot. Elixir made the same architectural choice, and Gleam is comfortable citing that precedent. The JavaScript backend also gets meaningful work in this release. John Downey flattened the decision-tree code generation for pattern matching, collapsing deeply nested if-statements into single compound conditions. The output code is dramatically cleaner, with fewer branches for JS engines to optimize. Separately, Giacomo Cavalieri optimized short list literals to use direct prepend chains instead of array-to-list conversion, yielding measurable runtime gains especially for projects using the Lustre UI library. TypeScript interop improves with generic-preserving overloads on variant-checking functions. Previously, narrowing a Box to Full would lose the type parameter to unknown. The new overloaded declarations preserve type information when the input type is already known, eliminating a real friction point for mixed Gleam-TypeScript codebases. This is infrastructure work — no flashy features, no new syntax. But it compounds. Faster builds, accurate debugging, cleaner JS output, and better TS interop all reduce the friction tax developers pay every day. For a small language competing on developer experience rather than corporate muscle, these are the moves that determine whether adoption curves bend upward or flatten out.