LANGUAGES Signal 456 2 feeds carried it
Author develops a generation-based fuzzer for the Gleam compiler to compare JavaScript and Erlang outputs
An engineer details their process of building a structure-aware, generation-based fuzzer for the Gleam compiler to uncover edge cases and discrepancies between its JavaScript and Erlang code generation targets.
Gleam's ability to compile to two different backends makes it a prime candidate for differential fuzzing, where the outputs of both targets can be compared for inconsistencies. The author's shift from non-deterministic LLM-based fuzzing to a structured, generation-based approach in Rust highlights a practical method for finding compiler bugs.
Written by elseif from the cluster below · every claim links back to a sourceThe three things worth knowing
The author initially used an LLM to find compiler edge cases, but found it costly, non-deterministic, and only marginally effective.
Gleam's dual-target compilation to JavaScript and Erlang allows the fuzzer to compare outputs and flag differences.
The fuzzer is implemented as a generation-based approach in Rust, leveraging the compiler's language to integrate existing fuzzing tooling.
THE CLUSTER
↗