Vixen
dd8b0a81

Raven · guide

The target-independent IR

The model every back end consumes and none of them may look behind — a structured body over SSA values, storage reached only through an access chain, a deliberately small type system, and a verifier that runs before a back end ever sees a module.

Edit this page on GitHub

Documents

Next

  • Compiling a shader — The four phases a `.rvn` goes through — parse, bind, lower, generate — the handful of types a host touches to drive them, where each phase's diagnostics come from, and why a permutation value or a compose binding makes a separate compilation rather than a flag.
  • The .rvnlib IR — The lowered half of a compiled library — how a function body is written down so a later compilation can link it, why every cross-reference travels as a key or an index rather than as an object, and what a body may not contain if it is to travel at all.
  • Compiled artefacts — The two things the compiler writes — `.rvnfx`, one shader compiled for one target and one permutation, and `.rvnlib`, a library a later compilation binds and links against — what is in each container, and why both carry a version a reader refuses rather than guesses at.
  • The Raven symbol model — What binding produces — the entity hierarchy a tool asks questions of, why type identity is by reference for the intrinsics and structural for the seven constructed shapes, how generics are read through a substitution rather than instantiated, and why this model is deliberately richer than the IR the back ends see.