Internals¶
These pages describe how the compiler is put together. You don't need any of it to write a program. Read it to change the compiler, to write a plugin, or to follow a decision about how something compiled all the way down.
| page | what it covers |
|---|---|
| Architecture | The pipeline, the package map, the three-path invariant, the cache and incremental builds, the boundary, threads. |
| The IR | The typed SSA IR between analysis and every backend: dialects, passes, .ppyir, the linker, sanitizers, profiles. |
| Backends | The backend boundary, the interface a backend implements, discovery through ppy.backends, passes, validation, the cache key, a whole example. |
| Conversion and inference | What ppy convert and ppy migrate infer and how: where types come from, protocol widening, Final, the strict gate. |
| Migrating a real project | What to hand ppy migrate on a real codebase: profile, carve the kernels, leave the rest. |
| Plugins | How each library integration works, and how to write one against the interface. |
| Where a solver fits | The two places an SMT solver earns its keep: proving overflow guards away and validating the optimizer. |
| Hardware validation | How the accelerator stack is checked on rented GPUs, and what the last run found. |