Skip to content
/ graf Public

A graph-oriented intermediate representation, optimization framework, and machine code generator.

License

Notifications You must be signed in to change notification settings

vezel-dev/graf

Graf

Graf

A graph-oriented intermediate representation, optimization framework, and machine code generator.

License Commits Build Discussions Discord Zulip


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.

Building

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.

License

This project is licensed under the terms found in LICENSE-0BSD.