A graph-oriented intermediate representation, optimization framework, and machine code generator.
Warning
This is currently in-development vaporware.
Graf is a graph-oriented compiler infrastructure written in Zig. Chiefly, it provides the Graph Code intermediate representation, a simple optimization framework, and a machine code generator.
Graph Code is based on the RVSDG, a novel IR that has a number of desirable properties such as explicit data and state dependencies, inherent static-single assignment form, strong canonicalization, and whole-program representation.
Optimization is primarily based on e-graphs and equality saturation. In addition to being a natural fit for the RVSDG, this results in a cohesive framework for discovering rewrites and losslessly adding them to the IR, thus avoiding the phase-ordering problem.
For more information, please visit the project home page.
You will need Zig, Pandoc, and Node.js installed. Simply run zig build
to
build artifacts. Run zig build --help
for a list of configurable options and
optional build steps.
This project is licensed under the terms found in
LICENSE-0BSD
.